【问题标题】:How can my bot recognize the 3rd word in a string and then repeat that word?我的机器人如何识别字符串中的第三个单词然后重复该单词?
【发布时间】:2019-10-29 13:04:13
【问题描述】:

我使用 JavaScript、Node.js 和 discord.js 为 Discord 制作了一个机器人。我想知道如何提取另一个机器人所说的单词并重复该单词。

例如,已经在频道中的机器人会这样说:

BOT: GC STARVING Mord [mord33] (0.2)

我需要找到消息中的第三个单词,并用它来发送这样的消息:

MYBOT: .aidfor Mord 10k gc

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    在你的消息事件中,你可以像这样抓取机器人发送的第三个单词,

    client.on('message', (message) => {
        const thirdWord = message.content.trim().split(' ')[2];
        message.channel.send(".aidfor " + thirdWord + " 10k gc");
    });
    

    您通过执行message.content(显然)获得消息内容,然后您可以对该内容运行字符串操作trim()。 Trim 会删除消息前后的空格,这样就不会出现意外的空格会破坏您的第三个单词的捕捉。

    Split 可以采用正则表达式(如slothiful did),也可以传入一个字符作为分隔符。它将返回一个字符串数组,但它将由分隔符分隔(谁知道,对吧?)。而且由于数组从零开始,我们需要访问数组中的第三个字符串,这就是为什么我们在括号中放一个 2。

    【讨论】:

      【解决方案2】:

      从您的消息事件开始。检查作者的 ID 是否是您希望重复的机器人的 ID,以免其他消息干扰。然后将消息拆分为参数,并发送您的消息,实现第三个。确保同时捕获任何可能出现的被拒绝的承诺。

      client.on('message', message => {
        if (message.author.id === 'IDofBot') {
          const args = message.content.trim().split(/ +/g);
      
          return message.channel.send(`.aidfor ${args[2]} 10k gc`)
            .catch(console.error);
        }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-24
        • 1970-01-01
        • 2019-04-26
        • 1970-01-01
        • 2014-10-24
        • 1970-01-01
        • 1970-01-01
        • 2019-06-01
        相关资源
        最近更新 更多