Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from telethon import TelegramClient, events
- import requests
- import os
- # Configurar los valores de api_id y api_hash
- api_id = 212700000
- api_hash = "a4317b3090cc4dffbfe4a2d1a1da5dadd"
- # Crear el cliente de Telegram
- client = TelegramClient("session_name", api_id, api_hash)
- # Token del bot y chat ID donde se enviarán los mensajes
- bot_token = "6485736942:AAGlVxaxzZT93yC9JG8QE44HijwkhnKfJ8k"
- # Este es tu chat_id
- bot_chat_id = 2044140000
- # ID del usuario a monitorear en **todos los grupos**
- usuario_especifico_id = 2044155555 # Cambia esto por el ID del usuario a rastrear
- # Función para enviar mensajes o archivos al bot usando la API de Telegram
- def send_message_to_bot(message_text, file_path=None):
- if file_path:
- url = f"https://api.telegram.org/bot{bot_token}/sendDocument"
- with open(file_path, "rb") as f:
- files = {"document": f}
- payload = {
- "chat_id": bot_chat_id,
- "caption": message_text, # El texto se agrega como título/caption del archivo
- }
- response = requests.post(url, data=payload, files=files)
- if response.status_code != 200:
- print(f"Error al enviar archivo: {response.text}")
- os.remove(file_path) # Eliminar el archivo después de enviarlo
- else:
- url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
- payload = {"chat_id": bot_chat_id, "text": message_text}
- response = requests.post(url, data=payload)
- if response.status_code != 200:
- print(f"Error al enviar mensaje de texto: {response.text}")
- # Evento para manejar los nuevos mensajes en **todos los chats** y filtrar por usuario
- @client.on(events.NewMessage())
- async def handler(event):
- # Verificar si el mensaje es del usuario específico
- if event.sender_id != usuario_especifico_id:
- return # Ignorar mensajes de otros usuarios
- message = event.message
- message_text = message.text
- file = message.media
- grupo_nombre = (await event.get_chat()).title # Obtener el nombre del grupo/canal
- grupo_id = event.chat_id # ID del grupo/canal
- # Obtener información del remitente
- sender = await event.get_sender()
- sender_name = f"{sender.first_name or ''} {sender.last_name or ''}".strip()
- sender_username = f"(@{sender.username})" if sender.username else ""
- sender_info = f"{sender_name} {sender_username}".strip()
- if file:
- # Guardar archivo temporalmente
- file_path = await message.download_media(
- file.name if file and hasattr(file, "name") else "temp_file"
- )
- print(f"Archivo descargado en: {file_path}")
- send_message_to_bot(
- f"📂 Nuevo archivo recibido en '{grupo_nombre}' (ID: {grupo_id}) de {sender_info}: {message_text or ''}",
- file_path,
- )
- elif message_text:
- send_message_to_bot(
- f"📩 Nuevo mensaje en '{grupo_nombre}' (ID: {grupo_id}) de {sender_info}: {message_text}"
- )
- else:
- print("Mensaje vacío o no soportado.")
- async def main():
- # Iniciar sesión
- await client.start()
- print("🔍 Monitoreando mensajes en todos los grupos donde estás...")
- # Mantener el cliente en funcionamiento
- await client.run_until_disconnected()
- if __name__ == "__main__":
- with client:
- client.loop.run_until_complete(main())
Advertisement
Add Comment
Please, Sign In to add comment