Multible服务器上的Discord.js切换命令

时间:2019-12-02 14:55:24

标签: node.js discord discord.js

因此,我希望您可以在写入该命令的服务器上 toggle 命令上运行一个不和谐的bot。仅举一个例子:

if(cmd === "me"){
    message.channel.send(`You <@${message.author.id}>!`);
}

要在任何服务器上打开/打开命令,您需要编写“ 我打开”或“ 我关闭”。 “ 我打开”将允许在该服务器上执行命令,而“ 我关闭”将不允许在该服务器上执行命令。我希望这可以在许多服务器上工作,所以不允许在公会等上使用。

1 个答案:

答案 0 :(得分:0)

跟踪行会以及它们是否打开。

首先从初始化所有公会开始

var guilds = [];
var commands = ['me', 'test']; //List of all commands that can be toggled
bot.on('ready', () => {
   guilds = bot.guilds.map(guild => {  //For each guild create an object of bools based on the commands
      var obj = {};
      commands.forEach(command => obj[command] = true);
      return {
         toggles: obj,
         id: guild.id
      };
   });
});

我们现在有了一个类似

的数据结构
[
  {
    id: (guildId)
    toggles: {me: true, test: true}
  }
]

现在,每当收到消息时,检查命令是否处于活动状态都非常简单

bot.on('message', msg => {
   var cmd = ;//get command from msg
   var guildToggles = guilds.find(guild => guild.id == msg.guild.id);
   if(guildToggles.toggles[cmd]){
      //Command is active. Run
   }else{
      //Command is not active. Dont run
   }
});

切换命令也非常容易。基本上只需要做guildToggles.toggles[cmd] = !guildToggles.toggles[cmd]