Exemple #1
0
        public async Task ExecuteGroupAsync(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            DKPService  vService = DKPService.Instance;
            MemberModel vModel   = null;
            var         emoji    = DiscordEmoji.FromName(ctx.Client, ":disappointed:");

            //If a player name is passed to the command, lets look up their dkp information
            if (!string.IsNullOrWhiteSpace(ctx.RawArgumentString))
            {
                vModel = vService.GuildRoster.SingleOrDefault <MemberModel>(s => s.Name.Equals(ctx.RawArgumentString.Trim(), StringComparison.OrdinalIgnoreCase));
                if (vModel == null)
                {
                    await ctx.RespondAsync($"I can't find any attendance associated with {ctx.RawArgumentString} {emoji}");
                }
                else
                {
                    int vMaxLength = vModel.Name.Length + 2;
                    await ctx.RespondAsync(string.Format("```" + "Name".PadRight(vMaxLength) + "30 Day".PadRight(10) + "60 Day".PadRight(10) + "90 Day".PadRight(10) + "Life" + Environment.NewLine +
                                                         "{0}{1}{2}{3}{4}```",
                                                         vModel.Name.PadRight(vMaxLength),
                                                         vModel.RA_30DayPercent.ToString("P2", percentageFormat).PadRight(10),
                                                         vModel.RA_60DayPercent.ToString("P2", percentageFormat).PadRight(10),
                                                         vModel.RA_90DayPercent.ToString("P2", percentageFormat).PadRight(10),
                                                         vModel.RA_LifeTimePercent.ToString("P2", percentageFormat)).PadRight(10));
                }
            }
            else
            {
                await ctx.RespondAsync($"I have dkp as of {vService.LastUpdated} available");
            }
        }
Exemple #2
0
        private async Task SubUserDKP(CommandEventArgs e)
        {
            var username = e.Args[0];

            var user = e.Server.FindUsers(username).FirstOrDefault();

            if (user != null && e.User.ServerPermissions.Administrator)
            {
                var dkpAmount = Convert.ToInt32(e.Args[1]);
                var item      = e.Args[2];
                if (item == "mat" | item == "earring" | item == "ring" | item == "ss")
                {
                    DKPService.SubDKP(user, dkpAmount, item);
                    await e.Channel.SendMessage(string.Format("`{0} has lost {1} DKP, but has acquired their {2}`", username, dkpAmount, item));
                }
                else
                {
                    await e.Channel.SendMessage("invalid command, please use the right format: !sub @user {amount} {item}");
                }
            }
            else if (!e.User.ServerPermissions.Administrator)
            {
                await e.Channel.SendMessage("`You do not have admin permissions.`");
            }
            else
            {
                await e.Channel.SendMessage(string.Format("`Could not find user: {0}`", username));
            }
        }
Exemple #3
0
        public async Task ExecuteGroupAsync(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            DKPService  vService = DKPService.Instance;
            MemberModel vModel   = null;
            var         emoji    = DiscordEmoji.FromName(ctx.Client, ":disappointed:");

            //If a player name is passed to the command, lets look up their dkp information
            if (!string.IsNullOrWhiteSpace(ctx.RawArgumentString))
            {
                vModel = vService.GuildRoster.SingleOrDefault <MemberModel>(s => s.Name.Equals(ctx.RawArgumentString.Trim(), StringComparison.OrdinalIgnoreCase));
                if (vModel == null)
                {
                    await ctx.RespondAsync($"I can't find any DKP associated with {ctx.RawArgumentString} {emoji}");
                }
                else
                {
                    await ctx.RespondAsync(string.Format("{0}'s dkp as of {1} is {2}",
                                                         vModel.Name,
                                                         vService.LastUpdated,
                                                         vModel.DKP_CURRENT.ToString("N0", CultureInfo.InvariantCulture)));

                    //await ctx.RespondAsync($"{vModel.Name}'s dkp as of {vService.LastUpdated} is {vModel.DKP_CURRENT}");
                }
            }
            else
            {
                await ctx.RespondAsync($"I have dkp as of {vService.LastUpdated} available");
            }
        }
