using Discord.Commands; using Discord.Commands.Builders; using Newtonsoft.Json.Linq; namespace Discord_Bot { public class ReminderModule : ModuleBase { private const long DAY_PERIOD = 24 * 60 * 60 * 1000; // 10 * 1000; // private Timer reminderTimer; protected override void OnModuleBuilding(CommandService commandService, ModuleBuilder builder) { base.OnModuleBuilding(commandService, builder); Console.WriteLine($"{DateTime.Now.TimeOfDay:hh\\:mm\\:ss} | hello world "); ReloadTimers(); } [Command("remindertime")] private async Task SetReminderTime([Remainder]string message = "") { SaveToConfig("reminderTime", Utility.ParseMessage(message)); ReloadTimers(); await ReplyAsync($"Заебись"); } [Command("sequence")] private async Task SetSequence([Remainder]string message = "") { SaveToConfig("sequence", message); await ReplyAsync($"Заебись"); } [Command("users")] private async Task Users([Remainder]string message = "") { SaveToConfig("users", message); await ReplyAsync($"Заебись"); } private void ReloadTimers() { var time = Functions.GetConfigItem("reminderTime"); if (time.Type == JTokenType.Boolean) return; var nextReminder = Utility.ParseTime(time.ToString()); var now = DateTime.Now; var span = (nextReminder - now).TotalMilliseconds; if (span < 0) { // skip to next day nextReminder = nextReminder.AddDays(1); span = (nextReminder - now).TotalMilliseconds; } reminderTimer = new Timer(SendReminder, "sd", (long)span, DAY_PERIOD); } private async void SendReminder(object? state) { //check sequence var users = Functions.GetConfigItem("users").ToString(); await ReplyAsync($"{users}\nБудет чо?"); } private void SaveToConfig(string key, string data) { var config = Functions.GetConfig(); config[key] = data; Functions.SaveConfig(config); } } }