From f14c956495f8f45779e14fd7961992f54ea63d91 Mon Sep 17 00:00:00 2001 From: Sean Stoves Date: Sun, 9 Aug 2020 00:55:27 -0400 Subject: [PATCH 1/2] Adding !level command. --- ChaosBot/Discord/Modules/User/Level.cs | 69 ++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 ChaosBot/Discord/Modules/User/Level.cs diff --git a/ChaosBot/Discord/Modules/User/Level.cs b/ChaosBot/Discord/Modules/User/Level.cs new file mode 100644 index 0000000..cd9c59f --- /dev/null +++ b/ChaosBot/Discord/Modules/User/Level.cs @@ -0,0 +1,69 @@ +using System; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using ChaosBot.Discord.PreConditions; +using ChaosBot.Models; +using ChaosBot.Repositories; +using Discord; +using Discord.Commands; +using Microsoft.Extensions.Configuration; +using NLog; + +namespace ChaosBot.Discord.Modules.User +{ + public class Level : ModuleBase + { + private static readonly ILogger Logger = Program.Logger; + + [Command("level")] + [Alias("xp", "exp", "experience", "lvl")] + [CheckCommandPerm("User")] + public async Task XpShowInfo() + { + try + { + var sb = new StringBuilder(); + var embed = new EmbedBuilder(); + + embed.WithColor(new Color(255, 255, 0)); + embed.Title = $"Current Level Statistics"; + sb.AppendLine(); + + using (ChaosbotContext dbContext = new ChaosbotContext()) + { + IQueryable ctxUser = dbContext.ExperiencePoints; + IQueryable usrXp = ctxUser + .Where(p => p.DiscordGuildId.Equals(Context.Guild.Id)) + .Where(p => p.DiscordUserId.Equals(Context.User.Id)); + + if (usrXp.Any()) + { + ulong nextLevelXP = 6 * (usrXp.First().Level / 2) + 48 * usrXp.First().Level + 123; + sb.AppendLine($"Name: {Context.User.Mention}"); + sb.AppendLine($"\tLevel: {usrXp.First().Level}"); + sb.AppendLine($"\tExperience: {usrXp.First().Amount}"); + sb.AppendLine($"\tNeeded to Level: {nextLevelXP}"); + } + } + + + /* + * Add the string to the Embed + */ + embed.Description = sb.ToString(); + + /* + * Reply with the Embed created above + */ + await ReplyAsync(null, false, embed.Build()); + } + catch(Exception ex) + { + Logger.Error( + $"{MethodBase.GetCurrentMethod().ReflectedType.FullName}: Exception [{ex}] thrown, <[{ex.Message}]>."); + } + } + } +} \ No newline at end of file From 71bfac881095cd49d407e66b1667393c2944a407 Mon Sep 17 00:00:00 2001 From: Sean Stoves Date: Sun, 9 Aug 2020 00:56:24 -0400 Subject: [PATCH 2/2] Adding Default --- ChaosBot/Discord/Modules/User/Level.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ChaosBot/Discord/Modules/User/Level.cs b/ChaosBot/Discord/Modules/User/Level.cs index cd9c59f..48588e3 100644 --- a/ChaosBot/Discord/Modules/User/Level.cs +++ b/ChaosBot/Discord/Modules/User/Level.cs @@ -46,6 +46,13 @@ namespace ChaosBot.Discord.Modules.User sb.AppendLine($"\tExperience: {usrXp.First().Amount}"); sb.AppendLine($"\tNeeded to Level: {nextLevelXP}"); } + else + { + sb.AppendLine($"Name: {Context.User.Mention}"); + sb.AppendLine($"\tLevel: 0"); + sb.AppendLine($"\tExperience: 0"); + sb.AppendLine($"\tNeeded to Level: 123"); + } }