Solución:
Puedes usar el regular discord.js
, ahora es v12.5.1
.
Esto es solo una muestra, pero funcionó para mí. (Actualmente trato de mejorar esto)
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
client.api.applications(client.user.id).guilds(YOUR_GUILD_ID_HERE).commands.post({
data: {
name: "hello",
description: "hello world command"
// possible options here e.g. options: [{...}]
}
});
client.ws.on('INTERACTION_CREATE', async interaction => {
const command = interaction.data.name.toLowerCase();
const args = interaction.data.options;
if (command === 'hello'){
// here you could do anything. in this sample
// i reply with an api interaction
client.api.interactions(interaction.id, interaction.token).callback.post({
data: {
type: 4,
data: {
content: "hello world!!!"
}
}
})
}
});
});
client.login(token);
Por supuesto que puedes tener opciones, ver documentación …
IDE no registrará el nuevo código … al menos mi tormenta php actualmente no lo hace 🙂
Sin embargo, ¡es importante darle al bot los permisos correctos para usar este tipo de comando!
Así que vaya a Discord.com/developers, seleccione su aplicación, vaya a OAuth2
y seleccione
application.commands
de la sección de alcance. Debe estar en la parte inferior de la columna del medio. Deberías seleccionar bot
también y debajo Bot Permissions
establece algunos otros permisos específicos. Luego use ese nuevo enlace de invitación para volver a invitar al bot.
Sin application.commands
permiso, el comando no funcionará y recibirá algún error como Missing Access
o algo similar.
COSAS IMPORTANTES
-
Usar
.guilds('11231...').comma
para probar estos comandos. Cuando no se usa, se tarda alrededor de 1 hora en activarse. Su uso lo activará inmediatamente. -
Dale al bot el permiso correcto.
application.commands
Hola, no suelo trabajar con discord.js, pero pude encontrar buena documentación sobre esto. Debería poder hacerlo así con “cliente” definido.
const interactions = require("discord-slash-commands-client");
const client = new interactions.Client(
"you unique bot token",
"your bots user id"
);
Si el cliente se define como se muestra, entonces un comando / debería funcionar si se define así.
// will create a new command and log its data.
//If a command with this name already exist will that be overwritten.
client.createCommand({
name: "your command name",
description: "description for this command",
})
.catch(console.error)
.then(console.log);