- Python 99.8%
- Dockerfile 0.2%
| bot.py | ||
| config.yaml | ||
| db.py | ||
| db_security.py | ||
| docker-compose.yaml | ||
| Dockerfile | ||
| file_manager.py | ||
| pylint_check.txt | ||
| pylint_report.txt | ||
| README – Comprobador Automático y desinstalador.txt | ||
| README.md | ||
| requirements.txt | ||
| security.py | ||
| synology_client.py | ||
Telegram NAS Bot
Bot de Telegram para gestión y descarga de archivos en NAS Synology (DSM).
🚀 Instalación en DSM con Docker
- Copia el proyecto a una carpeta compartida del NAS (ejemplo:
/volume1/Bot_telegram). - Edita
config.yamlpara personalizar token, admins, rutas, etc (ver sección Configuración). - Construye la imagen Docker:
cd /volume1/Bot_telegram docker build -t telegram-nas-bot . - Levanta el bot con Docker Compose:
Esto usará el archivodocker-compose up -ddocker-compose.yamlincluido.
🛠️ Actualizar el bot
- Para actualizar el código:
git pull docker-compose build docker-compose up -d - Para detener el bot:
docker-compose down - Para ver logs:
docker-compose logs -f
⚙️ Personalización y configuración
Edita el archivo config.yaml antes de iniciar el bot. Ejemplo:
telegram:
token: "TU_TOKEN_DE_BOT"
admin_ids: [12345678]
allowed_user_ids: [12345678, 87654321]
allowed_chat_ids: [-1001234567890]
allowed_thread_ids: [19]
allow_private: true
paths:
base: "/app/telegram_bot_data" # Carpeta de descargas dentro del contenedor
archive: "/app/telegram_bot_data/archive"
db: "/app/telegram_bot_data/telegram_bot.db"
allowed_extensions: ["pdf","zip","jpg","jpeg","png","mp4","mp3","m4a","txt","docx","opus", ...]
notification_dm: true
log_file: "/app/telegram_bot_data/telegram_nas_bot.log"
- token: El token de tu bot de Telegram
- admin_ids: IDs de usuarios con permisos de administración
- allowed_user_ids: IDs de usuarios permitidos para subir/descargar
- allowed_chat_ids: IDs de grupos/chats permitidos
- allowed_thread_ids: IDs de topics permitidos
- allow_private: Permitir uso en chats privados
- paths.base: Carpeta donde se guardan los archivos (debe coincidir con el volumen Docker)
- allowed_extensions: Extensiones permitidas para subir/descargar
- notification_dm: Si el bot debe notificar por DM
📝 Ejemplo de comandos
📥 DESCARGA & BÚSQUEDA
/get — Descargar archivo (ej: /get documento.pdf) /search <término> — Buscar por nombre (ej: /search foto) /searchby <término> — Buscar por tipo (ej: /searchby audio canción) /filterdate — Archivos en rango (ej: /filterdate 2025-01-01 2025-01-31) /listfiles — Listar archivos del usuario (ej: /listfiles Thanatos) /recent [n] — Últimos n archivos (ej: /recent 20) /lastdownloads — Últimas descargas
📊 ESTADÍSTICAS
/stats — Estadísticas generales del sistema /userinfo — Info de un usuario (ej: /userinfo Thanatos) /diskusage — Uso de disco por usuario
🔍 GESTIÓN DE ARCHIVOS
/duplicate [usuario] — Encontrar duplicados (ej: /duplicate Thanatos) /cleanup [usuario] — Eliminar archivos corruptos/pequeños /rename <nuevo_nombre> — Renombrar archivo /move — Mover archivo a otro usuario
🔧 SISTEMA
/status — Uso de disco del path configurado /diskmap — Uso de todos los discos /whoami — Mostrar chat_id y message_thread_id /config — Ver configuración actual /dbbackup — Crear backup de la BD /dbrepair — Optimizar y reparar BD /testconnection — Probar conexión con Synology
👨💼 COMANDOS ADMIN (solo admins)
/listusers — Lista usuarios con archivos /auditlog [límite] — Ver historial del usuario (ej: /auditlog Thanatos 50) /bulkdelete <patrón> [usuario] — Eliminar múltiples (ej: /bulkdelete *.tmp) /zipuser — Comprimir carpeta del usuario /deleteuser — Borrar usuario y archivos /cleanlogs — Limpiar events de la BD /downloadtasks — Mostrar tareas DSM /nashealth — Estado DSM /resourcemonitor — Monitor de recursos /nasnetwork — Info de red /bothealth — Salud del bot /dbbackup — Backup de la BD /dbrepair — Optimizar BD /testconnection — Probar conexión DSM
📚 Ejemplos prácticos
Descargar un archivo específico
/get informe_final.pdf
Buscar todos los archivos de imagen que contengan "vacaciones"
/searchby photo vacaciones
Listar los archivos de un usuario
/listfiles Thanatos
Filtrar archivos por fecha
/filterdate 2025-01-01 2025-01-31
Renombrar un archivo
/rename documento.pdf informe_2025.pdf
Mover un archivo a otro usuario
/move informe_2025.pdf usuario_destino
Eliminar archivos temporales de un usuario
/bulkdelete *.tmp Thanatos
Ver estadísticas generales
/stats
Ver historial de acciones de un usuario
/auditlog Thanatos 50
Comprimir todos los archivos de un usuario en un ZIP
/zipuser Thanatos
🧑💻 Personalizar para otro bot/cuenta
- Cambia el
tokenenconfig.yamlpor el nuevo token de Bot. - Actualiza los
admin_idsyallowed_user_idscon los nuevos IDs de usuarios. - Cambia las rutas en
paths.base,paths.archive,paths.dbsi quieres guardar en otra carpeta. - Reinicia el contenedor:
docker-compose restart
📦 Requisitos
- Docker y Docker Compose instalados en DSM
- Acceso a Internet para el NAS
- Token válido de Bot de Telegram
Para dudas o soporte, revisa /help en el bot o consulta el código fuente.