【问题标题】:How do I wait for a reply in discord.js?如何在 discord.js 中等待回复?
【发布时间】:2018-02-02 00:44:42
【问题描述】:

所以我希望我的机器人做的是等待来自用户的消息,因此当用户发送“!spec”时,机器人会收到该消息并回复“查看或更改?”然后等你输入“see”或“change”,但我无法使用它。文档对我来说不是很清楚,我不知道该怎么做。

这必须能够在 PM 中工作,因为我不想用我的计划向 Discord 发送垃圾邮件。

我已经试过了:

    if (command === 'spec'){
            message.author.send("See or Change?");
            const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { time: 10000 });
            console.log(collector)
            collector.on('collect', message => {
                if (message.content === "See") {
                    message.channel.send("You Want To See Someones Spec OK!");
                } else if (message.content === "Change") {
                    message.channel.send("You Want To Change Your Spec OK!");
                }
            })

我可能写错了。我不习惯图书馆。

【问题讨论】:

    标签: javascript discord


    【解决方案1】:
    let filter = m => m.author.id === message.author.id
        message.channel.send(`Are you sure to delete all data? \`YES\` / \`NO\``).then(() => {
          message.channel.awaitMessages(filter, {
              max: 1,
              time: 30000,
              errors: ['time']
            })
            .then(message => {
              message = message.first()
              if (message.content.toUpperCase() == 'YES' || message.content.toUpperCase() == 'Y') {
                message.channel.send(`Deleted`)
              } else if (message.content.toUpperCase() == 'NO' || message.content.toUpperCase() == 'N') {
                message.channel.send(`Terminated`)
              } else {
                message.channel.send(`Terminated: Invalid Response`)
              }
            })
            .catch(collected => {
                message.channel.send('Timeout');
            });
        })
    

    【讨论】:

      【解决方案2】:

      与 == 比较并尝试。

      if (command === 'spec'){
              message.author.send("See or Change?");
              const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { time: 10000 });
              console.log(collector)
              collector.on('collect', message => {
                  if (message.content == "See") {
                      message.channel.send("You Want To See Someones Spec OK!");
                  } else if (message.content == "Change") {
                      message.channel.send("You Want To Change Your Spec OK!");
                  }
              })
      

      【讨论】:

      • 在发送“查看或更改”后没有看到我回复“规范”
      • 你试过和 == 比较吗?如果 (command == 'spec') 请也这样做
      • 它会发送“查看或更改”它似乎不等待回复,只是跳过其余部分
      • m.author.id == message.author.id 也试过这里?
      • 这是因为您使用的是 message.channel.send。它应该是 message.author.send,因为如果您尝试将消息发送到频道,它不知道您在说什么,因为 DM 与频道不同。
      猜你喜欢
      • 2018-12-09
      • 2021-07-23
      • 2020-05-24
      • 1970-01-01
      • 2021-01-27
      • 2020-07-02
      • 2021-12-30
      • 2021-04-19
      • 2020-11-21
      相关资源
      最近更新 更多