javascript - 如何让机器人在 Discord 上编辑自己的消息
问题描述
我的朋友为我编写了这个惊人的代码,但它似乎不起作用。它意味着在命令上发送消息,然后一遍又一遍地编辑消息。但是当我运行代码时,我的终端说
DiscordAPIError:无法编辑由另一个用户方法创作的消息:'patch',路径:'/channels/808300406073065483/messages/811398346853318668',代码:50005,httpStatus:403
有没有办法解决这个问题?
client.on('message', userMessage =>
{
if (userMessage.content === 'hi')
{
botMessage = userMessage.channel.send('hi there')
botMessage.edit("hello");
botMessage.edit("what up");
botMessage.edit("sup");
botMessage.react(":clap:")
}
});
解决方案
该Channel#send()
方法返回一个承诺,这意味着您必须等待操作完成才能定义它。这可以使用.then()
orasync
和来完成await
。根据个人喜好,我经常使用第二个选项,尽管我已经为你列出了这两个选项。
最终代码
client.on('message', async userMessage => {
if (userMessage.content === 'hi')
{
/*
botMessage = await userMessage.channel.send('hi there')
*/
userMessage.channel.send('hi there').then(botMessage => {
await botMessage.edit("hello");
await botMessage.edit("what up");
botMessage.edit("sup");
botMessage.react(":clap:")
})
}
});
推荐阅读
- python - Python登录恢复系统的问题
- android - Android Auto 启动时的 Intent 过滤器
- javascript - Javascript“镜像”一个数字
- nextflow - “混合”操作员不等待上游进程完成
- php - 科学计数法到正常十进制输出的转换
- ruby-on-rails - 将过滤器应用于 Rails 模型
- java - 如何对嵌套地图进行分组
- c# - 如何知道网络接口何时使用路由器作为 C# 中的 DNS 服务器?
- javascript - JavaScript 错误:未捕获(承诺中)DOMException
- java - 无法从 START_OBJECT 令牌中反序列化 `java.lang.String` 的实例