首页 > 解决方案 > 删除机器人发送的消息 Discord.net

问题描述

我正在尝试创建一个能够在命令完成后仅删除机器人消息的机器人。我知道我是如何知道命令已经执行的,但是我在仅删除机器人发送的消息时遇到了问题。

    await Message.ModifyAsync(msg => msg.Content = "test [edited]");

然而,这只发生在已发送的最后一条消息(这可以相对容易地修复,我知道如何做到这一点),重要的是,聊天中的所有消息都会发生!我想做的是让我只删除机器人首先发送的消息。谢谢

标签: c#discorddiscord.net

解决方案


获取并存储机器人作为变量发送的消息,稍后将其删除。

var botMsg = await ReplyAsync("A message!");
await botMsg.DeleteAsync();

如果您需要删除多条消息,请创建一个列表并将每条消息存储到列表中。然后await Context.Channel.DeleteMessagesAsync(list)在命令末尾使用。

编辑

有用于传递消息 ID 列表和消息本身的重载方法。
传递消息 ID 列表的示例:

List<ulong> msgToDel = new List<ulong>();
msgToDel.Add((await ReplyAsync("test1")).Id); //Send a msg, then add the msg ID to the list.
msgToDel.Add((await ReplyAsync("test2")).Id);
//Blah...
await Context.Channel.DeleteMessagesAsync(msgToDel);

DeleteMessagesAsync() 您可以在此处查看文档。


推荐阅读