搜索不和谐机器人的8ball命令的修复程序

时间:2019-06-06 19:08:02

标签: javascript node.js discord discord.js

如果仅使用?8ball,该命令就可以正常工作。如果我将问题添加到命令中,例如,我似乎无法弄清楚如何使机器人回复。 8ball我应该待在家里吗?或?8ball是或否?

如果其中存在用户问题,如何使我的机器人对8ball命令做出反应?我敢打赌这很简单,但是不幸的是我对编码并不了解。

感谢您的帮助。

这是代码。它适用于?8ball,但如果我添加一个问题,则无效。

client.on('message', msg => {
  if (msg.content === '?8ball') {
     msg.reply(eightball[Math.floor(Math.random() * eightball.length)]);
}

1 个答案:

答案 0 :(得分:1)

问题是您的if语句正在明确寻找

  

?8ball

如果您希望它响应includes'?8ball'的任何请求,您可以使用:

client.on('message', msg => {
    if( msg.content.includes('?8ball') ) {
        msg.reply(eightball[Math.floor(Math.random() * eightball.length)]);
    }
}

请注意,仅包含预定义的字符串(确定是否不检查字符串是在消息的开头还是在消息的中间),这将无法确定他们要问的问题。您必须进行其他解析才能从消息中获取问题,例如String.split()

将String.split()和Array.shift()Array.join()结合使用以获取与查询分开的消息内容的示例:

client.on('message', msg => {
    var msgarray = msg.content.split(' ');

    //If the first part of the created array matches your message.
    if( msgarray[0] === '?8ball' ) {

        //Remove first part of array and put it together again.
        msgarray.shift();

        //Put the user query back together without the first part and spaces between the words
        var msgcontent = msgarray.join(' ');

        msg.reply(eightball[Math.floor(Math.random() * eightball.length)]);
    }
});