Skip to content

Martin-Munive/DISCORD_Channels-Bot

Repository files navigation

DISCORD_Channels-Bot

Bot de Discord para organizar, reenviar y clasificar enlaces compartidos en una comunidad

Martin Munive
Médico general
Analista y programador de software

Node.js Discord.js Slash Commands Heroku License: ISC

Un bot de Discord creado para ayudar a comunidades a ordenar enlaces, mensajes y recursos compartidos en canales temáticos mediante slash commands.

DISCORD_Channels-Bot nació como una herramienta práctica para una comunidad: capturar enlaces enviados por usuarios, agregar descripción, enviarlos a un canal principal y reenviarlos a canales especializados como ciencia, programación, libros, cursos, software, hardware, música o videojuegos.

Qué Problema Resuelve

En servidores activos de Discord, los enlaces útiles se pierden rápidamente entre conversaciones. Este bot propone una capa simple de organización:

  1. el usuario registra un enlace con descripción;
  2. el bot publica el registro en un canal principal;
  3. el bot reenvía el contenido a un canal temático;
  4. la comunidad conserva una ruta más ordenada para encontrar recursos compartidos.

Capacidades Actuales

  • Carga dinámica de comandos desde la carpeta commands.
  • Carga dinámica de eventos desde la carpeta events.
  • Registro de slash commands en un servidor específico.
  • Comando /links para publicar descripción, enlace y canal destino.
  • Comando /usuario para mostrar datos básicos del usuario.
  • Comando /servidor para mostrar datos básicos del servidor.
  • Evento ready para confirmar conexión del bot.
  • Soporte de despliegue tipo worker mediante Procfile.

Comandos

/links

Publica un enlace con descripción en un canal principal y en un canal temático seleccionado.

Parámetros:

  • descripcion: comentario o contexto del recurso.
  • link: enlace a compartir.
  • canal: canal temático destino.

Canales configurados actualmente:

  • General
  • Humor
  • Trabajo
  • Ciencia
  • Matemáticas
  • Programación
  • Cursos
  • Libros
  • Idiomas
  • Software
  • Hardware
  • Diseño
  • Filosofía
  • Literatura
  • Películas/Series
  • Música
  • Imágenes
  • Videojuegos

/usuario

Muestra usuario, ID y tag del usuario que ejecuta el comando.

/servidor

Muestra nombre del servidor, cantidad de miembros, fecha de creación y conteo de canales.

Arquitectura

DISCORD_Channels-Bot/
├── index.js                 # Entrada principal del bot
├── deploy-commands.js       # Registro de slash commands en Discord
├── events/
│   └── ready.js             # Evento de conexión inicial
├── commands/
│   ├── links.js             # Comando principal de organización de enlaces
│   ├── usuario.js           # Información del usuario
│   ├── servidor.js          # Información del servidor
│   └── ...                  # Prototipos históricos de comandos
├── config.example.json      # Plantilla de credenciales locales
├── Procfile                 # Worker para Heroku
├── package.json
└── docs/

El bot usa dos mecanismos dinámicos:

  • index.js lee comandos desde commands/*.js y los guarda en client.commands.
  • deploy-commands.js lee los mismos comandos y los registra en Discord mediante la REST API.

Configuración

El código histórico espera un archivo local config.json con credenciales de Discord. Ese archivo no debe subirse al repositorio.

Crea un archivo config.json en la raíz con esta estructura:

{
  "token": "DISCORD_BOT_TOKEN",
  "clientId": "DISCORD_APPLICATION_CLIENT_ID",
  "guildId": "DISCORD_TEST_GUILD_ID"
}

También puedes usar config.example.json como plantilla.

Instalación

npm install

Registrar Slash Commands

npm run deploy:commands

Ejecutar el Bot

npm start

Despliegue

El repositorio incluye un Procfile compatible con despliegues tipo worker:

worker: node index.js

Para despliegues en Heroku u otros servicios, configura las credenciales de Discord como secretos del entorno o mediante el mecanismo seguro del proveedor. La versión actual todavía lee config.json; el soporte completo de variables de entorno queda como mejora de seguridad en el roadmap.

Seguridad

No publiques:

  • tokens de Discord;
  • config.json;
  • archivos .env;
  • IDs privados si el servidor no debe exponerse públicamente.

El .gitignore actual excluye config.json y .env.

Limitaciones Detectadas

  • El bot usa discord.js v13, una versión histórica frente a las versiones modernas de la librería.
  • Algunos comandos históricos en commands/ no tienen extensión .js; el loader actual solo carga archivos terminados en .js, por lo que esos prototipos no se registran dinámicamente.
  • Hay IDs de canales escritos directamente en el código.
  • index.js y deploy-commands.js dependen de config.json; la dependencia dotenv existe, pero todavía no se usa.
  • Falta una capa de permisos para limitar quién puede publicar o reenviar contenido.
  • Falta validación fuerte de enlaces y sanitización de entradas.

Roadmap

El proyecto puede evolucionar en fases:

  1. Presentación pública y documentación.
  2. Seguridad de configuración y variables de entorno.
  3. Corrección de comandos históricos no cargados.
  4. Migración a discord.js moderno.
  5. Persistencia de enlaces en base de datos.
  6. Búsqueda y consulta de recursos por categoría, usuario, fecha o palabra clave.

Ver docs/ROADMAP.md.

Autor

Martin Munive
Médico general
Analista y programador de software

Licencia

Este proyecto se distribuye bajo licencia ISC. Ver LICENSE.

About

Discord bot for organizing shared links into thematic channels using slash commands.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors