Ejemplo n.º 1
0
        public static async void Warn(string moderator, ITextChannel channel, SocketGuildUser user, string reason)
        {
            reason = $"({user.Username}#{user.Discriminator}) {reason}";
            //Warn User
            var embed = Embeds.Warn(user, reason);
            await channel.SendMessageAsync("", embed : embed).ConfigureAwait(false);

            //Log the warn in bot-logs
            embed = Embeds.LogWarn(moderator, channel, user, reason);
            var botlog = await channel.Guild.GetTextChannelAsync(UserSettings.Channels.BotLogsId(user.Guild.Id));

            if (botlog != null)
            {
                await botlog.SendMessageAsync("", embed : embed).ConfigureAwait(false);
            }

            //Write the userid and reason in warns.xml
            UserSettings.Warns.Add(user.Guild.Id, user.Id, reason);

            //Measure # of warns the user now has
            int warns = WarnLevel(user);

            //Mute, kick or ban a user if they've accumulated too many warns
            int muteLevel = UserSettings.BotOptions.MuteLevel(user.Guild.Id);
            int kickLevel = UserSettings.BotOptions.KickLevel(user.Guild.Id);
            int banLevel  = UserSettings.BotOptions.BanLevel(user.Guild.Id);

            if (warns > 0)
            {
                await channel.SendMessageAsync($"{user.Username} has been warned {warns} times.");

                if (warns >= banLevel)
                {
                    Ban(user.Guild.CurrentUser.Username, channel, user,
                        "User was automatically banned for accumulating too many warnings.");
                }
                else if (warns >= kickLevel)
                {
                    Kick(user.Guild.CurrentUser.Username, channel, user,
                         "User was automatically kicked for accumulating too many warnings.");
                }
                else if (warns >= muteLevel)
                {
                    Mute(user.Guild.CurrentUser.Username, channel, user);
                }
            }
        }