ferdj40

Bot de Reposteo

Jul 22nd, 2026 (edited)
13,799
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 KB | None | 0 0
  1. # Bot de Reposteo de Archivos para Telegram
  2.  
  3. Bot que repostea automáticamente archivos (ZIP, RAR, 7Z, 3MF, STL, etc.) de un canal a otro usando Telethon.
  4.  
  5. ## 🚀 Características
  6.  
  7. - ✅ Reposteo automático de archivos
  8. - ✅ Soporta múltiples formatos: `.zip`, `.rar`, `.7z`, `.tar`, `.gz`, `.3mf`, `.stl`
  9. - ✅ Preserva los captions originales
  10. - ✅ Sistema de logging detallado
  11. - ✅ Fácil de configurar
  12.  
  13. ## 📋 Requisitos Previos
  14.  
  15. 1. **Python 3.8 o superior**
  16. 2. **Cuenta de Telegram**
  17. 3. **API ID y API Hash** (de https://my.telegram.org)
  18. 4. **Bot Token** (de @BotFather)
  19.  
  20. ## 🔧 Instalación
  21.  
  22. ### Paso 1: Clonar o descargar el proyecto
  23.  
  24. ```bash
  25. # Si usas git
  26. git clone <tu-repositorio>
  27. cd repost-bot
  28.  
  29. # O simplemente descarga los archivos
  30. ```
  31.  
  32. ### Paso 2: Instalar dependencias
  33.  
  34. ```bash
  35. pip install -r requirements.txt
  36. ```
  37.  
  38. ### Paso 3: Obtener credenciales
  39.  
  40. #### A) Obtener API_ID y API_HASH
  41.  
  42. 1. Ve a https://my.telegram.org
  43. 2. Inicia sesión con tu número de teléfono
  44. 3. Ve a "API Development Tools"
  45. 4. Crea una nueva aplicación si no tienes una
  46. 5. Copia el `api_id` y `api_hash`
  47.  
  48. #### B) Crear el bot y obtener BOT_TOKEN
  49.  
  50. 1. Abre Telegram y busca **@BotFather**
  51. 2. Envía `/newbot`
  52. 3. Sigue las instrucciones:
  53. - Elige un nombre para tu bot (ej: "Mi Repost Bot")
  54. - Elige un username (debe terminar en 'bot', ej: "mi_repost_bot")
  55. 4. Copia el **token** que te da BotFather (algo como `1234567890:ABCdefGHIjklMNOpqrsTUVwxyz`)
  56.  
  57. #### C) Agregar el bot a tus canales
  58.  
  59. 1. Ve al **canal origen** (donde se publican los archivos)
  60. - Haz clic en el nombre del canal → Administradores → Agregar administrador
  61. - Busca tu bot y agrégalo
  62. - **Permisos necesarios**: "Publicar mensajes" (opcional pero recomendado)
  63.  
  64. 2. Ve al **canal destino** (donde se repostearán los archivos)
  65. - Haz clic en el nombre del canal → Administradores → Agregar administrador
  66. - Busca tu bot y agrégalo
  67. - **Permisos necesarios**: "Publicar mensajes" ✅
  68.  
  69. #### D) Obtener los IDs de los canales
  70.  
  71. **Opción 1: Usar el username del canal**
  72. ```python
  73. SOURCE_CHANNEL = '@mi_canal_origen'
  74. TARGET_CHANNEL = '@mi_canal_destino'
  75. ```
  76.  
  77. **Opción 2: Usar el ID numérico**
  78. - Puedes usar bots como @userinfobot para obtener el ID
  79. - O reenviar un mensaje del canal a @userinfobot
  80. - El ID será algo como `-1001234567890`
  81.  
  82. ```python
  83. SOURCE_CHANNEL = -1001234567890
  84. TARGET_CHANNEL = -1009876543210
  85. ```
  86.  
  87. ### Paso 4: Configurar el bot
  88.  
  89. Edita el archivo `repost_bot.py` y completa:
  90.  
  91. ```python
  92. API_ID = 12345678 # Tu API ID (número)
  93. API_HASH = 'tu_api_hash_aqui' # Tu API Hash
  94. BOT_TOKEN = '1234567890:ABCdefGHIjklMNOpqrsTUVwxyz' # Token del bot
  95.  
  96. SOURCE_CHANNEL = '@canal_origen' # Canal de donde se toman los archivos
  97. TARGET_CHANNEL = '@canal_destino' # Canal donde se repostean
  98. ```
  99.  
  100. ### Paso 5: Ejecutar el bot
  101.  
  102. ```bash
  103. python repost_bot.py
  104. ```
  105.  
  106. Deberías ver algo como:
  107. ```
  108. 2024-02-09 10:30:00 - __main__ - INFO - 🤖 Iniciando bot...
  109. 2024-02-09 10:30:01 - __main__ - INFO - ✅ Bot conectado: @mi_repost_bot
  110. 2024-02-09 10:30:01 - __main__ - INFO - 📡 Escuchando mensajes en: @canal_origen
  111. 2024-02-09 10:30:01 - __main__ - INFO - 📤 Reposteando a: @canal_destino
  112. 2024-02-09 10:30:01 - __main__ - INFO - 📁 Extensiones permitidas: .zip, .rar, .7z, .tar, .gz, .3mf, .stl
  113. 2024-02-09 10:30:01 - __main__ - INFO - 🟢 Bot funcionando. Presiona Ctrl+C para detener.
  114. ```
  115.  
  116. ## 🎯 Uso
  117.  
  118. 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.
  119.  
  120. ### Extensiones soportadas por defecto:
  121. - Archivos comprimidos: `.zip`, `.rar`, `.7z`, `.tar`, `.gz`
  122. - Archivos 3D: `.3mf`, `.stl`
  123.  
  124. ### Agregar más extensiones
  125.  
  126. Edita la variable `ALLOWED_EXTENSIONS` en el código:
  127.  
  128. ```python
  129. ALLOWED_EXTENSIONS = ('.zip', '.rar', '.7z', '.tar', '.gz', '.3mf', '.stl', '.pdf', '.dwg')
  130. ```
  131.  
  132. ## 🐛 Solución de Problemas
  133.  
  134. ### Error: "Cannot find any entity corresponding to..."
  135. - Verifica que los IDs de los canales sean correctos
  136. - Asegúrate de que el bot sea administrador en ambos canales
  137.  
  138. ### Error: "The bot doesn't have enough rights..."
  139. - El bot necesita permisos de administrador con "Publicar mensajes" activado
  140.  
  141. ### El bot no repostea nada
  142. - Verifica que los archivos tengan la extensión correcta
  143. - Revisa los logs para ver si hay errores
  144. - Asegúrate de que el bot esté corriendo
  145.  
  146. ### Error de autenticación
  147. - Verifica que API_ID, API_HASH y BOT_TOKEN sean correctos
  148. - Elimina el archivo `bot_session.session` y vuelve a intentar
  149.  
  150. ## 📝 Notas
  151.  
  152. - El bot usa `forward_messages` para preservar el mensaje original
  153. - Los captions se mantienen intactos
  154. - El bot solo procesa archivos nuevos (después de iniciarse)
  155. - Para detener el bot, presiona `Ctrl+C`
  156.  
  157. ## 🔒 Seguridad
  158.  
  159. - **NO compartas** tu `API_HASH` ni `BOT_TOKEN`
  160. - Considera usar variables de entorno para datos sensibles:
  161.  
  162. ```python
  163. import os
  164. API_ID = os.getenv('API_ID')
  165. API_HASH = os.getenv('API_HASH')
  166. BOT_TOKEN = os.getenv('BOT_TOKEN')
  167. ```
  168.  
  169. ## 📄 Licencia
  170.  
  171. Este proyecto es de código abierto y está disponible bajo tu licencia preferida.
  172.  
  173. ## 🤝 Contribuciones
  174.  
  175. Las contribuciones son bienvenidas. Si encuentras un bug o tienes una sugerencia, abre un issue.
Advertisement