コード例 #1
0
        public async Task EmojiDialogue(CommandContext ctx)
        {
            await ctx.Message.DeleteAsync().ConfigureAwait(false);

            var yesStep = new TextStep("You chose yes", null);
            var noStep  = new IntStep("You chose no", null);

            var emojiStep = new ReactionStep("Yes Or No?", new Dictionary <DiscordEmoji, ReactionStepData>
            {
                { DiscordEmoji.FromName(ctx.Client, ":thumbsup:"), new ReactionStepData {
                      Content = "Yes", NextStep = yesStep
                  } },
                { DiscordEmoji.FromName(ctx.Client, ":thumbsdown:"), new ReactionStepData {
                      Content = "No", NextStep = noStep
                  } },
            });

            var userChannel = await ctx.Member.CreateDmChannelAsync().ConfigureAwait(false);

            var inputDialogueHandler = new DialogueHandler(ctx.Client, userChannel, ctx.User, emojiStep);

            bool succeeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

            if (!succeeded)
            {
                return;
            }
        }
コード例 #2
0
        public async Task Dialogue(CommandContext ctx)
        {
            var inputStep = new TextStep("Enter smth interesting", null, 5);
            var funnyStep = new IntStep("MUR MUR MUR", null, maxValue: 100);

            var input = string.Empty;
            var value = 0;

            inputStep.OnValidResult += result =>
            {
                input = result;
                if (result == "SupDvach!")
                {
                    inputStep.SetNextStep(funnyStep);
                }
            };

            funnyStep.OnValidResult += result => value = result;

            var userChannel = await ctx.Member.CreateDmChannelAsync().ConfigureAwait(false);

            var inputDialogueHandler = new DialogueHandler(ctx.Client, userChannel, ctx.User, inputStep);
            var succeeded            = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

            if (!succeeded)
            {
                return;
            }
            await ctx.Channel.SendMessageAsync(input).ConfigureAwait(false);

            await ctx.Channel.SendMessageAsync($"{value}").ConfigureAwait(false);
        }
コード例 #3
0
        public async Task Dialogue(CommandContext ctx)
        {
            var inputStep = new TextStep("Say: abc", null);
            var funnyStep = new IntStep("Haha, funny", null, 100);

            string input = string.Empty;
            int    value = 0;

            inputStep.OnValidResult += (result) =>
            {
                input = result;
                if (result == "abc")
                {
                    inputStep.SetNextStep(funnyStep);
                }
            };

            funnyStep.OnValidResult += (result) => value = result;

            var userChannel = await ctx.Member.CreateDmChannelAsync().ConfigureAwait(false);

            var inputDialogueHandler = new DialogueHandler(ctx.Client, userChannel, ctx.User, inputStep);

            bool succeeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

            if (!succeeded)
            {
                return;
            }

            await ctx.Channel.SendMessageAsync(input).ConfigureAwait(false);

            await ctx.Channel.SendMessageAsync(value.ToString()).ConfigureAwait(false);
        }
コード例 #4
0
        public async Task CreateItem(CommandContext ctx)
        {
            var itemPriceStep       = new IntStep("How much does the item cost?", null, 1);
            var itemDescriptionStep = new TextStep("What is the item about?", itemPriceStep);
            var itemNameStep        = new TextStep("What will the item be called?", itemDescriptionStep);

            var item = new Item();

            itemNameStep.OnValidResult        += (result) => item.Name = result;
            itemDescriptionStep.OnValidResult += (result) => item.Description = result;
            itemPriceStep.OnValidResult       += (result) => item.Price = result;

            var userChannel = await ctx.Member.CreateDmChannelAsync().ConfigureAwait(false);

            var inputDialogueHandler = new DialogueHandler(
                ctx.Client,
                userChannel,
                ctx.User,
                itemNameStep
                );

            bool succeeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

            if (!succeeded)
            {
                return;
            }

            await _itemService.CreateNewItemAsync(item).ConfigureAwait(false);

            await ctx.Channel.SendMessageAsync($"Item {item.Name} succesfully created!").ConfigureAwait(false);
        }
