Beispiel #1
0
        /// <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
                }
            }
        }
Beispiel #2
0
        /// <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));
        }