Javascript 多个if/else条件(discord bot)

Javascript 多个if/else条件(discord bot),javascript,node.js,if-statement,discord,discord.js,Javascript,Node.js,If Statement,Discord,Discord.js,我正在尝试创建一个简单的discord机器人,目前正在使用nodeJS。 我正在创建只有特定用户才能使用的特定命令,每当没有权限使用此类命令的人收到回复“您没有权限”时。(我希望你能理解。很抱歉措辞不好) 这是我当前的代码: const Discord=require('Discord.js'); const client=new Discord.client(); 常量前缀='!'; client.once('ready',()=>{ log('Bot处于联机状态'); }); client.

我正在尝试创建一个简单的discord机器人,目前正在使用nodeJS。 我正在创建只有特定用户才能使用的特定命令,每当没有权限使用此类命令的人收到回复“您没有权限”时。(我希望你能理解。很抱歉措辞不好)

这是我当前的代码:

const Discord=require('Discord.js');
const client=new Discord.client();
常量前缀='!';
client.once('ready',()=>{
log('Bot处于联机状态');
});
client.on('message',message=>{
如果(!message.content.startsWith(prefix)| | message.author.bot)返回;
const args=message.content.slice(prefix.length.split(+/);
const命令=args.shift().toLowerCase();
if(command=='ban'&&message.author.id===“123456789”){
message.channel.send('suspended');
}
else{message.channel.send('无权限')
;}
if(command==“chat”&&message.author.id==“123456789”){
message.channel.send('chat-restricted');
}
else{message.channel.send('无权限')
;}
if(command=='coins'&&message.author.id===“123456789”){
message.channel.send('余额已更新');
}
else{message.channel.send('无权限')
;}
if(command==“coins 2”和&message.author.id==“123456789”){
message.channel.send('余额已更新');
}
else{message.channel.send('无权限')
;}
});
但是发生的是,每当有人使用命令时,yes或no条件将显示4次,因为有4个命令

因此,如果用户试图使用!ban命令的输出将是

no permission
no permission
no permission
no permission
我很确定我在if/else条件下搞砸了什么,但我不确定是什么。。
非常感谢您的帮助,我为这些糟糕的措辞感到抱歉。

您可以将代码更改为这样的内容

const Discord=require('Discord.js');
const client=new Discord.client();
常量前缀='!';
client.once('ready',()=>{
log('Bot处于联机状态');
});
client.on('message',message=>{
如果(!message.content.startsWith(prefix)| | message.author.bot)返回;
const args=message.content.slice(prefix.length.split(+/);
const命令=args.shift().toLowerCase();
如果(message.author.id=='123456789'){
开关(命令){
“禁令”案:
message.channel.send('suspended');
打破
“聊天”案例:
message.channel.send('chat-restricted');
打破
“硬币”一案:
message.channel.send('余额已更新');
打破
案例“硬币2”:
message.channel.send('余额已更新');
打破
违约:
message.channel.send('unknown command!');
打破
}
}否则{
message.channel.send('无权限');
}
});
想法是这样的

let命令='ban';
让消息={
作者:{
id:-1,
},
};
如果(message.author.id==“123456789”){
开关(命令){
“禁令”案:
//发送暂停
打破
“聊天”案例:
//发送聊天限制
打破
// ...
}
}否则{
//不发送许可
}
或者如果出于某种原因想要使用if-else条件

const Discord=require('Discord.js');
const client=new Discord.client();
常量前缀='!';
client.once('ready',()=>{
log('Bot处于联机状态');
});
client.on('message',message=>{
如果(!message.content.startsWith(prefix)| | message.author.bot)返回;
const args=message.content.slice(prefix.length.split(+/);
const命令=args.shift().toLowerCase();
if(command=='ban'&&message.author.id===“123456789”){
message.channel.send('suspended');
}else if(command==“chat”和&message.author.id==“123456789”){
message.channel.send('chat-restricted');
}else if(command==“coins”和&message.author.id==“123456789”){
message.channel.send('余额已更新');
}else if(command==“coins 2”和&message.author.id==“123456789”){
message.channel.send('余额已更新');
}else if(message.author.id!=“123456789”){
message.channel.send('无权限');
}否则{
message.channel.send('Unknown command!');
}
});

由于您分别拥有所有条件,因此它们将逐个执行。您应该在第一个子句之后使用
else if
,以连接所有子句。

您还可以对所解释的用例使用switch case语句。

if(command=='ban'&&message.author.id===“123456789”){
message.channel.send('suspended');
}
else if(command==“chat”和&message.author.id==“123456789”){
message.channel.send('chat-restricted');
}
else if(command==“coins”和&message.author.id==“123456789”){
message.channel.send('余额已更新');
}
else if(command==“coins 2”和&message.author.id==“123456789”){
message.channel.send('余额已更新');
}
else{message.channel.send('无权限')
;}
您还可以通过先检查
message.author.id
来简化if子句,然后继续检查执行的命令,如下所示

if(message.author.id==“123456789”){
如果(命令==“硬币2”){
...
else if(命令==“聊天”){
…(特定于命令的执行)
}
…(其余命令)
}否则{
message.channel.send(“无权限”)
}