public void Complete(ISchedulerRecord record, bool wasCancelled) { if (!wasCancelled) { Handle(record, record.EndTime); } }
public void Handle(ISchedulerRecord record, DateTime eventTime) { if (record.GuildId == null) { return; } var data = JsonConvert.DeserializeObject <TitanLordTimerData>(record.Data); var settings = SettingsManager.GetGroup <TitanLordSettings>(record.GuildId.Value); var messageChannel = Client.GetChannel(data.MessageChannelId) as IMessageChannel; if (data.MessageId != 0) { var message = messageChannel?.GetMessageAsync(data.MessageId)?.Result as IUserMessage; message?.ModifySafeAsync(m => m.Content = Contextualise(settings.TimerText, settings, record, eventTime)).Wait(); } foreach (var ping in settings.PrePings) { var delta = (record.EndTime - eventTime).Add(new TimeSpan(0, 0, -ping)); if (delta < record.Interval && delta >= new TimeSpan()) { messageChannel?.SendMessageSafeAsync(Contextualise(settings.InXText, settings, record, eventTime)).Wait(); } } }
public static string Contextualise(this string message, int cq, ISchedulerRecord timer, DateTime eventTime, string dateTimeFormat) { var user = timer.UserId; var remaining = timer.EndTime - eventTime; var round = (int)(2 + (eventTime - timer.StartTime).TotalSeconds / timer.Interval.TotalSeconds); // Handle %COMPLETE% message message = ReplaceUniversalTime(message, timer.EndTime, dateTimeFormat); return(message.Replace("%CQ%", cq.ToString()) .Replace("%USER%", $"<@{user}>") .Replace("%TIME%", remaining.ToString()) .Replace("%ROUND%", round.ToString())); }
public async void Handle(ISchedulerRecord record, DateTime eventTime) { if (record.GuildId == null) { return; } var data = JsonConvert.DeserializeObject <TitanLordTimerData>(record.Data); var settings = SettingsManager.GetGroup <TitanLordSettings>(record.GuildId.Value); var messageChannel = Client.GetChannel(data.MessageChannelId) as IMessageChannel; if (settings.RoundPings) { await(messageChannel?.SendMessageSafeAsync(Contextualise(settings.RoundText, settings, record, eventTime)) ?? Task.CompletedTask); } }
public void Complete(ISchedulerRecord record, bool wasCancelled) { if (record.GuildId == null) { return; } var data = JsonConvert.DeserializeObject <TitanLordTimerData>(record.Data); var settings = SettingsManager.GetGroup <TitanLordSettings>(record.GuildId.Value); var messageChannel = Client.GetChannel(data.MessageChannelId) as IMessageChannel; if (data.MessageId != 0) { var message = messageChannel?.GetMessageAsync(data.MessageId)?.Result as IUserMessage; message?.DeleteAsync().Wait(); } if (!wasCancelled) { messageChannel?.SendMessageSafeAsync(Contextualise(settings.NowText, settings, record, record.EndTime)).Wait(); } }
private static string Contextualise(string message, TitanLordSettings settings, ISchedulerRecord timer, DateTime eventTime) { var CQ = settings.CQ; var user = timer.UserId; var remaining = 0; var completesAt = timer.StartTime; var round = 2 + (eventTime - timer.StartTime).Seconds / timer.Interval.Seconds; return(message.Replace("%CQ%", CQ.ToString()) .Replace("%USER%", $"<@{user}>") .Replace("%TIME%", remaining.ToString()) .Replace("%ROUND%", round.ToString()) .Replace("%COMPLETE%", completesAt.ToShortTimeString())); }