首页 > 解决方案 > 在 discord.js 上使用 8ball 命令时遇到问题

问题描述

如果用户说 !8ball(问题),它可以正常工作,但如果他们只说 !8ball 而没有问题,它不会回答提出问题“Escriba una pregunta”的消息。


  function doMagic8BallVoodoo() {
    var rand = ['Si?', 'No me digas :0', 'nose, espero haberte ayudado', 'No >:)', 'Si tu lo crees', '._.', 'Si!'];

    return rand[Math.floor(Math.random()*rand.length)];
}

// Later in the code:
if(command === "8ball")
 if (!args) return message.reply(`Escriba una pregunta.`);
{
    message.channel.send('**La respuesta a tu pregunta es** ' + doMagic8BallVoodoo());
}

标签: javascriptdiscorddiscord.js

解决方案


即使args是一个空数组,你的 if 语句也永远不会返回 true。这是因为![]不等于true

相反,您应该检查args.lengthorargs[0]是否为假。如果数组为空,args.length将返回 0,这是一个假值(!0等于 true),并且args[0]将返回0 undefined,这也是一个假值(!undefined等于 true)。

此外,您在声明之后if放置了括号,这似乎不正确。

function doMagic8BallVoodoo() {
 var rand = [
  'Si?',
  'No me digas :0',
  'nose, espero haberte ayudado',
  'No >:)',
  'Si tu lo crees',
  '._.',
  'Si!',
 ];

 return rand[Math.floor(Math.random() * rand.length)];
}

// Later in the code:
if (command === '8ball') {
 if (!args.length) return message.reply(`Escriba una pregunta.`);
 message.channel.send(
  '**La respuesta a tu pregunta es** ' + doMagic8BallVoodoo()
 );
}

console.log(![]); // false
console.log(!0); // true
console.log(!undefined); // true


推荐阅读