# Bot de Reposteo de Archivos para Telegram Bot que repostea automáticamente archivos (ZIP, RAR, 7Z, 3MF, STL, etc.) de un canal a otro usando Telethon. ## 🚀 Características - ✅ Reposteo automático de archivos - ✅ Soporta múltiples formatos: `.zip`, `.rar`, `.7z`, `.tar`, `.gz`, `.3mf`, `.stl` - ✅ Preserva los captions originales - ✅ Sistema de logging detallado - ✅ Fácil de configurar ## 📋 Requisitos Previos 1. **Python 3.8 o superior** 2. **Cuenta de Telegram** 3. **API ID y API Hash** (de https://my.telegram.org) 4. **Bot Token** (de @BotFather) ## 🔧 Instalación ### Paso 1: Clonar o descargar el proyecto ```bash # Si usas git git clone cd repost-bot # O simplemente descarga los archivos ``` ### Paso 2: Instalar dependencias ```bash pip install -r requirements.txt ``` ### Paso 3: Obtener credenciales #### A) Obtener API_ID y API_HASH 1. Ve a https://my.telegram.org 2. Inicia sesión con tu número de teléfono 3. Ve a "API Development Tools" 4. Crea una nueva aplicación si no tienes una 5. Copia el `api_id` y `api_hash` #### B) Crear el bot y obtener BOT_TOKEN 1. Abre Telegram y busca **@BotFather** 2. Envía `/newbot` 3. Sigue las instrucciones: - Elige un nombre para tu bot (ej: "Mi Repost Bot") - Elige un username (debe terminar en 'bot', ej: "mi_repost_bot") 4. Copia el **token** que te da BotFather (algo como `1234567890:ABCdefGHIjklMNOpqrsTUVwxyz`) #### C) Agregar el bot a tus canales 1. Ve al **canal origen** (donde se publican los archivos) - Haz clic en el nombre del canal → Administradores → Agregar administrador - Busca tu bot y agrégalo - **Permisos necesarios**: "Publicar mensajes" (opcional pero recomendado) 2. Ve al **canal destino** (donde se repostearán los archivos) - Haz clic en el nombre del canal → Administradores → Agregar administrador - Busca tu bot y agrégalo - **Permisos necesarios**: "Publicar mensajes" ✅ #### D) Obtener los IDs de los canales **Opción 1: Usar el username del canal** ```python SOURCE_CHANNEL = '@mi_canal_origen' TARGET_CHANNEL = '@mi_canal_destino' ``` **Opción 2: Usar el ID numérico** - Puedes usar bots como @userinfobot para obtener el ID - O reenviar un mensaje del canal a @userinfobot - El ID será algo como `-1001234567890` ```python SOURCE_CHANNEL = -1001234567890 TARGET_CHANNEL = -1009876543210 ``` ### Paso 4: Configurar el bot Edita el archivo `repost_bot.py` y completa: ```python API_ID = 12345678 # Tu API ID (número) API_HASH = 'tu_api_hash_aqui' # Tu API Hash BOT_TOKEN = '1234567890:ABCdefGHIjklMNOpqrsTUVwxyz' # Token del bot SOURCE_CHANNEL = '@canal_origen' # Canal de donde se toman los archivos TARGET_CHANNEL = '@canal_destino' # Canal donde se repostean ``` ### Paso 5: Ejecutar el bot ```bash python repost_bot.py ``` Deberías ver algo como: ``` 2024-02-09 10:30:00 - __main__ - INFO - 🤖 Iniciando bot... 2024-02-09 10:30:01 - __main__ - INFO - ✅ Bot conectado: @mi_repost_bot 2024-02-09 10:30:01 - __main__ - INFO - 📡 Escuchando mensajes en: @canal_origen 2024-02-09 10:30:01 - __main__ - INFO - 📤 Reposteando a: @canal_destino 2024-02-09 10:30:01 - __main__ - INFO - 📁 Extensiones permitidas: .zip, .rar, .7z, .tar, .gz, .3mf, .stl 2024-02-09 10:30:01 - __main__ - INFO - 🟢 Bot funcionando. Presiona Ctrl+C para detener. ``` ## 🎯 Uso El bot funciona automáticamente. Cuando se publique un archivo con extensión permitida en el canal origen, será reposteado automáticamente al canal destino. ### Extensiones soportadas por defecto: - Archivos comprimidos: `.zip`, `.rar`, `.7z`, `.tar`, `.gz` - Archivos 3D: `.3mf`, `.stl` ### Agregar más extensiones Edita la variable `ALLOWED_EXTENSIONS` en el código: ```python ALLOWED_EXTENSIONS = ('.zip', '.rar', '.7z', '.tar', '.gz', '.3mf', '.stl', '.pdf', '.dwg') ``` ## 🐛 Solución de Problemas ### Error: "Cannot find any entity corresponding to..." - Verifica que los IDs de los canales sean correctos - Asegúrate de que el bot sea administrador en ambos canales ### Error: "The bot doesn't have enough rights..." - El bot necesita permisos de administrador con "Publicar mensajes" activado ### El bot no repostea nada - Verifica que los archivos tengan la extensión correcta - Revisa los logs para ver si hay errores - Asegúrate de que el bot esté corriendo ### Error de autenticación - Verifica que API_ID, API_HASH y BOT_TOKEN sean correctos - Elimina el archivo `bot_session.session` y vuelve a intentar ## 📝 Notas - El bot usa `forward_messages` para preservar el mensaje original - Los captions se mantienen intactos - El bot solo procesa archivos nuevos (después de iniciarse) - Para detener el bot, presiona `Ctrl+C` ## 🔒 Seguridad - **NO compartas** tu `API_HASH` ni `BOT_TOKEN` - Considera usar variables de entorno para datos sensibles: ```python import os API_ID = os.getenv('API_ID') API_HASH = os.getenv('API_HASH') BOT_TOKEN = os.getenv('BOT_TOKEN') ``` ## 📄 Licencia Este proyecto es de código abierto y está disponible bajo tu licencia preferida. ## 🤝 Contribuciones Las contribuciones son bienvenidas. Si encuentras un bug o tienes una sugerencia, abre un issue.