Estoy siguiendo la guía de Discord.js para crear comandos de barra para mi bot, pero estoy atascado en este punto aquí:
https://discordjs.guide/interactions/slash-command-permissions.html#user-permissions
Hay dos cosas que no puedo entender :
Estoy creando mis comandos usando SlashCommandBuilder y un script deployment deploy-commands.js como se describe aquí:
https://discordjs.guide/creating-your-bot/creating-commands.html#command-deployment-script
y aquí:
https://discordjs.guide/interactions/registering-slash-commands.html#guild-commands
Si me pueden ayudar en cualquiera de estas dos cosas, ¡sería genial!
¡Gracias!
Revisé los códigos de @discordjs/builders y @discordjs/rest y no hay forma de establecer permisos personalizados con estos paquetes. Lo que puede hacer es crear los comandos de barra con el paquete Discord.js . Al crearlos en el paquete Discord.js , la identificación del comando de barra diagonal se devolverá en la Promise cumplida. Con esta identificación puede establecer los permisos para el comando. El único problema al hacerlo de esta manera es que puede tomar un tiempo antes de que los comandos de barra diagonal vuelvan a funcionar. Aquí hay un ejemplo:
const { Client } = require('discord.js'); const client = new Client({intents: ['Your Intents here']}); client.once('ready', () => { client.application.commands.create({ name: 'your_command', description: "Your command's description" }).then(id => { client.application.commands.set({command: id, permissions: [ id: 'some_user_id', type: 'USER', permission: false // Can not use the slash command ]}).catch(console.log); }); }); client.login('Your token here'); Pensé que había otra manera de hacerlo, pero no estoy muy seguro. Si no me equivoco, también puede obtener todos los comandos después de actualizarlos con los @discordjs/builders y @discordjs/rest . Una vez que los hayas obtenido, la Promise devolverá una Collection una vez que se haya completado. En la Collection estarán todos los ID de todos los comandos de barra que puede usar para establecer los permisos. Así que si esta teoría funciona, este será el ejemplo:
const { Client } = require('discord.js'); const client = new Client({intents: ['Your Intents here']}); client.once('ready', () => { // Your refresh code here client.application.commands.fetch().then(collection => { collection.forEach(command => { if(command.name === `The specified command name`){ client.application.commands.permissions.set({command: command.id, permissions: [ { id: 'some_user_id', type: 'USER', permission: false // Can not use the slash command } ]}).catch(console.log); } }); }).catch(console.log); }); client.login('Your token here');