Discord.js 在dicord.js中捕获用户输入,用于石头、布、剪刀应用程序

Discord.js 在dicord.js中捕获用户输入,用于石头、布、剪刀应用程序,discord.js,Discord.js,我正在尝试创建一个discord.js机器人,它有一个石头、布、剪刀的命令。下面的代码是我最后一次尝试捕获用户响应 命令后的响应没有前缀,我一直试图让它在没有前缀的情况下工作 var rps=[“石头”、“布”、“剪刀”]; var rpsChoice=rps[Math.floor(Math.random()*rps.length)]; message.channel.send(“让我们玩石头、布、剪刀,请输入相应的回复。”)。然后(()=>{ message.channel.waitingme

我正在尝试创建一个discord.js机器人,它有一个石头、布、剪刀的命令。下面的代码是我最后一次尝试捕获用户响应

命令后的响应没有前缀,我一直试图让它在没有前缀的情况下工作

var rps=[“石头”、“布”、“剪刀”];
var rpsChoice=rps[Math.floor(Math.random()*rps.length)];
message.channel.send(“让我们玩石头、布、剪刀,请输入相应的回复。”)。然后(()=>{
message.channel.waitingmessages(response=>response.content==“rock”| | response.content==“paper”| | response.content==“剪刀”{
最高:1,
时间:45000,
错误:['time'],
})。然后((收集)=>{
如果(用户==“石头”&&rpsChoice==“剪刀”){
message.channel.send(`I选择了${rpsChoice},而您选择了${collected}`);
message.channel.send(“你赢了!恭喜!”);
}否则如果(收集==“纸张”&&rpsChoice==“岩石”){
message.channel.send(`I选择了${rpsChoice},而您选择了${collected}`);
message.channel.send(“你赢了!恭喜!”);
}否则如果(收集==“剪刀”和&rpsChoice==“纸”){
message.channel.send(`I选择了${rpsChoice},而您选择了${collected}`);
message.channel.send(“你赢了!恭喜”);
}else if(已收集==rpsChoice){
message.channel.send(`I选择了${rpsChoice},而您选择了${collected}`);
message.channel.send(“没人赢,我们平手!”);
}否则{
message.channel.send(“对不起,您迷路了!”);
}
}).catch(()=>{
message.channel.send(“您没有回复任何内容!”);
});
});

首先,您有几个问题:

这里:
if(user==“rock”&&rpsChoice==“剪刀”){
看起来好像没有定义
user

其次,
collected
是一个消息的集合,而不是消息的内容。因此,执行
collected==“paper”
类似于将对象字符串进行比较

第三,使用两个equals
==
通常会在比较事物时引起问题,强烈建议不要使用。使用两个equals是可以的,但只有在您知道自己在做什么的情况下

因此,要解决这三个问题,请在
函数中使用此选项。然后()
函数:

let response=collection.first().content.toLowerCase();
如果(响应==“岩石”和&rpsChoice==“剪刀”){
message.channel.send(`I选择了${rpsChoice},而您选择了${collected}`);
message.channel.send(“你赢了!恭喜!”);
}否则,如果(响应==“纸张”&&rpsChoice==“岩石”){
message.channel.send(`I选择了${rpsChoice},而您选择了${response}`);
message.channel.send(“你赢了!恭喜!”);
}否则如果(回答==“剪刀”和&rpsChoice==“纸”){
message.channel.send(`I选择了${rpsChoice},而您选择了${response}`);
message.channel.send(“你赢了!恭喜”);
}else if(响应===rpsChoice){
message.channel.send(`I选择了${rpsChoice},而您选择了${response}`);
message.channel.send(“没人赢,我们平手!”);
}否则{
//嘿,你有没有意识到当用户输了的时候你没有告诉他们机器人的选择是什么?
message.channel.send(“对不起,您迷路了!”);
}
还有一个提示,为了减少代码,删除所有

message.channel.send(`I选择了${rpsChoice},而您选择了${response}`);

然后把它放在
响应的定义之后请澄清一下?你有什么问题吗?根据这一行:
命令后的响应没有前缀,我一直试图让它在没有前缀的情况下工作。
你一直试图让它在没有前缀的情况下工作?但是你说了这个命令没有。@fructedProgrammer抱歉,运行该命令的命令有前缀,但键入“rock”、“paper”和“剪刀”没有。这说明问题了吗?我想是这样,但是你希望响应有前缀还是没有前缀?因为atm代码似乎接受没有前缀的答案。@fruptedProgrammer没有,我希望前缀没有前缀。嗯,那么我想就删除前缀吧?我还是不明白……你希望用户像
>一样发送smt吗rps
然后
>rock
?您的代码似乎接受
>rps
然后
rock