Skip to content
Amaya0910Public

About

Si quieres usar este bot puedes desplegarlo en algún sitio de hosting y crear tu .env

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

48 Commits

Folders and files

Repository files navigation

Bump Bot

Bot de Discord en Python que ayuda a gestionar un servidor:

  • 🔔 Recordatorio de bump: detecta el /bump de Disboard y avisa cuando termina el enfriamiento.
  • ⏰ Alarmas: avisos rápidos tipo temporizador (5m, 1h20m).
  • 😹 Memes automáticos: imágenes o videos, sin repetir, publicados por webhook.
  • 📅 Contador diario: días restantes y porcentaje de avance hacia el 1 de agosto de 2027.

Funciona en varios servidores a la vez, cada uno con su propia configuración.

Comandos

Los marcados con 🔒 requieren el permiso Administrar servidor.

Comando Qué hace
/bump-config canal <#canal> 🔒 Canal donde se avisa que ya se puede bumpear
/bump-config rol [@rol] 🔒 Rol a mencionar en el aviso (sin rol, lo quita)
/bump-config ver Muestra la configuración de bump
/alarm <duración> [motivo] Te avisa en el canal (ej. 30s, 5m, 1h20m, máx. 24h)
/setmemechannel <#canal> [hora] [cantidad] [subreddit] [tipo] 🔒 Configura los memes automáticos
/memenow 🔒 Envía un meme ahora, según el tipo configurado
/memevideo [comunidad] 🔒 Envía un meme en video ahora (comunidad de Lemmy opcional, ej. memes@lemmy.world)
/countdown-config canal <#canal> 🔒 Canal del contador diario (2:00 p.m. Colombia)
/countdown-config ver Muestra el canal del contador
/countdown Muestra el contador en cualquier momento
/configuracion Resumen de toda la configuración del servidor

Memes: parámetros de /setmemechannel

Parámetro Descripción Por defecto
hora Hora del primer meme (0-23, UTC) 12
cantidad Memes al día (1-100), repartidos en partes iguales 1
subreddit Subreddit fijo (imágenes) o comunidad de Lemmy nombre@instancia (videos); si no, elige al azar aleatorio
tipo imagen, video o mixto imagen

Ejemplo: /setmemechannel canal:#memes hora:9 cantidad:3 tipo:mixto publica a las 09:00, 17:00 y 01:00 UTC.

Instalación

Necesitas Python 3.10+ y una app de Discord creada en el Developer Portal con el intent Message Content activado. El bot también necesita el permiso Administrar webhooks.

git clone https://github.com/Amaya0910/Chomosuke.git
cd Chomosuke
python -m venv venv
source venv/bin/activate   # En Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env       # En Windows: copy .env.example .env
python bot.py

Edita el .env con tu token:

Variable Descripción Por defecto
DISCORD_TOKEN Token del bot (obligatorio) —
TIEMPO_ENFRIAMIENTO Segundos de enfriamiento del bump 7200
DB_PATH Archivo de la base de datos SQLite bumpbot.db
EMOJI_BUMP_ID ID de un emoji personalizado para el aviso 🎉
EMOJI_ANIMADO true si ese emoji es animado false
LEMMY_COMUNIDADES Comunidades de Lemmy para los videos, separadas por coma (nombre@instancia) memes, lemmyshitpost y funny de lemmy.world

Estructura

bot.py        Arma todo y lo conecta (composition root)
config.py     Lee las variables de entorno
db/           Acceso a datos (SQLite)
services/     Lógica sin Discord: temporizadores, memes, contador...
cogs/         Comandos y eventos de Discord

Los cogs dependen de interfaces (ABC), no de implementaciones concretas, y todo se inyecta desde bot.py. Así se puede cambiar SQLite o una fuente de memes sin tocar el resto.

Cosas a tener en cuenta

  • Las alarmas viven en memoria: si el bot se reinicia, se pierden. El resto (configuración y temporizador de bump) se guarda en SQLite.
  • Los videos vienen de comunidades de Lemmy, porque Reddit bloquea las peticiones sin credenciales aprobadas (error 403). Hay menos videos y menos contenido en español que en Reddit; elige las comunidades con LEMMY_COMUNIDADES en el .env.
  • Cuando no llega un meme, el bot distingue dos casos: no hay memes nuevos (la fuente respondió bien, pero no tiene nada sin enviar) y la fuente falló (error de red o del servicio). El log indica cuántos posts se revisaron, cuántos eran videos y cuántos ya se habían enviado.
  • Cada servidor guarda sus últimos 200 memes para no repetirlos.

Hosting

Funciona en hosts gratuitos tipo bot-hosting.net. SQLite guarda su archivo en el disco del contenedor, así que no necesitas una base de datos aparte. Configura las variables desde el panel del host, nunca en el código, y renueva el servicio cuando lo pida.

About

Si quieres usar este bot puedes desplegarlo en algún sitio de hosting y crear tu .env

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages