public async void SendReminder(object sender, System.Timers.ElapsedEventArgs e) { TimeZoneInfo cet = CreateTimeZone(); DateTime now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cet); try { foreach (Raid raid in _raidService.ListRaids()) { foreach (RaidReminder reminder in raid.Reminders.Values) { if (!reminder.Sent && now >= raid.StartTime.AddHours(reminder.HoursBeforeRaid * -1)) { string message = $"{raid.Title}: " + reminder.Message; if (reminder.Type == RaidReminder.ReminderType.User) { await _raidService.SendMessageToEveryRaidMember(raid, message); } else { SocketTextChannel channel = (SocketTextChannel)_client.GetChannel(reminder.ChannelId); await channel.SendMessageAsync(message); } reminder.Sent = true; _raidService.SaveRaids(); } } } } catch { } }
public async void SendReminder(object sender, System.Timers.ElapsedEventArgs e) { TimeZoneInfo cet = CreateTimeZone(); DateTime now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cet); try { foreach (var raid in _raidService.ListRaids()) { if (raid.StartTime.CompareTo(now.AddMinutes(REMINDER_INTERVAL)) <= 0 && !raid.ReminderSent) { string message = $"The raid \"{raid.Title}\" starts in {REMINDER_INTERVAL} minutes."; await _raidService.SendMessageToEveryRaidMember(raid, message); raid.ReminderSent = true; _raidService.SaveRaids(); } } } catch { } }