Comandos dinamicos en Discord

Comandos dinamicos en Discord

Ahora que tiene una colección de todos nuestros comandos, ¡puede usarlos fácilmente! Pero antes de sumergirse directamente en él, sería una buena idea familiarizarse con cómo convertirá estas declaraciones if básicas en algo mucho más dinámico y sólido

Así que continuemos con 1 ejemplo más de declaración if, y luego pasaremos a lo real.

if (command === 'ping') {

- message.channel.send('Pong.');

+ client.commands.get('ping').execute(message, args);

}

Usted .get()el comando ping y llama a su .execute()método mientras que pasa en el messagey argslas variables como los argumentos del método. En lugar de poner su código de comando ping directamente en la instrucción if, puede llamarlo directamente así. Por supuesto, esta versión es en realidad más larga que la que tenía antes para su comando ping, pero los comandos generalmente no son tan cortos.

Entonces, si quisiera (asumiendo que ya ha copiado y pegado todos sus comandos en sus propios archivos), este podría ser su evento de mensaje completo:

client.on('message', message => {

if (!message.content.startsWith(prefix) || message.author.bot) return;

const args = message.content.slice(prefix.length).trim().split(/ +/);

const command = args.shift().toLowerCase();

if (command === 'ping') {

client.commands.get('ping').execute(message, args);

} else if (command === 'beep') {

client.commands.get('beep').execute(message, args);

} else if (command === 'server') {

client.commands.get('server').execute(message, args);

}

// do the same for the rest of the commands...

});

Eso funcionaría perfectamente bien, pero no es dinámico; todavía tendría que agregar una declaración if y el mismo código anterior cada vez que quisiera registrar un nuevo comando, que es menos que ideal.

Ejecutar comandos dinámicamente

En este punto, puede tomar toda la cadena if / else if y eliminarla; no necesitará nada más allá de la const command = ...línea. En su lugar, lo reemplazará con esto:

if (!client.commands.has(command)) return;

try {

client.commands.get(command).execute(message, args);

} catch (error) {

console.error(error);

message.reply('there was an error trying to execute that command!');

}

Si no hay un comando con ese nombre, salga temprano. Si lo hay, .get()el comando y llama a su .execute()método mientras pasa sus variables messagey argscomo argumentos del método. En caso de que algo salga mal, registre el error e informe al miembro para informarle.

... ¡y eso es! Siempre que desee agregar un nuevo comando, simplemente cree un nuevo archivo en su commandsdirectorio, asígnele el nombre que desee y luego haga lo que hizo con los otros comandos.

En el próximo capítulo, veremos cómo implementar algunas características básicas en su nuevo controlador de comandos. Actualmente, apenas es un "controlador" de comandos en este momento; es un cargador y ejecutor de comandos, si desea verlo de esa manera. Aprenderá a implementar algunas funciones nuevas y la lógica detrás de ellas, como:

Alias ​​de comando, Enfriamientos, Comandos de solo gremio, Un mensaje de ayuda dinámico

Autor: Oscar olg Fecha actualización el 2021-10-19. Fecha publicación el 2020-10-19. Categoría: Discord. Mapa del sitio Fuente: discordjs