如何让 Bot 只在特定频道中工作?

时间:2021-06-06 12:51:49

标签: javascript discord discord.js

我希望我的 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
    }
}

我的问题是,机器人只在第一个通道中唤醒,而不是在阵列中的第二个或第三个通道中

3 个答案:

答案 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");
相关问题