如果仅使用?8ball,该命令就可以正常工作。如果我将问题添加到命令中,例如,我似乎无法弄清楚如何使机器人回复。 8ball我应该待在家里吗?或?8ball是或否?
如果其中存在用户问题,如何使我的机器人对8ball命令做出反应?我敢打赌这很简单,但是不幸的是我对编码并不了解。
感谢您的帮助。
这是代码。它适用于?8ball,但如果我添加一个问题,则无效。
client.on('message', msg => {
if (msg.content === '?8ball') {
msg.reply(eightball[Math.floor(Math.random() * eightball.length)]);
}
答案 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)]);
}
});