c# - 删除机器人发送的消息 Discord.net
问题描述
我正在尝试创建一个能够在命令完成后仅删除机器人消息的机器人。我知道我是如何知道命令已经执行的,但是我在仅删除机器人发送的消息时遇到了问题。
await Message.ModifyAsync(msg => msg.Content = "test [edited]");
然而,这只发生在已发送的最后一条消息(这可以相对容易地修复,我知道如何做到这一点),重要的是,聊天中的所有消息都会发生!我想做的是让我只删除机器人首先发送的消息。谢谢
解决方案
获取并存储机器人作为变量发送的消息,稍后将其删除。
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()
您可以在此处查看文档。
推荐阅读
- c# - 在属性中从配置管理器设置值
- java - 库存管理系统、MySQL、Netbeans 上的更新按钮问题
- php - 具有内联函数的方法返回后,添加到数组,不起作用
- javascript - 使用 oidc-client-js 和 Apereo CAS 验证访问令牌失败
- ruby - Ruby-Sketchup 改变面的颜色
- python-3.x - 根据节点权重将图拆分为最大的两个子图
- android - Android 7 React Native 组件数量限制?
- rest - 如何通过spring rest api传输大量数据
- wpf - 如何使组合框更快地添加项目?
- awk - awk 代码输出具有匹配字段的行,但没有输出