/ #YouTube

Creacion de un Bot de Discord con Node.js

En este tutorial te mostrare a como utilizar JavaScript con Node.js para crear tu propio Bot de Discord.

Las herramientas que utilizaremos seran un editor de codigo como Visual Studio Code y la herramienta de Node.Js junto a algunas de sus librerias.

Creando el perfil del Bot.

Como primer paso nos dirigimos al Portal de Desarrolladores. Despues de iniciar sesion con nuestra cuenta, daremos clic en New Application para crear un bot.

Asignaremos un nombre a nuestro Bot, aceptamos los terminos y condiciones de Discord y daremos clic en Create.

Aqui podremos colocar una imagen y una descripcion a nuestro Bot, despues guardaremos los cambios.

Nos dirigimos al apartado de Bot.

Copia el Tokend de tu Bot y procura no filtrarlo o compartilo con alguien o tendras problemas con el Bot.

Luego baja un poco y activa las siguientes opciones que seran necesarias para ejecutar comandos en nuestro Bot, despues guarda los cambios.

Dirigete al apartado OAuth2, aqui copia el Client ID y activa lo sigueinte para invitar el Bot a tu servidor de Discord.

Configurar nuestra area de trabajo.

Abre Visual Studio Code, crea una carpeta con un nombre y dentro de ella crea los siguientes archivos.

Instalacion de Dependencias

Abre una terminal en Visual Studio Code e instala la dependencia de Discord.Js

Bot en linea.

#VerTutorial

Abre el archivo index.js y copia la siguiente estructura que nos permitira activar el Bot de Discord.

//requerimientos
const Discord = require('discord.js');
const config = require('./config.json');
//cliente
const Client = new Discord.Client({
intents: [3276799]
});
//en linea
Client.on('ready', async ( client ) => {
console.log('Acceso Concedido 🤖!')
});
//conexion
Client.login(config.token)
view raw index.js hosted with ❤ by GitHub

Dirigete al archivo config.json y crea la siguiente estructura agrega el tokend y el clientId de los pasos anteriores.

{
"token": "TOKEN_DE_TU_BOT",
"clientID": "ID_DE_TU_BOT"
}
view raw config.json hosted with ❤ by GitHub

Para activar el bot abre una terminal en Visual Studio Code y ejecuta el comando node .

Presencia y lectura de comandos

#VerTutorial

Con este codigo es como le agregaremos presencia a nuestro Bot, tenemos tres tipos de precencia estas las podemos cambiar dependiendo del tipo:

  • Jugando
  • Escuchando
  • Viendo
  • Transmitiendo
  • //precensia del bot
    Client.on('ready', async (client) => {
    console.log(`
    _____ ____ _ _
    |_ _| / ___|| |_ __ _ _ __| | __
    | | \\___ \\| __/ _\` | '__| |/ /
    | |_ ___) | || (_| | | | <
    |_(_) |____/ \\__\\__,_|_| |_|\\_\\
    ╔════════════════════════════════════════════╗
    ✅ Developed by: https://t-stark.netlify.app
    🤖 Online: ${client.user.tag} 📶 ${Client.commands.size} slash commands {/}
    💻 Tools: https://starkcompany.netlify.app
    ╚════════════════════════════════════════════╝
    `);
    client.user.setActivity('Developed by T. Stark. | Insta: sr_shelby_02', { type: 3 });
    });
    view raw index.js hosted with ❤ by GitHub

    Copia el codigo y agregalo en el archivo index.js despues inicia el bot para ver los cambios.

    Ahora crea la siguiente estructura para poder leer los comandos de la carpeta commands que es donde guardaremos todos nuestros comando que ejecutaremos con el prefix.

    //Comandos {!}
    Client.on('messageCreate', async ( message ) => {
    if(message.author.bot) return;
    if(!message.content.startsWith('!')) return;
    //HANDLER
    try {
    const command = message.content.toLowerCase().slice(1).split(' ')[0];
    console.log(command)
    const executeCommand = require(`./commands/${command}.js`);
    executeCommand( message );
    } catch (error) {
    console.log(`${message.content} no es un comando valido.`)
    }
    });
    // Comandos {/}
    Client.commands = new Discord.Collection();
    fs.readdirSync("./slash_commands").forEach((commandfile) => {
    const command = require(`./slash_commands/${commandfile}`);
    if (command.data && command.data.name) {
    Client.commands.set(command.data.name, command);
    } else {
    console.log(`El comando en ${commandfile} no tiene la propiedad 'data.name'.`);
    }
    });
    // interactionCreate
    Client.on('interactionCreate', async (interaction) => {
    if (!interaction.isCommand()) return;
    const command = Client.commands.get(interaction.commandName);
    if (!command) return;
    try {
    await command.execute(interaction);
    } catch (error) {
    console.error(error);
    await interaction.reply({ content: 'Hubo un error al ejecutar ese comando.', ephemeral: true });
    }
    }
    );
    const { REST } = require('@discordjs/rest');
    const { Routes } = require('discord-api-types/v9');
    const rest = new REST({ version: '9' }).setToken(config.token);
    (async () => {
    try {
    // Registra los comandos globales
    await rest.put(
    Routes.applicationCommands(config.clientId),
    { body: Client.commands.map(command => command.data.toJSON()) }
    );
    } catch (error) {
    console.error("Error loading commands.", error);
    }
    })();
    view raw index.js hosted with ❤ by GitHub

    Comando Help

    #VerTutorial

    Dirigete a la carpeta commands y crea un nuevo archivo por nombre help.js este archivo nos permitira leer los comandos que tenemos en la carpeta commands para mostrar todos los comandos disponibles.

    module.exports = async (message) => {
    const fs = require('fs');
    const commandsFolder = './commands';
    fs.readdir(commandsFolder, (err, files) => {
    if (err) {
    console.error('Error al leer los comandos:', err);
    return;
    }
    const commandNames = files.map(file => file.replace('.js', ''));
    const commandList = commandNames.map(name => `\`!${name}\``).join(`\n`);
    const embed = {
    title: 'Lista de Comandos.',
    description: `**Lista de comandos disponibles:** \n${commandList}`,
    color: 0x5BFF8A,
    };
    message.reply({ embeds: [embed] });
    });
    };
    view raw help.js hosted with ❤ by GitHub