javascript Discord js添加对机器人消息的React

ghhkc1vu  于 2022-12-28  发布在  Java
关注(0)|答案(4)|浏览(144)

我已经创建了我自己的不和谐机器人,但我有这个代码错误:

message.channel.send(":apple:***SONDAGE :apple:\n "+choix1+" ou "+""+choix2+"***")
    		.then(function (message) {
          message.react("👍")
          message.react("👎")
       		message.pin()
          message.delete()
    			});

它发送消息到通道并添加React,在我的控制台中,我有这个错误:

(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
iugsix8n

iugsix8n1#

那些不是错误,那些是警告。正如它所说,当你的承诺被拒绝时,你不检查。你应该在. 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
             });
mkshixfv

mkshixfv2#

除了前面提到的其他答案之外,像message.react(...)这样的函数都返回Promises,因此,例如,消息可能会在react/pin promises解析之前被删除。
如果你想让事情按顺序发生,你需要一个长的.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的东西 Package 在一个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);
  }
});

进一步阅读:

  • 发送(消息)
  • 消息。React(表情符号)
  • Message.pin()
  • 消息. delete()
pwuypxnk

pwuypxnk3#

我也遇到了同样的错误,你做了message.delete(),但是你想添加React。当消息被删除时,机器人不能添加React。只要删除message.delete(),就不会出现错误。

t9eec4r0

t9eec4r04#

现在,在版本14中,有些事情发生了一些变化
messageinteraction事件现在被删除了。您必须使用messageCreateinteractionCreate来代替。
所以代码会像这样...

client.on(Events.MessageCreate, async (message) => {
  try {
    if (message.channel.id === channel) {
      await message.react('👍🏻');
    }
  } catch (err) {
    console.error(err);
  }
});

进一步阅读:

  • 活动
  • 响应消息

相关问题