Esempio n. 1
0
        public async Task GetSoldierRecordAsync(string map)
        {
            var result = await TempusDataAccess.GetFullMapOverViewAsync(map);

            var demoRecord = result.SoldierRuns.OrderBy(x => x.Duration).First();

            await ReplyNewEmbedAsync(
                $"**Soldier WR**" + TempusActivityService.FormatRecordSuffix(result, demoRecord), false);
        }
Esempio n. 2
0
        private async Task UpdateChannelAsync(string updateChannel)
        {
            if (!(_client.GetChannel(Convert.ToUInt64(updateChannel)) is ITextChannel channel))
            {
                return;
            }
            try
            {
                var activity = await _tempusDataAccess.GetRecentActivityAsync();

                var embeds = new List <Embed>
                {
                    TempusActivityService.GetMapRecordsEmbed(activity.MapRecords),
                    TempusActivityService.GetMapTopTimesEmbed(activity.MapTopTimes),
                    TempusActivityService.GetCourseRecordsEmbed(activity.CourseRecords),
                    TempusActivityService.GetBonusRecordsEmbed(activity.BonusRecords)
                };

                var existingMessages = (await channel.GetMessagesAsync().FlattenAsync()).ToList();

                foreach (var embed in embeds)
                {
                    var existingMessage = existingMessages.FirstOrDefault(x =>
                                                                          x.Embeds.Count == 1 && x.Embeds.First().Title == embed.Title);

                    if (existingMessage != null && existingMessage is IUserMessage userMessage)
                    {
                        await userMessage.ModifyAsync(message => message.Embed = embed);

                        existingMessages.Remove(existingMessage);
                    }
                    else
                    {
                        await channel.SendMessageAsync(embed : embed);
                    }
                }

                if (existingMessages.Count > 0)
                {
                    foreach (var oldMessage in existingMessages)
                    {
                        await oldMessage.DeleteAsync();
                    }
                }
            }
            catch (Exception e)
            {
                await channel.SendMessageAsync(embed : Logger.LogException(e));
            }
        }
Esempio n. 3
0
        public async Task GetSoldierTimeAsync(string map, int place)
        {
            var result = await TempusDataAccess.GetFullMapOverViewAsync(map);

            var demoRecord = result.SoldierRuns.OrderBy(x => x.Duration).Skip(place - 1).First();

            if (demoRecord != null)
            {
                await ReplyNewEmbedAsync(
                    $"**Soldier #{place}**" + TempusActivityService.FormatRecordSuffix(result, demoRecord),
                    false);
            }
            else
            {
                await ReplyNewEmbedAsync("Time not found");
            }
        }
Esempio n. 4
0
        public async Task GetRecentBonusRecordsAsync()
        {
            var activity = await TempusDataAccess.GetRecentActivityAsync();

            await ReplyEmbedAsync(TempusActivityService.GetBonusRecordsEmbed(activity.BonusRecords));
        }
Esempio n. 5
0
        public async Task GetRecentTopTimesAsync()
        {
            var activity = await TempusDataAccess.GetRecentActivityAsync();

            await ReplyEmbedAsync(TempusActivityService.GetMapTopTimesEmbed(activity.MapTopTimes));
        }