发送直接消息给作者

时间:2020-07-01 21:18:05

标签: javascript node.js discord discord.js

我在此消息下方提供的代码有效。但是,当我关闭DM时,它会同时发送could not be DMed!Sent a message这两个消息。如果消息已发送,我怎么可能让机器人发送一条消息?

message.author.send("hi").catch(() => message.channel.send("could not be DMed!")).then(() => message.channel.send(`Sent a message`));

2 个答案:

答案 0 :(得分:2)

关闭dm时似乎会出现某种错误,请尝试使用async await语法查看关闭dm并从那里开始时弹出的错误

  (
    async () => {
      try {
        const response = await message.channel.send('sent a message')
        console.log(response)
      } catch(err) {
        console.log(err)
        await message.channel.send("could not be DMed!")
      } 
    }
  )()

答案 1 :(得分:2)

只需颠倒.then().catch()的顺序。如果您在.then()之后附加.catch() ,它将像“最终”一样运行-即,只要渔获量返回的诺言不拒绝它运行。

message.author.send("hi")
  .then(() => message.channel.send(`Sent a message`))
  .catch(() => message.channel.send("could not be DMed!"));

如果您希望.catch()仅在原始承诺被拒绝时运行,而在.then()承诺被拒绝时也可以运行,则可以使用第二个参数来.then()

message.author.send("hi")
  .then(() => message.channel.send(`Sent a message`), () => message.channel.send("could not be DMed!"))