public async Task Warn(SocketGuildUser user, [Remainder] string reason = "Naruszenie regulaminu serwera") { Random random = new Random(DateTime.Now.Millisecond); uint id = (uint)random.Next(0, 100000); GuildCfg guildCfg = GuildsCfgs.GetGuildCfg(Context.Guild); IDMChannel dmChannel = await user.GetOrCreateDMChannelAsync(); ISocketMessageChannel modChannel = (ISocketMessageChannel)Methods.GetTextChannelByID(Context.Guild, guildCfg.ModeratorChannelID); UserWarnings account = UsersWarnings.GetUserWarnings(user); SocketRole role = Methods.GetRoleByID(Context.Guild, guildCfg.PunishmentRoleID); Methods.DeleteExpiredWarnings(account); Warning warning = Warnings.CreateWarning(id, reason, guildCfg.WarnDuration); account.Warnings.Add(warning); UsersWarnings.Save(); string msg = ""; string message = ""; if (account.Warnings.Count >= 5) { await user.BanAsync(0, "Przekroczenie limitu ostrzeżeń."); } else if (account.Warnings.Count > 2) { await user.AddRoleAsync(role); msg = $"{user.Mention} przekroczyłeś limit dopuszczalnych ostrzeżeń, co spowodowało Twój pobyt w {role.Name}.\nPowód ostatniego ostrzeżenia: {reason}\nPolecam przeczytać regulamin dostępny na <#{guildCfg.StatuteChannelID}>."; message = $"KarcNaN: Przekroczono limit ostrzeżeń, co skutkuje pobytem {user.Mention} w Karcerze.\nDokładna treść wysłanej wiadomości:\n{msg}"; } else { msg = $"{user.Mention} otrzymałeś ostrzeżenie, powód: {reason}\nMasz {account.Warnings.Count} ostrzeżeń (maksymalnie możesz mieć 2, każdy kolejny, to {role.Name}).\nPolecam przeczytać regulamin dostępny na <#{guildCfg.StatuteChannelID}>."; message = $"Ostrz101: Dokładna treść wysłanej wiadomości:\n{msg}"; } await dmChannel.SendMessageAsync(msg); await modChannel.SendMessageAsync(message); }
public async Task CheckWarnings(SocketUser user = null) { if (user == null) { user = Context.User; } UserWarnings account = UsersWarnings.GetUserWarnings(user); Methods.DeleteExpiredWarnings(account); string warns = $"Ostrzeżenia {user.Username}:\n"; foreach (Warning warn in account.Warnings) { warns += $"{warn.ID} - {warn.Reason} ({warn.ExpireDate})\n"; } await Context.Channel.SendMessageAsync(warns); }
public async Task RemoveWarning(SocketGuildUser user, uint id) { GuildCfg guildCfg = GuildsCfgs.GetGuildCfg(Context.Guild); ISocketMessageChannel modChannel = (ISocketMessageChannel)Methods.GetTextChannelByID(Context.Guild, guildCfg.ModeratorChannelID); UserWarnings account = UsersWarnings.GetUserWarnings(user); Warning warning = Warnings.GetWarning(account, id); if (warning != null) { account.Warnings.Remove(warning); UsersWarnings.Save(); await modChannel.SendMessageAsync($"Pomyślnie usunięto ostrzeżenie {warning.ID} z konta {user.Mention}."); } else { await modChannel.SendMessageAsync($"Coś poszło nie tak... Czy na pewno użyłeś dobrego ID? 🤔"); } }
public async Task CheckStatus(SocketUser user = null) { if (user == null) { user = Context.User; } UserExpMute userExp = UsersExpMute.GetExpMute(user.Id); UserPraises uPraises = UsersPraises.GetUserPraises(user.Id); UserArchievements uArchievements = UsersArchievements.GetUserArchievements(user.Id); UserWarnings accountWarns = UsersWarnings.GetUserWarnings(user); Methods.DeleteExpiredWarnings(accountWarns); string archievements = "Osiągnięcia:\n"; foreach (string item in uArchievements.Archievements) { archievements += $"{item}\n"; } await Context.Channel.SendMessageAsync($"{user.Username} ma {userExp.LevelNumber} lvl, {userExp.XP} xp. Został pochwalony {uPraises.Praises.Count} razy oraz otrzymał {accountWarns.Warnings.Count} ostrzeżeń.\n{archievements}"); }