예제 #1
0
 public void Complete(ISchedulerRecord record, bool wasCancelled)
 {
     if (!wasCancelled)
     {
         Handle(record, record.EndTime);
     }
 }
예제 #2
0
        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()));
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        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();
            }
        }
예제 #6
0
        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()));
        }