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"); } }
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)); } }
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"); } }
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)); } }
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)); } }
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.`"); } }); }); }
[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."); } }
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); }