Exemple #1
0
        public async Task ServerTop(CommandContext ctx, int?page = null)
        {
            if (page == null || page <= 0)
            {
                page = 1;
            }
            DiscordMessage TopMessage = await new DiscordMessageBuilder()
                                        .WithContent(CustomMethod.GetServerTop(ctx, (int)page))
                                        .WithReply(ctx.Message.Id, true)
                                        .SendAsync(ctx.Channel);
            DiscordEmoji left  = DiscordEmoji.FromName(ctx.Client, ":arrow_left:");
            DiscordEmoji right = DiscordEmoji.FromName(ctx.Client, ":arrow_right:");

            await TopMessage.CreateReactionAsync(left);

            await Task.Delay(300).ContinueWith(t => TopMessage.CreateReactionAsync(right));

            bool end = false;

            do
            {
                var result = TopMessage.WaitForReactionAsync(ctx.User, TimeSpan.FromSeconds(30));
                if (result.Result.TimedOut)
                {
                    end = result.Result.TimedOut;
                }
                else if (result.Result.Result.Emoji == left)
                {
                    await TopMessage.DeleteReactionAsync(result.Result.Result.Emoji, ctx.User);

                    if (page > 1)
                    {
                        page--;
                        await TopMessage.ModifyAsync(CustomMethod.GetServerTop(ctx, (int)page));
                    }
                }
                else if (result.Result.Result.Emoji == right)
                {
                    await TopMessage.DeleteReactionAsync(result.Result.Result.Emoji, ctx.User);

                    page++;
                    try
                    {
                        await TopMessage.ModifyAsync(CustomMethod.GetServerTop(ctx, (int)page));
                    }
                    catch (Exception)
                    {
                        page--;
                    }
                }
            } while (!end);
            await TopMessage.DeleteAllReactionsAsync();
        }