Un bot de Telegram que recomienda audiolibros diarios desde tu servidor Audiobookshelf. Perfecto para comunidades literarias.
- ✅ Publicación automática diaria de audiolibros
- ✅ Portada, metadatos y reseña en cada publicación
- ✅ Selección aleatoria de tu biblioteca
- ✅ Configuración flexible por variables de entorno
- ✅ Registro detallado de actividades (logs)
- ✅ Optimizado para Docker y entornos cloud
- Docker Engine 20.10+
- Docker Compose 2.5+
- Servidor Audiobookshelf accesible
git clone https://github.com/gabrielbaute/abs-news-telegrambot
cd abs-news-telegrambot- Copia el archivo de ejemplo y edítalo:
cp example.env .env
nano .env- Configura estas variables esenciales:
# Audiobookshelf
SERVER_URL=http://tuservidor:13378
API_KEY=tu_api_key_audiobookshelf
# Telegram
TELEGRAM_BOT_TOKEN=token_del_bot
TELEGRAM_CHAT_ID=id_del_grupo
# Programación
SCHEDULER_TIME_HOUR=9
SCHEDULER_TIME_MINUTE=0
TZ=America/CaracasPrimero que nada, asegúrate de crear el directorio para los logs y darle permisos:
mkdir -p logs
sudo chown -R 1000:1000 logsLuego, procede a construir la imagen y levantar el contenedor:
# Construir la imagen
docker-compose build
# Iniciar el servicio
docker-compose up -d
# Ver logs
docker-compose logs -faudiobookshelf-bot/
├── docker-compose.yml
├── Dockerfile
├── .env
├── requirements.txt
├── main.py
└── src/
├── bot/ # Lógica del bot de Telegram
├── config/ # Configuración y logging
└── core/ # Conexión con Audiobookshelf
Edita el trigger en src/bot/scheduler.py:
# Ejemplo para enviar a las 9 AM y 5 PM
trigger = CronTrigger(hour='9,17', minute=0)| Variable | Descripción | Valor por defecto |
|---|---|---|
LOG_LEVEL |
Nivel de detalle de logs | INFO |
COVER_ASPECT_RATIO |
Proporción de portadas | 1 |
Los logs se guardan en:
- Archivo:
./logs/bot_YYYY-MM-DD.log - Docker:
docker-compose logs -f
Ejemplo de entrada de log:
2025-05-18 09:00:03 - INFO - Libro enviado: "El Principito" (ID: af4d3727...)
- Haz fork del proyecto
- Crea tu rama (
git checkout -b feature/nueva-funcionalidad) - Haz commit de tus cambios (
git commit -am 'Añade x funcionalidad') - Haz push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
Error: 'NoneType' object is not subscriptable
- Solución: Verifica que todos los libros tengan metadatos completos en Audiobookshelf
Error: Problemas de conexión con la API
- Verifica:
SERVER_URLaccesible desde el contenedorAPI_KEYcon permisos suficientes
MIT License - Copyright (c) 2025 [Gabriel Bauute]