コード例 #5
0
        public async Task Dialogue(CommandContext ctx)
        {
            var thirdStep  = new TextStep("Enter something sad!", null);
            var secondStep = new TextStep("Enter something boring!", thirdStep);
            var inputStep  = new TextStep("Enter something interesting!", secondStep);
            var funnyStep  = new IntStep("Haha funny", null, 4, 10);

            string input = string.Empty;
            int    value = 0;


            funnyStep.OnValidResult += (result) => value = result;

            var userChannel = await ctx.Member.CreateDmChannelAsync().ConfigureAwait(false);

            var inputDialogueHandler = new DialogueHandler(ctx.Client, userChannel, ctx.User, inputStep);

            List <DiscordMessage> dialogue = inputDialogueHandler.GetDialogue();

            bool succeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

            StringBuilder inputDialogue = new StringBuilder();


            foreach (var message in dialogue)
            {
                inputDialogue.Append($"** {message.Content} ** \n");
            }

            var finalEmbed = new DiscordEmbedBuilder
            {
                Description = inputDialogue.ToString(),
                Color       = DiscordColor.DarkBlue,
                Title       = "Dialogue"
            };

            if (!succeded)
            {
                return;
            }

            await ctx.Channel.SendMessageAsync(embed : finalEmbed).ConfigureAwait(false);

            await ctx.Channel.SendMessageAsync(value.ToString()).ConfigureAwait(false);
        }
コード例 #6
0
        public async Task Dialogue(CommandContext ctx)
        {
            await ctx.Message.DeleteAsync().ConfigureAwait(false);

            var inputStep = new TextStep("Введите анонимное сообщение!", null, 2);
            var funnyStep = new IntStep("ну привет!", null, maxValue: 100);

            string input = string.Empty;

            int value = 0;

            inputStep.OnValidResult += (result) => {
                input = result;

                if (result == "привет")
                {
                    inputStep.SetNextStep(funnyStep);
                }
            };

            funnyStep.OnValidResult += (result) => value = result;

            var userChannel = await ctx.Member.CreateDmChannelAsync().ConfigureAwait(false);

            var inputDialogueHandler = new DialogueHandler(ctx.Client, userChannel, ctx.User, inputStep);

            bool succeeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

            if (!succeeded)
            {
                return;
            }

            await ctx.Channel.SendMessageAsync(input).ConfigureAwait(false);

            //await ctx.Channel.SendMessageAsync(value.ToString()).ConfigureAwait(false);
        }
コード例 #7
0
        public async Task Dialogue(CommandContext ctx)
        {
            var inputStep = new TextStep("Enter something interesting!", null, 1, 150);
            var funnyStep = new IntStep("Haha, funny", null, maxValue: 100);

            string input = string.Empty;
            int    value = 0;

            inputStep.OnValidResult += (result) =>
            {
                input = result;
                if (result == "something interesting")
                {
                    inputStep.SetNextStep(funnyStep);
                }
            };

            funnyStep.OnValidResult += (result) => value = result;


            var userChannel = await ctx.Member.CreateDmChannelAsync();

            var inputDialogueHandler = new DialogueHandler(ctx.Client, userChannel, ctx.User, inputStep);

            bool succeeded = await inputDialogueHandler.ProcessDialogue();

            if (!succeeded)
            {
                return;
            }

            if (succeeded)
            {
                await userChannel.SendMessageAsync(input);
            }
        }
