private async Task Pagination(DiscordMessage message, int pageNum)
        {
            var result = await Interactivity.WaitForReactionAsync(react => {
                if (react.Message.Id != message.Id)
                {
                    return(false);
                }
                if (!LeftRightStop().Contains(react.Emoji.Name))
                {
                    return(false);
                }
                return(IsValidUser(react.User, react.Guild));
            }, Timeout);

            if (result.TimedOut)
            {
                FinalAction?.Invoke(message);
                return;
            }

            var newPageNum = pageNum;
            var e          = result.Result.Emoji.Name;

            if (e == Left)
            {
                if (newPageNum > 1)
                {
                    newPageNum--;
                }
            }
            else if (e == Right)
            {
                if (newPageNum < Pages)
                {
                    newPageNum++;
                }
            }
            else if (e == Stop)
            {
                FinalAction?.Invoke(message);
                return;
            }

            await result.Result.Message.DeleteReactionAsync(result.Result.Emoji, result.Result.User);

            var m = await message.ModifyAsync(embed : RenderPage(newPageNum));

            await Pagination(m, newPageNum);
        }
예제 #2
0
        private async Task AssignRoleToMember(GuildMemberAddEventArgs e, DiscordChannel channel)
        {
            var msg = await channel.SendMessageAsync("Please take your time and select the region you usually play in.");

            var emojiUS   = DiscordEmoji.FromName(Client, ":flag_us:");
            var emojiEU   = DiscordEmoji.FromName(Client, ":flag_eu:");
            var emojiSEA  = DiscordEmoji.FromName(Client, ":ocean:");
            var emojiBR   = DiscordEmoji.FromName(Client, ":flag_br:");
            var emojiRU   = DiscordEmoji.FromName(Client, ":flag_ru:");
            var emojiAU   = DiscordEmoji.FromName(Client, ":flag_au:");
            var emojiList = new List <DiscordEmoji>()
            {
                emojiUS, emojiEU, emojiSEA, emojiBR, emojiRU, emojiAU
            };

            foreach (var emoji in emojiList)
            {
                await msg.CreateReactionAsync(emoji);

                await Task.Delay(250);
            }

            var reaction = await Interactivity.WaitForReactionAsync(xe => emojiList.Contains(xe), e.Member, TimeSpan.FromSeconds(60));

            if (reaction != null)
            {
                switch (reaction.Emoji.GetDiscordName())
                {
                //  :flag_us: emoji
                case ":flag_us:":
                    await AssignRoleToMemberAsync(e, "NA");

                    break;

                //  :flag_eu: emoji
                case ":flag_eu:":
                    await AssignRoleToMemberAsync(e, "EU");

                    break;

                //  :ocean: emoji, representing SEA region for now..
                case ":ocean:":
                    await AssignRoleToMemberAsync(e, "SEA");

                    break;

                //  :flag_br: emoji
                case ":flag_br:":
                    await AssignRoleToMemberAsync(e, "BR");

                    break;

                //  :flag_ru: emoji
                case ":flag_ru:":
                    await AssignRoleToMemberAsync(e, "RU-S-A");

                    break;

                //  :flag_au: emoji
                case ":flag_au:":
                    await AssignRoleToMemberAsync(e, "AUS");

                    break;

                default:
                    await channel.SendMessageAsync("It broke..");

                    break;
                }
                await channel.SendMessageAsync("All done! If you don't mind playing in multiple regions, message the server admin or one of the mods to assign you the role needed.");
            }
            else
            {
                await channel.SendMessageAsync("Very well then, if you wish to have a role assigned later on, message the server admin or one of the mods.");
            }
        }
예제 #3
0
        private async Task Pagination(DiscordMessage message, int pageNum)
        {
            var result = await Interactivity.WaitForReactionAsync(react => {
                if (react.Message.Id != message.Id)
                {
                    return(false);
                }
                if (LeftRightStop().Contains(react.Emoji.Name))
                {
                    return(IsValidUser(react.User, react.Guild));
                }
                if (BigLeftRight().Contains(react.Emoji.Name))
                {
                    return(BulkSkipNumber > 1 && IsValidUser(react.User, react.Guild));
                }
                return(false);
            }, Timeout);

            if (result.TimedOut)
            {
                FinalAction?.Invoke(message);
                return;
            }

            var newPageNum = pageNum;
            var e          = result.Result.Emoji.Name;

            if (e == Left)
            {
                if (newPageNum == 1 && WrapPageEnds)
                {
                    newPageNum = Pages + 1;
                }
                if (newPageNum > 1)
                {
                    newPageNum--;
                }
            }
            else if (e == Right)
            {
                if (newPageNum == Pages && WrapPageEnds)
                {
                    newPageNum = 0;
                }
                if (newPageNum < Pages)
                {
                    newPageNum++;
                }
            }
            else if (e == BigLeft)
            {
                if (newPageNum > 1 || WrapPageEnds)
                {
                    for (int i = 1; (newPageNum > 1 || WrapPageEnds) && i < BulkSkipNumber; i++)
                    {
                        if (newPageNum == 1 && WrapPageEnds)
                        {
                            newPageNum = Pages + 1;
                        }
                        newPageNum--;
                    }
                }
            }
            else if (e == BigRight)
            {
                if (newPageNum < Pages || WrapPageEnds)
                {
                    for (int i = 1; (newPageNum < Pages || WrapPageEnds) && i < BulkSkipNumber; i++)
                    {
                        if (newPageNum == Pages && WrapPageEnds)
                        {
                            newPageNum = 0;
                        }
                        newPageNum++;
                    }
                }
            }
            else if (e == Stop)
            {
                FinalAction?.Invoke(message);
                return;
            }

            await result.Result.Message.DeleteReactionAsync(result.Result.Emoji, result.Result.User);

            var m = await message.ModifyAsync(content : Text?.Invoke(pageNum, Pages), embed : RenderPage(newPageNum));

            await Pagination(m, newPageNum);
        }