我希望我的 Discord Bot 只能在特定频道中工作。
let channel1 = ["693098853934563367", "693480881867849826", "693480881886759826" ]
for(let i=0; i<channel1.length; i++){
if(msg.channel.id === channel1[i]){
console.log("I am working in this channel")
//EXECUTE THINGS
}
}
我的问题是,机器人只在第一个通道中唤醒,而不是在阵列中的第二个或第三个通道中
答案 0 :(得分:1)
我认为这里不需要 for 循环。正如其他人提到的,您可以使用 some
方法,但我认为使用 includes
方法可能更容易(或更直接),如下所示:
let channelIDs = [ '693098853934563367', '693480881867849826', '693480881886759826' ];
if (channelIDs.includes(msg.channel.id)) {
console.log('I am working in this channel');
}
您甚至可以在下面进行测试:
let channelIDs = [ '693098853934563367', '693480881867849826', '693480881886759826' ];
let msg = { channel: { id: 'invalid channel ID' } };
if (channelIDs.includes(msg.channel.id))
console.log(`I am working in this channel (${msg.channel.id})`);
else
console.log(`I am not working in this channel (${msg.channel.id})`);
msg.channel.id = '693098853934563367';
if (channelIDs.includes(msg.channel.id))
console.log(`I am working in this channel (${msg.channel.id})`);
else
console.log(`I am not working in this channel (${msg.channel.id})`);
msg.channel.id = '693480881867849826';
if (channelIDs.includes(msg.channel.id))
console.log(`I am working in this channel (${msg.channel.id})`);
else
console.log(`I am not working in this channel (${msg.channel.id})`);
答案 1 :(得分:0)
一旦满足条件,您必须break循环
let channel1 = ["693098853934563367", "693480881867849826", "693480881886759826" ]
for(let i=0; i<channel1.length; i++){
if(msg.channel.id === channel1[i]){
console.log("I am working in this channel")
break;
//EXECUTE THINGS
}
}
在 ES6 中 你可以使用 Array#some() ,它会在回调函数满足后立即停止搜索
let channel1 = ["693098853934563367", "693480881867849826", "693480881886759826" ]
if (channel1.some(id => message.channel.id === id)) {
console.log("I am working in this channel")
//EXECUTE THINGS
}
此外,您可以使用 Array#includes()
let channel1 = ["693098853934563367", "693480881867849826", "693480881886759826" ]
if (channel1.includes(message.channel.id)) {
console.log("I am working in this channel")
//EXECUTE THINGS
}
答案 2 :(得分:-1)
const channel1 = ["id1", "id2", "id3"];
if (channel1.some(id => message.channel.id !== id) return console.log("I can’t work in this channel");