Ошибка набора разрешений команды Косой черты DiscordJS

#javascript #discord #discord.js

Вопрос:

У меня проблема с функцией command.permission.set() для команд косой черты в discordJS. Версия DiscordJS-13. Версия узла: v16.8.0.

(Я создал обработчик команд косой черты в каталоге с именем команды. Есть все файлы для команд)

Ошибка в том, что:

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

Код набора разрешений:

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


if (msg.content.startsWith('

Где я потерпел неудачу?


Ответ №1:

Вам необходимо получить доступ к 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);

 

)) {
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!');
}
}

});
Где я потерпел неудачу?

Ответ №1:

Вам необходимо получить доступ к ApplicationCommandPermissionsManager свойству ApplicationCommands , после чего вы можете добавить разрешение с помощью ApplicationCommandPermissionsManager#add метода.

Вот вам пример!