#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
метода.
Вот вам пример!