# 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 <tu-repositorio>
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.