コード例 #8
0
                public async Task AddOrModify(CommandContext ctx)
                {
                    var guildPrefs = await _guildPreferences.GetOrCreateGuildPreferences(ctx.Guild.Id);

                    DiscordChannel parentChannel = ctx.Guild.GetChannel(guildPrefs.StatChannelCatergoryId);

                    if (parentChannel == null)
                    {
                        throw new Exception("You have not yet added a category where stats will be shown under. `w@guild stat setcategory <Channel category>`.");
                    }

                    var messageStep = new TextStep("What would you like the channel name to say? Will show as `<Your text here>: [stat] [Members name]` the limited number of characters is set low to prevent the stat from being hidden.", null, 0, 12);
                    var statStep    = new IntStep("What kind of stat would you like to track you can only have one of each type, to modify an existing one just select the same option? Please enter the corresponding number.\nMost gold - 0\nRobbing attack success rate - 1\nRobbing defense success rate - 2\nXp - 3\nGots - 4\nBoganness - 5\nGold Stolen - 6\nSpelling accuracy - 7\nGold Lost From Theft - 8\nRobbing Attack Wins - 9\nRobbing Defend Wins - 10\nHeads or tails wins - 11\nHeads or tails losses - 12\nCoin flip Win Rate - 13", messageStep, 0, 13);

                    int        statInput;
                    StatOption stat = StatOption.Gold;

                    string msgInput;
                    string message = "1";

                    statStep.OnValidResult += (result) =>
                    {
                        statInput = result;

                        stat = (StatOption)result;

                        statStep.SetNextStep(messageStep);
                    };

                    messageStep.onValidResult += (result) =>
                    {
                        msgInput = result;

                        message = result;
                    };

                    var userChannel = await ctx.Member.CreateDmChannelAsync().ConfigureAwait(false);

                    var inputDialogueHandler = new DialogueHandler(
                        ctx.Client,
                        ctx.Channel,
                        ctx.User,
                        statStep
                        );

                    bool succeeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

                    if (!succeeded)
                    {
                        return;
                    }

                    ulong channelId;

                    if (guildPrefs.StatChannels.Exists(x => x.StatOption == stat))
                    {
                        channelId = guildPrefs.StatChannels.Where(x => x.StatOption == stat).FirstOrDefault().ChannelId;
                    }
                    else
                    {
                        channelId = ctx.Guild.CreateVoiceChannelAsync("waiting for update...", parentChannel).Result.Id;
                    }

                    await _statChannelService.CreateOrModifyStatChannel(ctx.Guild.Id, channelId, stat, message);

                    await ctx.Channel.SendMessageAsync("There should be a new text channel in the specified category and will be updated on the next stat update cycle.").ConfigureAwait(false);
                }
コード例 #9
0
ファイル: Siege.cs プロジェクト: MrWiggims1/WiggimsBot
        // tasks

        public async Task <bool> SetId(CommandContext ctx, ulong memberId, bool userSelf)
        {
            if (userSelf == false)
            {
                await ctx.Channel.SendMessageAsync("This user has not yet set their Uplay Id, They must do this them self and cannot be done by others.").ConfigureAwait(false);

                return(false);
            }

            try
            {
                var SetuplayUserStep = new TextStep("Enter your Uplay username", null);

                string uplayUsername = string.Empty;
                SetuplayUserStep.onValidResult += (result) => uplayUsername = result;

                var inputDialogueHandler = new DialogueHandler(
                    ctx.Client,
                    ctx.Channel,
                    ctx.User,
                    SetuplayUserStep
                    );

                bool succeeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

                if (!succeeded)
                {
                    return(false);
                }

                string urlApi = $"https://r6.apitab.com/search/uplay/{ uplayUsername }";

                var json = GetPlayerSearch(urlApi);

                int userChoice = 0;

                if (json.players.Count > 1)
                {
                    try
                    {
                        StringBuilder sb = new StringBuilder();
                        for (int i = 0; i < json.players.Count; ++i)
                        {
                            sb.Append($"[`{i}`] Username: {json.players.Values.ElementAt(i).profile.p_name}\tLevel: {json.players.Values.ElementAt(i).stats.level}\n\n");
                        }

                        var userChoiceStep = new IntStep($"Enter the number of the correct profile from below:\n{sb.ToString()}", null, 0, json.players.Count - 1);

                        userChoiceStep.OnValidResult += (result) => userChoice = result;

                        var secinputDialogueHandler = new DialogueHandler(
                            ctx.Client,
                            ctx.Channel,
                            ctx.User,
                            userChoiceStep
                            );

                        bool secSucceeded = await secinputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

                        if (!secSucceeded)
                        {
                            return(false);
                        }
                    }
                    catch { return(false); }
                }

                await ctx.TriggerTypingAsync();

                await _uplayIdService.SetUplayIdAsync(ctx.Member.Id, ctx.Guild.Id, json.players.ToList()[userChoice].Value.profile.p_user);

                return(true);
            }
            catch { return(false); }
        }