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); } } }