首页 > 解决方案 > DiscordJS 斜线命令权限设置错误

问题描述

我对 discordJS 中斜线命令的 command.permission.set() 函数有疑问。DiscordJS 版本为 13。节点版本:v16.8.0。

(我在一个名为 commands 的目录中创建了一个 Slash 命令处理程序。命令的所有文件都有)

错误是:

TypeError [INVALID_TYPE]: Supplied permissions is not an Array of ApplicationCommandPermissionData.

权限集代码:

client.on('messageCreate', async (msg) => {


if (msg.content.startsWith('$')) {
if (msg.content === '$add') {
  const slashCommandData = {};

  const commandFiles = fs
    .readdirSync('./src/commands')
    .filter((file) => file.endsWith('.js'));

  for (const file of commandFiles) {
    const command = require('./commands/' + file);

    console.log("- " + command.data.name);

    slashCommandData['name'] = command.data.name;
    slashCommandData['description'] = command.data.description;

    if (command.data.options !== undefined) {
      console.log('Option for ' + command.data.name);

      slashCommandData['options'] = command.data.options;
    } else {
      slashCommandData['options'] = [];
    }

    
    await client.guilds.cache
    .get('877098630299934740')
    ?.commands.create(slashCommandData);
    
    if (command.data.permission !== undefined) {
      
      console.log("Permission for " + command.data.name);

      const permission = [
        {
            id: '461976441110921218',
            type: 'USER',
            permission: true,
        },
    ]

      const commando = await client.guilds.cache.get('877098630299934740')?.commands.fetch('884318697794195486');
      
      try {

        await commando.permissions.set({ permission })
      }
      catch (error) {
        console.log(error)
      
      }
    }
      }


      msg.reply('Aggiunti i comandi nuovi!');
    }
  }

    });

我哪里失败了?

标签: javascriptdiscorddiscord.js

解决方案


您需要访问的ApplicationCommandPermissionsManager属性,ApplicationCommands然后您可以使用ApplicationCommandPermissionsManager#add方法添加权限。

这是一个例子!


    client.guilds.cache.get('877098630299934740').commands.permissions.add({
            command: '884318697794195486',
            permissions: [{
                id: '461976441110921218',
                type: 'USER',
                permission: true,
            }, ]
        })
        .then(console.log)
        .catch(console.error);


推荐阅读