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