Smilbot es un bot de Discord enfocado en coleccionar cartas, gestionar una economía virtual y reproducir música.
Nota de Versiones: Este repositorio está en la rama de la versión 2.0 (reescrito completamente en TypeScript y con sistema de música mejorado usando
discord-player). La versión legacy estable la puedes encontrar en el tag v1.0.
- Node.js 18 o superior
- Una cuenta de Discord (para el Token del bot)
- FFmpeg instalado en el sistema (requerido para reproducir música)
- Clona este repositorio y navega hasta la carpeta.
git clone https://github.com/Paradox021/Smilbot.git cd Smilbot - Ejecuta
npm installpara instalar las dependencias. - Crea un archivo
.enven la raíz con las siguientes variables:TOKEN=tu_token_de_discord BACKEND_URL=https://url.de.tu.backend
- Inicia el bot en entorno de desarrollo:
(También puedes compilarlo con
npm run dev
npm run buildy ejecutarlo connpm startpara producción)
El código fuente está organizado en src/ siguiendo un diseño modular para separar responsabilidades:
- 📁
commands/- Contiene la lógica de todos los comandos del bot (agrupados en economía, música y diversión). - 📁
events/- Listeners para los eventos de Discord (comoready,messageCreate). - 📁
handlers/- Gestión de interacciones complejas (como botones y menús de las cartas). - 📁
middlewares/- Lógica que se ejecuta antes de ciertos comandos (ej.checkUserpara validar que el usuario existe en la BD). - 📁
services/- Conexión con el backend / API externa para consultas de economía y sistema de cartas. - 📁
components/- Constructores de UI para Discord (Embeds, botones, paginación, etc.). - 📁
utils/ytypes/- Funciones auxiliares genéricas e interfaces de TypeScript.
Los comandos del bot utilizan el prefijo . por defecto.
ping: Comprueba que el bot está activo y su latencia de respuesta.
dailybalance: Reclama 100 monedas diariamente (cada 23 horas).balance: Consulta tu saldo actual.
getcard: Compra y obtiene una carta aleatoria por 100 monedas (tasas de aparición según rareza).mycards: Muestra tu inventario usando menús paginados.show <usuario>: Muestra el inventario de cartas de otro jugador.allcards: Visualiza la enciclopedia de todas las cartas disponibles en el juego.
market: Abre el menú interactivo del mercado donde puedes explorar y comprar cartas publicadas.- (Nota: Los comandos para publicar y gestionar ventas,
sellyremove, están actualmente en desarrollo para la v2.0).
play <canción/URL>: Reproduce música en tu canal de voz.stop: Detiene la reproducción y desconecta al bot.- (Nota: Las otras funciones de música están en desarrollo).