-
-
Save nnoc/63feefe6d4ced247afa09b1a3b36ee8b to your computer and use it in GitHub Desktop.
your purge command is really bad quick hold this
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class UtilityModule : ModuleBase | |
{ | |
[Command("purge")] | |
[Alias("clean", "cleanup", "prune")] | |
[Summary("Cleans the bot's messages")] | |
[RequireUserPermission(ChannelPermission.ManageMessages)] | |
public async Task Clean( | |
[Summary("The optional number of messages to delete; defaults to 10")] int count = 10, | |
[Summary("The type of messages to delete - Self, Bot, or All")] DeleteType deleteType = DeleteType.Self, | |
[Summary("The strategy to delete messages - BulkDelete or Manual")] DeleteStrategy deleteStrategy = DeleteStrategy.BulkDelete) | |
{ | |
int index = 0; | |
var deleteMessages = new List<IMessage>(count); | |
var messages = Context.Channel.GetMessagesAsync(); | |
await messages.ForEachAsync(async m => | |
{ | |
IEnumerable<IMessage> delete = null; | |
if (deleteType == DeleteType.Self) | |
delete = m.Where(msg => msg.Author.Id == Context.Client.CurrentUser.Id); | |
else if (deleteType == DeleteType.Bot) | |
delete = m.Where(msg => msg.Author.IsBot); | |
else if (deleteType == DeleteType.All) | |
delete = m; | |
foreach (var msg in delete.OrderByDescending(msg => msg.Timestamp)) | |
{ | |
if (index >= count) { await EndClean(deleteMessages, deleteStrategy); return; } | |
deleteMessages.Add(msg); | |
index++; | |
} | |
}); | |
} | |
internal async Task EndClean(IEnumerable<IMessage> messages, DeleteStrategy strategy) | |
{ | |
if (strategy == DeleteStrategy.BulkDelete) | |
await Context.Channel.DeleteMessagesAsync(messages); | |
else if (strategy == DeleteStrategy.Manual) | |
{ | |
foreach (var msg in messages.Cast<IUserMessage>()) | |
{ | |
await msg.DeleteAsync(); | |
} | |
} | |
} | |
} | |
public enum DeleteType | |
{ | |
Self = 0, | |
Bot = 1, | |
All = 2 | |
} | |
public enum DeleteStrategy | |
{ | |
BulkDelete = 0, | |
Manual = 1, | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment