我的机器人运行了一些新代码,但是它无法使用message.edit()
编辑任何消息并抛出DiscordAPIError
任何帮助。
这里是我超级简单的bot的代码
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', message => {
if (message.content === 'lenny') {
message.edit('( ͡° ͜ʖ ͡°)');
}
});
client.login('#################################################');
每当有人在文本频道中说lenny时,这就是控制台输出。
(node:6672) UnhandledPromiseRejectionWarning: DiscordAPIError: Cannot edit a message authored by another user
at C:\Users\Terra Byte\node_modules\discord.js\src\client\rest\RequestHandlers\Sequential.js:85:15
at C:\Users\Terra Byte\node_modules\snekfetch\src\index.js:215:21
at processTicksAndRejections (internal/process/task_queues.js:89:5)
(node:6672) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 6)
我曾尝试为服务器上的角色管理员提供服务,但仍然会引发相同的错误。
答案 0 :(得分:2)
作为您要但不能做的选择的另一种选择,当有人通过scnView.rendersContinuously = true
ship.runAction(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 3.0)) {
print("DONE ROTATE")
ship.runAction(SCNAction.moveBy(x: 1, y: 0, z: 0, duration: 3.0), completionHandler: {
print("DONE MOVEBY")
scnView.rendersContinuously = false
})
}
发布“!lenny”时,您可以让漫游器发布新消息。或者,您甚至可以使它变得更加简单,并为您的服务器创建自定义表情符号,以代替:lenny:来显示一张lenny头像,例如:https://discordemoji.com/emoji/Lenny
答案 1 :(得分:1)
即使是/尤其是使用API,也无法完全不协调来自其他用户的消息。
答案 2 :(得分:0)
引发错误的原因是因为您尝试编辑另一个用户消息。
client.on('message', message => {
if (message.content === 'lenny') {
message.edit('( ͡° ͜ʖ ͡°)'); // <-- Here you are editing another users message.
}
});
您要编辑的消息属于创作该消息的人,您不能编辑其他用户的消息。 如上所述,您希望它删除邮件,因此我将在下面实现。
client.on('message', message => {
if (message.content === 'lenny') {
message.delete() //This is the original message that triggered the message event.
message.channel.send("( ͡° ͜ʖ ͡°)") //Send a lenny face in response to the user saying "lenny"
}
});
您无需搜索它,只需在 message 事件中使用消息的定义即可。