删除机器人发送的消息 Discord.net
Deleting Messages a bot has sent Discord.net
我正在尝试创建一个机器人,它能够在完成命令后仅删除机器人消息。
我知道我是如何知道该命令已经发生的,但是我在删除机器人发送的消息时遇到了问题。
await Message.ModifyAsync(msg => msg.Content = "test [edited]");
然而,这只会发生在已发送的最后一条消息中(这可以相对容易地修复,我知道如何做到这一点)并且重要的是聊天中的所有消息都会发生!我想要做的是让我只删除机器人首先发送的消息。
谢谢
获取并存储 bot 发送的消息作为变量,稍后将其删除。
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()
here 的文档。
我正在尝试创建一个机器人,它能够在完成命令后仅删除机器人消息。 我知道我是如何知道该命令已经发生的,但是我在删除机器人发送的消息时遇到了问题。
await Message.ModifyAsync(msg => msg.Content = "test [edited]");
然而,这只会发生在已发送的最后一条消息中(这可以相对容易地修复,我知道如何做到这一点)并且重要的是聊天中的所有消息都会发生!我想要做的是让我只删除机器人首先发送的消息。 谢谢
获取并存储 bot 发送的消息作为变量,稍后将其删除。
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()
here 的文档。