Hey everyone! I’m working on a Discord bot project in C# and running into some issues with implementing a bulk message deletion feature. I’m pretty new to coding but wanted to build something custom for my friend group’s server.
I’ve got two versions of code but neither is working how I want. Here’s what I’m trying to achieve: when I type !clear 5 it should delete the last 5 messages, or !clear 15 should remove 15 messages, etc.
SetupClearCommand();
private void SetupClearCommand()
{
botCommands.CreateCommand("clear")
.Parameter("MessageCount")
.Do(async (context) =>
{
var targetMessages = await context.Channel.DownloadMessages(Int32.Parse(context.GetArg("MessageCount")));
await context.Channel.DeleteMessages(targetMessages);
await context.Channel.SendMessage(context.GetArg("MessageCount") + " messages removed.");
});
}
This version attempts to use a parameter but doesn’t seem to work at all. My previous attempt was simpler but had a fixed number:
SetupClearCommand();
private void SetupClearCommand()
{
botCommands.CreateCommand("clear")
.Do(async (context) =>
{
Message[] targetMessages;
targetMessages = await context.Channel.DownloadMessages(50);
await context.Channel.DeleteMessages(targetMessages);
});
}
This second version worked but always deleted exactly 50 messages regardless of what I wanted.
Can someone help me figure out where I’m going wrong? I feel like I’m missing something obvious here. Thanks in advance!