Discord js 添加对机器人消息的反应
Discord js Add reaction to a bot message
我已经创建了自己的 discord 机器人,但我遇到此代码的错误:
message.channel.send(":apple:***SONDAGE :apple:\n "+choix1+" ou "+""+choix2+"***")
.then(function (message) {
message.react("")
message.react("")
message.pin()
message.delete()
});
它向频道发送消息并添加反应,但在我的控制台中出现此错误:
(node:11728) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): DiscordAPIError: Unknown Message
(node:11728) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:11728) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): DiscordAPIError: Unknown Message
那些不是错误,那些是警告。正如所说,当您的 promise 被拒绝时,您不会检查。
你应该在 .then() 之后使用 .catch() 以防它被拒绝。
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise/catch
尝试:
message.channel.send(":apple:***SONDAGE :apple:\n "+choix1+" ou "+""+choix2+"***")
.then(function (message) {
message.react("")
message.react("")
message.pin()
message.delete()
}).catch(function() {
//Something
});
我有同样的错误,你做 message.delete()
,但你想添加反应。删除消息后,机器人无法添加反应。只需删除 message.delete()
就不会出现错误。
在其他答案提到的之前的事情之上,功能如 message.react(...)
所有 return 承诺,因此例如消息可能会在 react/pin 承诺之前被删除已解决。
如果你想让事情发生,你需要有一个长的 .then(...).then(...).then(...)
链,或者你可以使用 async/await。这是一个 async/await 示例:
client.on("message", async (message) => {
const sentMessage = await message.channel.send("my message");
await sentMessage.react("");
await sentMessage.react("");
await sentMessage.pin();
await sentMessage.delete();
});
如果您想对失败进行任何错误处理,您可以将 await 内容包装在 try/catch 块中:
client.on("message", async (message) => {
try {
const sentMessage = await message.channel.send("my message");
await sentMessage.react("");
await sentMessage.react("");
await sentMessage.pin();
await sentMessage.delete();
} catch (e) {
console.error(e);
}
});
进一步阅读:
我已经创建了自己的 discord 机器人,但我遇到此代码的错误:
message.channel.send(":apple:***SONDAGE :apple:\n "+choix1+" ou "+""+choix2+"***")
.then(function (message) {
message.react("")
message.react("")
message.pin()
message.delete()
});
它向频道发送消息并添加反应,但在我的控制台中出现此错误:
(node:11728) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): DiscordAPIError: Unknown Message
(node:11728) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:11728) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): DiscordAPIError: Unknown Message
那些不是错误,那些是警告。正如所说,当您的 promise 被拒绝时,您不会检查。 你应该在 .then() 之后使用 .catch() 以防它被拒绝。
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise/catch
尝试:
message.channel.send(":apple:***SONDAGE :apple:\n "+choix1+" ou "+""+choix2+"***")
.then(function (message) {
message.react("")
message.react("")
message.pin()
message.delete()
}).catch(function() {
//Something
});
我有同样的错误,你做 message.delete()
,但你想添加反应。删除消息后,机器人无法添加反应。只需删除 message.delete()
就不会出现错误。
在其他答案提到的之前的事情之上,功能如 message.react(...)
所有 return 承诺,因此例如消息可能会在 react/pin 承诺之前被删除已解决。
如果你想让事情发生,你需要有一个长的 .then(...).then(...).then(...)
链,或者你可以使用 async/await。这是一个 async/await 示例:
client.on("message", async (message) => {
const sentMessage = await message.channel.send("my message");
await sentMessage.react("");
await sentMessage.react("");
await sentMessage.pin();
await sentMessage.delete();
});
如果您想对失败进行任何错误处理,您可以将 await 内容包装在 try/catch 块中:
client.on("message", async (message) => {
try {
const sentMessage = await message.channel.send("my message");
await sentMessage.react("");
await sentMessage.react("");
await sentMessage.pin();
await sentMessage.delete();
} catch (e) {
console.error(e);
}
});
进一步阅读: