コード例 #1
0
        public static Task SendInvalidExpMessageAsync(DiscordChannel channel, DiscordUser author, IList <InvalidExpReciever> invalidUsers)
        {
            if (invalidUsers == null || invalidUsers.Count == 0)
            {
                return(Task.CompletedTask);
            }

            return(Task.Run(async() => {
                messageBuilder.Length = 0;

                if (invalidUsers.Count > 1)
                {
                    messageBuilder.Append("Could not give experience to the following users:\n");

                    foreach (var user in invalidUsers)
                    {
                        messageBuilder.AppendFormat("  **{0}**, because {1}\n", user.dUser.Username, user.reason);
                    }
                }
                else
                {
                    var user = invalidUsers[0];
                    if (user.isSelf)
                    {
                        messageBuilder.AppendFormat(selfExpErrorMessages[RandomUtils.Range(0, selfExpErrorMessages.Length)], user.dUser.Username);
                    }
                    else
                    {
                        messageBuilder.AppendFormat("Could not give experience to **{0}** because {1}\n", user.dUser.Username, user.reason);
                    }
                }

                Instance.Client.DebugLogger.LogMessage(LogLevel.Info, "Karma", messageBuilder.ToString(), DateTime.Now);

                await channel.SendMessageAsync(messageBuilder.ToString());
            }));
        }
コード例 #2
0
        public async Task CreateTestLootDuel(CommandContext c)
        {
            var message = await c.RespondAsync(embed : DiscordEmbedUtils.MakeEmbed(":moneybag: Grab the Loot: Duel Mode!", "First to grab the :moneybag: gets it! Beware of the decoys, you only get one shot!"));

            var userBlacklist = new HashSet <DiscordUser>();

            var timer = new Timer();

            timer.Interval = RandomUtils.Range(1.0, 5.0) * 1000;
            timer.Start();

            var trigger = Instance.AddReactionTrigger(message, null);

            trigger.onTriggered += (user, emoji) => {
                if (emoji == EmojiUtils.moneybag && !userBlacklist.Contains(user))
                {
                    Instance.RemoveReactionTrigger(message);
                    Task.Run(async() => {
                        timer.Stop();
                        await message.DeleteAllReactionsAsync();
                        //await message.ModifyAsync( embed: DiscordEmbedUtils.MakeTextEmbed( text: $"**{user.Username}** got the loot!" ) );
                        //var task = message.DeleteAsync();
                        await c.RespondAsync(embed: DiscordEmbedUtils.MakeEmbed(text: $":moneybag: Got the loot!", author: user));
                    });
                }
                else if (userBlacklist.Add(user))
                {
                    Task.Run(async() => {
                        //await message.ModifyAsync( embed: DiscordEmbedUtils.MakeTextEmbed( text: $"**{user.Username}** got the loot!" ) );
                        //var task = message.DeleteAsync();
                        await c.RespondAsync(embed: DiscordEmbedUtils.MakeEmbed(text: $":skull_crossbones: Missed the loot!", author: user));
                    });
                }
            };

            var numIcons  = EmojiUtils.lootIcons.Length;
            var lootIcons = new DiscordEmoji[numIcons];

            for (int i = 0; i < numIcons; i++)
            {
                lootIcons[i] = EmojiUtils.lootIcons[RandomUtils.Range(0, numIcons)];
            }

            int currentIcon = 0;

            timer.Elapsed += (sender, e) => {
                if (currentIcon <= numIcons)
                {
                    if (currentIcon < numIcons)
                    {
                        message.CreateReactionAsync(lootIcons[currentIcon]);
                    }
                    currentIcon++;
                }
                else
                {
                    timer.Stop();
                    Instance.RemoveReactionTrigger(message);
                    Task.Run(async() => {
                        //await message.ModifyAsync( embed: DiscordEmbedUtils.MakeTextEmbed( text: $"You all missed the loot! Better luck next time." ) );
                        //await message.DeleteAllReactionsAsync();
                        var task = message.DeleteAsync();
                        await c.RespondAsync(embed: DiscordEmbedUtils.MakeEmbed(text: $"You all missed the loot! Better luck next time."));
                    });
                }
                timer.Interval = RandomUtils.Range(1.0, 5.0) * 1000;
            };
        }