【问题标题】:Discord.js Toggle Commands On Multible ServersDiscord.js 在多个服务器上切换命令
【发布时间】:2020-03-27 05:09:53
【问题描述】:

所以我想要一个不和谐的机器人,如果您可以在写入命令的服务器上切换命令。仅举个例子:

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

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

【问题讨论】:

    标签: node.js discord discord.js


    【解决方案1】:

    跟踪公会以及它们是打开还是关闭。

    首先初始化所有公会

    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]

    【讨论】:

    • 感谢@strikee 的回答!我只是不明白。我无法在不和谐服务器中写下“我关闭”来禁用命令,对吗?还是我想错了?
    • 我发的不是整个系统。您看到需要添加逻辑来切换命令。我推荐一种类似“关闭 [command]”的方法。然后您可以执行commandToTurnOff = message.content.split(' ')[0] 之类的操作,然后使用我上面发布的代码来实际更改切换的值
    • 你好@strikee!另一个问题......我真的不能让它工作,它似乎不会切换。你能写一个我可以看的示例命令并试着绕开它吗?我很抱歉这些问题,我真的很想知道这是如何工作的,我认为这很有趣。即使我不擅长它。谢谢
    • 我发布的脚本只是展示了如何格式化您可以使用的可能的数据结构。您需要编写将更新数据结构中的值的实际代码。
    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 2020-05-12
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2021-02-02
    • 2021-08-30
    相关资源
    最近更新 更多