using System.Diagnostics; using Discord; using Discord.WebSocket; namespace Boyfriend.Commands; public sealed class ClearCommand : ICommand { public string[] Aliases { get; } = { "clear", "purge", "очистить", "стереть" }; public async Task RunAsync(CommandProcessor cmd, string[] args, string[] cleanArgs) { if (cmd.Context.Channel is not SocketTextChannel channel) throw new UnreachableException(); if (!cmd.HasPermission(GuildPermission.ManageMessages)) return; var toDelete = cmd.GetNumberRange(cleanArgs, 0, 1, 200, "ClearAmount"); if (toDelete is null) return; var messages = await channel.GetMessagesAsync((int)(toDelete + 1)).FlattenAsync(); var user = (SocketGuildUser)cmd.Context.User; var msgArray = messages.Reverse().ToArray(); await channel.DeleteMessagesAsync(msgArray, Utils.GetRequestOptions(user.ToString()!)); foreach (var msg in msgArray.Where(m => !m.Author.IsBot)) cmd.Audit( string.Format( Messages.CachedMessageCleared, msg.Author.Mention, Utils.MentionChannel(channel.Id), Utils.Wrap(msg.CleanContent)), false); } }