剪刀石头布Discord.js命令的问题

时间:2020-02-24 09:14:42

标签: javascript discord.js

我一直试图在Discord机器人中实施剪刀剪刀命令,这是我代码的相关部分。

module.exports = {
name: 'rps',
description: "plays a game of rock paper scissors",
execute(message, args){


let userResponse = args.slice(1).join(" ");
JSON.stringify(userResponse);
if(userResponse != 'R' || 'P' || 'S' || 'r' || 'p' || 's') return message.channel.send(':x: Please provide a proper response. \n**Options:** `R` (rock), `P` (paper), `S` (scissors)')
if(!userResponse) return message.channel.send(':x: Please provide a proper response. \n**Options:** `R` (rock), `P` (paper), `S` (scissors)');

但是,当我执行命令时(假设我写了 lm!rps R ),该机器人只是告诉我提供适当的响应,而控制台中未提供任何信息。

如果您可以提供帮助,我们将不胜感激! 无焰

1 个答案:

答案 0 :(得分:1)

此代码无效:

userResponse != 'R' || 'P' || 'S' || 'r' || 'p' || 's'

这将评估为(userResponse != 'R') || 'p' || ...

'p'作为非空字符串被视为真,因此整个表达式的值将是真,因此条件始终为真。

检查用户响应是否正确的更好的选择是['R', 'P', 'S', ...].indexOf(userResponse)==-1。另一个选择是userResponse != 'R' && userResponse != 'P' && ...