/// <summary> /// Responds with the relevant level up messages /// </summary> /// <param name="context"> /// The context. /// </param> /// <param name="setup"> /// The setup. /// </param> /// <param name="levelUser"> /// The level user. /// </param> /// <param name="requiredXP"> /// The required xp. /// </param> /// <param name="roleAdded"> /// The role added. /// </param> /// <returns> /// The <see cref="Task"/>. /// </returns> public static async Task DoResponseAsync(SocketUserMessage msg, LevelService.LevelSetup setup, LevelService.LevelSetup.LevelUser levelUser, int requiredXP, string roleAdded) { var gChannel = msg.Channel as ITextChannel; var guild = gChannel.Guild as SocketGuild; var gUser = msg.Author as SocketGuildUser; var embed = new EmbedBuilder { Title = $"{gUser.Username} Leveled Up!", ThumbnailUrl = gUser.GetAvatarUrl(), Description = $"Level: {levelUser.Level - 1}\n" + $"{roleAdded}" + $"XP: {requiredXP}\n" + $"Next Level At: {levelUser.Level * 50 + levelUser.Level * levelUser.Level * 25} XP", Color = Color.Blue }; if (setup.Settings.UseLogChannel) { try { if (guild.GetChannel(setup.Settings.LogChannelID) is IMessageChannel chan) { await chan.SendMessageAsync(string.Empty, false, embed.Build()); } } catch { // Ignored } } if (setup.Settings.ReplyLevelUps) { try { await gChannel.SendMessageAsync(string.Empty, false, embed.Build()); } catch { // Ignored } } if (setup.Settings.DMLevelUps) { try { embed.Title = $"You Leveled up in {guild.Name}!"; await gUser.SendMessageAsync(string.Empty, false, embed.Build()); } catch { // Ignored } } }
/// <summary> /// Returns a list of roles for the user to receive and a list of all roles available /// </summary> /// <param name="setup"> /// The setup. /// </param> /// <param name="levelUser"> /// The level user. /// </param> /// <returns> /// The <see cref="KeyValuePair" />. /// </returns> public static KeyValuePair <List <LevelService.LevelSetup.LevelReward>, List <LevelService.LevelSetup.LevelReward> > GetRoles(LevelService.LevelSetup setup, LevelService.LevelSetup.LevelUser levelUser) { var rolesAvailable = setup.RewardRoles.Where(x => x.Requirement <= levelUser.Level - 1).ToList(); var rolesToReceive = new List <LevelService.LevelSetup.LevelReward>(); if (!rolesAvailable.Any()) { return(new KeyValuePair <List <LevelService.LevelSetup.LevelReward>, List <LevelService.LevelSetup.LevelReward> >(rolesToReceive, rolesAvailable)); } if (setup.Settings.IncrementLevelRewards) { var max = rolesAvailable.Max(x => x.Requirement); rolesToReceive.Add(rolesAvailable.FirstOrDefault(x => x.Requirement == max)); } else { rolesToReceive = rolesAvailable; } return(new KeyValuePair <List <LevelService.LevelSetup.LevelReward>, List <LevelService.LevelSetup.LevelReward> >(rolesToReceive, rolesAvailable)); }