IvanCastl

Telegram bot

Mar 12th, 2025
1,009
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.41 KB | Cybersecurity | 0 0
  1. from telethon import TelegramClient, events
  2. import requests
  3. import os
  4.  
  5. # Configurar los valores de api_id y api_hash
  6. api_id = 212700000
  7. api_hash = "a4317b3090cc4dffbfe4a2d1a1da5dadd"
  8.  
  9. # Crear el cliente de Telegram
  10. client = TelegramClient("session_name", api_id, api_hash)
  11.  
  12. # Token del bot y chat ID donde se enviarán los mensajes
  13. bot_token = "6485736942:AAGlVxaxzZT93yC9JG8QE44HijwkhnKfJ8k"
  14.  
  15. # Este es tu chat_id
  16. bot_chat_id = 2044140000
  17.  
  18. # ID del usuario a monitorear en **todos los grupos**
  19. usuario_especifico_id = 2044155555  # Cambia esto por el ID del usuario a rastrear
  20.  
  21. # Función para enviar mensajes o archivos al bot usando la API de Telegram
  22. def send_message_to_bot(message_text, file_path=None):
  23.     if file_path:
  24.         url = f"https://api.telegram.org/bot{bot_token}/sendDocument"
  25.         with open(file_path, "rb") as f:
  26.             files = {"document": f}
  27.             payload = {
  28.                 "chat_id": bot_chat_id,
  29.                 "caption": message_text,  # El texto se agrega como título/caption del archivo
  30.             }
  31.             response = requests.post(url, data=payload, files=files)
  32.             if response.status_code != 200:
  33.                 print(f"Error al enviar archivo: {response.text}")
  34.         os.remove(file_path)  # Eliminar el archivo después de enviarlo
  35.     else:
  36.         url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
  37.         payload = {"chat_id": bot_chat_id, "text": message_text}
  38.         response = requests.post(url, data=payload)
  39.         if response.status_code != 200:
  40.             print(f"Error al enviar mensaje de texto: {response.text}")
  41.  
  42. # Evento para manejar los nuevos mensajes en **todos los chats** y filtrar por usuario
  43. @client.on(events.NewMessage())
  44. async def handler(event):
  45.     # Verificar si el mensaje es del usuario específico
  46.     if event.sender_id != usuario_especifico_id:
  47.         return  # Ignorar mensajes de otros usuarios
  48.  
  49.     message = event.message
  50.     message_text = message.text
  51.     file = message.media
  52.     grupo_nombre = (await event.get_chat()).title  # Obtener el nombre del grupo/canal
  53.     grupo_id = event.chat_id  # ID del grupo/canal
  54.  
  55.     # Obtener información del remitente
  56.     sender = await event.get_sender()
  57.     sender_name = f"{sender.first_name or ''} {sender.last_name or ''}".strip()
  58.     sender_username = f"(@{sender.username})" if sender.username else ""
  59.     sender_info = f"{sender_name} {sender_username}".strip()
  60.  
  61.     if file:
  62.         # Guardar archivo temporalmente
  63.         file_path = await message.download_media(
  64.             file.name if file and hasattr(file, "name") else "temp_file"
  65.         )
  66.         print(f"Archivo descargado en: {file_path}")
  67.         send_message_to_bot(
  68.             f"📂 Nuevo archivo recibido en '{grupo_nombre}' (ID: {grupo_id}) de {sender_info}: {message_text or ''}",
  69.             file_path,
  70.         )
  71.     elif message_text:
  72.         send_message_to_bot(
  73.             f"📩 Nuevo mensaje en '{grupo_nombre}' (ID: {grupo_id}) de {sender_info}: {message_text}"
  74.         )
  75.     else:
  76.         print("Mensaje vacío o no soportado.")
  77.  
  78. async def main():
  79.     # Iniciar sesión
  80.     await client.start()
  81.     print("🔍 Monitoreando mensajes en todos los grupos donde estás...")
  82.  
  83.     # Mantener el cliente en funcionamiento
  84.     await client.run_until_disconnected()
  85.  
  86. if __name__ == "__main__":
  87.     with client:
  88.         client.loop.run_until_complete(main())
  89.  
  90.  
Advertisement
Add Comment
Please, Sign In to add comment