Exemple #4
0
        private async Task AwardUserDKP(CommandEventArgs e)
        {
            var username = e.Args[0];

            var user = e.Server.FindUsers(username).FirstOrDefault();

            if (user != null | username == "all")
            {
                if (user != null && username != "all" && e.User.ServerPermissions.Administrator)
                {
                    var dkpAmount = Convert.ToInt32(e.Args[1]);
                    Console.WriteLine(user);
                    DKPService.AwardDKP(user, dkpAmount);
                    await e.Channel.SendMessage(string.Format("{0} `has been awarded {1} DKP.`", username, dkpAmount));
                }
                else if (!e.User.ServerPermissions.Administrator)
                {
                    await e.Channel.SendMessage("`You do not have admin permissions.`");
                }
                else
                {
                    var dkpAmount   = Convert.ToInt32(e.Args[1]);
                    var amountUsers = e.Server.FindChannels("Raid", ChannelType.Voice).FirstOrDefault().Users.Select(f => f).Count();
                    var notdeafened = e.Server.FindChannels("Raid", ChannelType.Voice).FirstOrDefault().Users.Select(f => !f.IsSelfDeafened);
                    var users       = e.Server.FindChannels("Raid", ChannelType.Voice).FirstOrDefault().Users.Select(f => f);
                    int index;
                    for (index = 0; index < amountUsers; ++index)
                    {
                        var check = notdeafened.ElementAtOrDefault(index);
                        if (check != false)
                        {
                            var dream = users.ElementAtOrDefault(index);
                            Console.WriteLine(dream);
                            DKPService.AwardDKP(dream, dkpAmount);
                        }
                    }

                    await e.Channel.SendMessage(string.Format("`Undeafened users in the voice channel have been awarded {1} DKP.`", username, dkpAmount));
                }
            }
            else
            {
                await e.Channel.SendMessage(string.Format("`Could not find user: {0}`", username));
            }
        }
Exemple #5
0
        private async Task DkpCount(CommandEventArgs e)
        {
            var username = e.Args[0];

            var user = e.Server.FindUsers(username).FirstOrDefault();
            int dkpTotal;

            if (user != null | username == "" | username == "leaderboard" | username == "lb")
            {
                if (user != null | username == "leaderboard" | username == "lb")
                {
                    if (username != "leaderboard" && username != "lb")
                    {
                        DKPService.CheckDKP(user, out dkpTotal);
                        await e.Channel.SendMessage(string.Format("{0} `has a total of {1} DKP.`", username, dkpTotal));
                    }

                    /*else
                     * {
                     *  Console.WriteLine("WORKING");
                     *  var users = e.User;
                     *  DKPService.Leaderboard(users);
                     * } */
                }
                else
                {
                    user = e.Server.FindUsers(e.User.Name).FirstOrDefault();
                    DKPService.CheckDKP(user, out dkpTotal);

                    await e.Channel.SendMessage(string.Format("{0} `has a total of {1} DKP.`", e.User.Mention, dkpTotal));
                }
            }
            else
            {
                await e.Channel.SendMessage(string.Format("`Could not find user: {0}`", username));
            }
        }
Exemple #6
0
        private void AutomaticDKP()
        {
            commands.CreateGroup("adkp", auto =>
            {
                auto.CreateCommand("on")
                .Parameter("tick", ParameterType.Required)
                .Do(async(e) =>
                {
                    var pointGain = (Convert.ToInt32(e.Args[0]));
                    void OnTimedEvent(object source, ElapsedEventArgs f)
                    {
                        TellAsync();
                    }
                    async void TellAsync()
                    {
                        await e.Channel.SendMessage(String.Format("` 1 hour has passed each user in Raid Voice Channel has gained {0} points `", pointGain));
                        var amountUsers = e.Server.FindChannels("Raid", ChannelType.Voice).FirstOrDefault().Users.Select(f => f).Count();
                        var notdeafened = e.Server.FindChannels("Raid", ChannelType.Voice).FirstOrDefault().Users.Select(f => !f.IsSelfDeafened);
                        var users       = e.Server.FindChannels("Raid", ChannelType.Voice).FirstOrDefault().Users.Select(f => f);
                        int index;
                        for (index = 0; index < amountUsers; ++index)
                        {
                            var check = notdeafened.ElementAtOrDefault(index);
                            if (check != false)
                            {
                                var dream = users.ElementAtOrDefault(index);
                                Console.WriteLine(dream);
                                DKPService.AwardDKP(dream, pointGain);
                            }
                        }
                    }


                    if (pointGain > 0 && aTimer.Enabled == false && e.User.ServerPermissions.Administrator)
                    {
                        await e.Channel.SendMessage(string.Format("`Automatic DKP adder is now ON for {0} DKP every hour.`", pointGain));
                        aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
                        aTimer.Interval = 1000 * 60 * 60;
                        aTimer.Start();
                    }
                    else if (aTimer.Enabled == true)
                    {
                        await e.Channel.SendMessage("`DKP Timer is already activated, please disable it first.`");
                    }
                    else if (!e.User.ServerPermissions.Administrator)
                    {
                        await e.Channel.SendMessage("`you are not an admin permissions.`");
                    }

                    else
                    {
                        await e.Channel.SendMessage("`Try again`");
                    }
                });
                auto.CreateCommand("off")
                .Do(async(e) =>
                {
                    if (e.User.ServerPermissions.Administrator)
                    {
                        await e.Channel.SendMessage("Automatic DKP adder is now OFF.");
                        aTimer.Dispose();
                    }
                    else
                    {
                        await e.Channel.SendMessage("`You do not have admin permissions.`");
                    }
                });
            });
        }
