Untitled
unknown
plain_text
a month ago
2.6 kB
3
Indexable
from telethon import TelegramClient import asyncio from datetime import datetime, timedelta import pytz # 🔹 Remplace ces infos par tes identifiants API Telegram 🔹 API_ID = "TON_API_ID" API_HASH = "TON_API_HASH" PHONE_NUMBER = "+123456789" # 🔹 Liste des groupes avec leurs @usernames 🔹 GROUP_USERNAMES = ["@nom_du_groupe1", "@nom_du_groupe2"] # Remplace par les vrais noms # 🔹 Intervalle entre chaque envoi (en minutes) 🔹 INTERVAL = 5 # 🔹 Heure de fin (format HH:MM en heure locale) 🔹 END_TIME = "18:00" # 🔹 Fuseau horaire (modifie si besoin, ex: "Europe/London") 🔹 LOCAL_TIMEZONE = "Europe/Paris" # 🔹 ID du chat "Messages enregistrés" (c'est toujours "me") 🔹 SAVED_MESSAGES_CHAT = "me" # Initialisation du client Telegram client = TelegramClient("session_name", API_ID, API_HASH) async def get_last_saved_message(): """Récupère le dernier message de 'Messages enregistrés'.""" async for message in client.iter_messages(SAVED_MESSAGES_CHAT, limit=1): return message # Retourne le dernier message trouvé return None # Si aucun message n'est trouvé async def schedule_messages(): await client.start(PHONE_NUMBER) # Gestion du fuseau horaire local_tz = pytz.timezone(LOCAL_TIMEZONE) utc_tz = pytz.utc now = datetime.now(local_tz) end_time = datetime.strptime(END_TIME, "%H:%M").replace(year=now.year, month=now.month, day=now.day) end_time = local_tz.localize(end_time).astimezone(utc_tz) if end_time < now: end_time += timedelta(days=1) next_send_time = now.astimezone(utc_tz) # Récupérer le dernier message de "Messages enregistrés" last_message = await get_last_saved_message() if not last_message: print("❌ Aucun message trouvé dans 'Messages enregistrés'. Annulation.") return print(f"📌 Message récupéré : {last_message.text[:50]}...") # Affiche un extrait du message while next_send_time <= end_time: for group_username in GROUP_USERNAMES: try: entity = await client.get_entity(group_username) await client.forward_messages(entity, last_message, schedule=next_send_time) print(f"✅ Message transféré vers {group_username} à {next_send_time.strftime('%H:%M:%S')} UTC") except Exception as e: print(f"❌ Erreur avec {group_username}: {e}") next_send_time += timedelta(minutes=INTERVAL) print("🎯 Tous les messages ont été planifiés avec succès.") # Lancer le script with client: client.loop.run_until_complete(schedule_messages())
Editor is loading...
Leave a Comment