无法使用discord bot编辑消息(UnhandledPromiseRejectionWarning:DiscordAPIError:无法编辑其他用户创作的消息)

时间:2019-05-21 20:06:29

标签: javascript node.js discord.js

我的机器人运行了一些新代码,但是它无法使用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)

我曾尝试为服务器上的角色管理员提供服务,但仍然会引发相同的错误。

3 个答案:

答案 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

enter image description here

答案 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 事件中使用消息的定义即可。