Agregar mas comandos en Discord

Agregar mas comandos en Discord

Un bot con nada más que un solo comando sería realmente aburrido, y probablemente ya tengas un montón de ideas de comandos flotando en tu cabeza,

Así es como debería verse su evento de mensaje actualmente:

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

if (message.content === '!ping') {

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

}

});

Antes de hacer cualquier otra cosa, cree una propiedad para almacenar el prefijo que ha configurado. En lugar de const config = ...hacerlo, puede usar la desestructuración para extraer la variable de prefijo del archivo de configuración y el token también mientras lo hace.

- const config = require('./config.json');

+ const { prefix, token } = require('./config.json');

- client.login(config.token);

+ client.login(token);

De ahora en adelante, si cambia el prefijo o el token en su archivo config.json, también cambiará en su archivo bot. Pronto usarás mucho la variable de prefijo.

Estructura de comando simple

Ya tiene una declaración if que verifica los mensajes para un comando ping / pong. Agregar otras comprobaciones de comandos es igual de fácil; simplemente encadena una else ifa tu condición actual.

if (message.content === `${prefix}ping`) {

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

} else if (message.content === `${prefix}beep`) {

message.channel.send('Boop.');

}

Hay algunos problemas potenciales con esto. Por ejemplo, el comando ping no funcionará si envía !ping test. Solo coincidirá !pingy nada más. Lo mismo ocurre con el otro comando. Si desea que sus comandos sean más flexibles, puede hacer lo siguiente:

if (message.content.startsWith(`${prefix}ping`)) {

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

} else if (message.content.startsWith(`${prefix}beep`)) {

message.channel.send('Boop.');

}

Ahora el comando ping se activará siempre que el mensaje comience con !ping ! A veces esto es lo que desea, pero otras veces, es posible que desee hacer coincidir solo exactamente !ping; varía de un caso a otro, así que tenga en cuenta lo que necesita al crear comandos.

Visualización de datos reales

Comencemos a mostrar algunos datos reales. Por ahora, mostraremos información básica de miembros / servidores.

Comando de información del servidor

Haga otra instrucción if para verificar los comandos que se usan servercomo nombre del comando. Ya ha interactuado con el objeto Mensaje a través de message.channel.send(). Obtiene el objeto de mensaje, accede al canal en el que se envió y le envía un mensaje. Al igual que cómo message.channelte da el canal del mensaje , message.guildte da el servidor del mensaje .

Los servidores se conocen como "gremios" en la API de Discord y la biblioteca discord.js. Siempre que veas a alguien decir "gremio", se refieren a servidor.

else if (message.content === `${prefix}server`) {

message.channel.send(`This server's name is: ${message.guild.name}`);

}

Si desea ampliar ese comando y agregar más información, aquí hay un ejemplo de lo que puede hacer:

else if (message.content === `${prefix}server`) {

message.channel.send(`Server name: ${message.guild.name}\nTotal members: ${message.guild.memberCount}`);

}

Eso mostraría tanto el nombre del servidor como la cantidad de miembros en él.

Comando de información de miembro

Configure otra instrucción if y use el nombre del comando user-info.

else if (message.content === `${prefix}user-info`) {

message.channel.send(`Your username: ${message.author.username}\nYour ID: ${message.author.id}`);

}

Esto mostrará el nombre de usuario del autor del mensaje (no el apodo, si tiene uno), así como su ID de usuario.

¡Y ahí lo tienes! Como puede ver, es bastante sencillo agregar comandos adicionales.

El problema con if/else if

Si no planea hacer más de 7 u 8 comandos para su bot, entonces usar una cadena if / else if está perfectamente bien; presumiblemente es un proyecto pequeño en ese momento, por lo que no debería tener que dedicar demasiado tiempo a él. Sin embargo, este no es el caso de la mayoría de nosotros.

Probablemente desee que su bot tenga muchas funciones y sea fácil de configurar y desarrollar, ¿verdad? El uso de una cadena if / else if gigante no le permitirá lograrlo y solo obstaculizará su proceso de desarrollo. Después de leer sobre la creación de argumentos , nos sumergiremos en algo llamado "controlador de comandos", un código que hace que el manejo de los comandos sea más fácil y mucho más eficiente.

Antes de continuar, aquí hay una pequeña lista de razones por las que no debe usar las cadenas if / else if para cualquier cosa que no sea un proyecto pequeño:

  • Tarda más en encontrar un fragmento de código que desea.
  • Es más fácil ser víctima del código espagueti.
  • Difícil de mantener a medida que crece.
  • Difícil de depurar.
  • Difícil de organizar.
  • Mala práctica general.
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