Exemple #7
0
        [Description("Usage: !dkp top number class || i.e. !dkp top 5 war")] // this will be displayed to tell users what this command does when they invoke help
        public async Task TopCommand(CommandContext ctx)                     // this command takes no arguments
        {
            DKPService vService = DKPService.Instance;

            string[] vArgs = ctx.RawArgumentString.Trim().Split(' ');
            try
            {
                int vResults = int.Parse(vArgs[0]);
                if (vResults > 25)
                {
                    await ctx.RespondAsync("Limiting your results to 25");

                    vResults = 25;
                }
                if (vArgs.Length > 1)
                {
                    string vClass = vArgs[1].ToLower().Trim();

                    if (EQConfig.EQClasses.ContainsKey(vClass))
                    {
                        var vTopFive = vService.GuildRoster
                                       .Where(y => y.Class.Equals(EQConfig.EQClasses[vClass], StringComparison.InvariantCultureIgnoreCase))
                                       .OrderByDescending(x => x.DKP_CURRENT)
                                       .Take(vResults);

                        int vMaxLength = vTopFive.Max(x => x.Name.Length) + 1;

                        string vResponse = string.Format("```Here are the top {2} highest {3}'s as of {0}: {1}", vService.LastUpdated, Environment.NewLine, vResults, EQConfig.EQClasses[vClass]);
                        foreach (MemberModel vMember in vTopFive)
                        {
                            vResponse += string.Format("{0}{1}{2}",
                                                       vMember.Name.PadRight(vMaxLength),
                                                       vMember.DKP_CURRENT.ToString("N0", CultureInfo.InvariantCulture),
                                                       Environment.NewLine);
                        }
                        vResponse += "```";

                        await ctx.RespondAsync(vResponse);
                    }
                    else
                    {
                        await ctx.RespondAsync(string.Format("Sorry, I don't know what class ${0} is.", vClass));
                    }
                }
                else
                {
                    var vTopFive = vService.GuildRoster
                                   .OrderByDescending(x => x.DKP_CURRENT)
                                   .Take(vResults);

                    int vMaxLength = vTopFive.Max(x => x.Name.Length) + 1;

                    string vResponse = string.Format("```Here are the top 5 highest DKP members as of {0}: {1}", vService.LastUpdated, Environment.NewLine);
                    foreach (MemberModel vMember in vTopFive)
                    {
                        vResponse += string.Format("{0}{1}{2}",
                                                   vMember.Name.PadRight(vMaxLength),
                                                   vMember.DKP_CURRENT.ToString("N0", CultureInfo.InvariantCulture),
                                                   Environment.NewLine);
                    }
                    vResponse += "```";

                    await ctx.RespondAsync(vResponse);
                }
            }
            catch (Exception vException)
            {
                Console.WriteLine(vException.Message);
                await ctx.RespondAsync($"Sorry I was not able to understand what you were asking for.");
            }
        }
Exemple #8
0
        public async Task RunBotAsync()
        {
            // first, let's load our configuration file
            var json = "";

            using (var fs = File.OpenRead("config.json"))
                using (var sr = new StreamReader(fs, new UTF8Encoding(false)))
                    json = await sr.ReadToEndAsync();

            // next, let's load the values from that file
            // to our client's configuration
            var cfgjson = JsonConvert.DeserializeObject <ConfigJson>(json);
            var cfg     = new DiscordConfiguration
            {
                Token     = cfgjson.Token,
                TokenType = TokenType.Bot,

                AutoReconnect         = true,
                LogLevel              = LogLevel.Debug,
                UseInternalLogHandler = true
            };

            // then we want to instantiate our client
            this.Client = new DiscordClient(cfg);

            // next, let's hook some events, so we know
            // what's going on
            this.Client.Ready          += this.Client_Ready;
            this.Client.GuildAvailable += this.Client_GuildAvailable;
            this.Client.ClientErrored  += this.Client_ClientError;

            // up next, let's set up our commands
            var ccfg = new CommandsNextConfiguration
            {
                // let's use the string prefix defined in config.json
                StringPrefix = cfgjson.CommandPrefix,

                // enable responding in direct messages
                EnableDms = true,

                // enable mentioning the bot as a command prefix
                EnableMentionPrefix = true
            };

            // and hook them up
            this.Commands = this.Client.UseCommandsNext(ccfg);

            // let's hook some command events, so we know what's
            // going on
            this.Commands.CommandExecuted += this.Commands_CommandExecuted;
            this.Commands.CommandErrored  += this.Commands_CommandErrored;

            // up next, let's register our commands
            this.Commands.RegisterCommands <BasicUnGroupedCommands>();
            this.Commands.RegisterCommands <DKPGroupedCommands>();
            this.Commands.RegisterCommands <AttendanceCommands>();

            //Trigger the singleton for our DKP service
            DKPService vService = DKPService.Instance;

            // finally, let's connect and log in
            await this.Client.ConnectAsync();

            // and this is to prevent premature quitting
            await Task.Delay(-1);
        }