import asyncio import argparse import sys import os from urllib.parse import urlparse # Ajouter le chemin de l'environnement virtuel venv_path = os.path.join(os.path.dirname(__file__), 'env', 'lib', 'python3.10', 'site-packages') if venv_path not in sys.path: sys.path.insert(0, venv_path) from pytmi import Client # Assurez-vous que c'est le nom correct de votre module et qu'il est correctement installé. async def send_message_to_twitch_stream(pseudo, token, stream_url, message): parsed_url = urlparse(stream_url) channel = parsed_url.path.lstrip('/') try: async with Client() as client: try: print("Tentative de login") await client.login_oauth(token, pseudo) print("Tentative de join") await client.join(channel) print("Tentative d'envoi de message") await client.send_message(message) print("Message envoyé avec succès.") # Attendre un peu avant de se déconnecter pour s'assurer que le message est envoyé await asyncio.sleep(2) print("Déconnexion...") except AssertionError as e: print(f"Erreur d'assertion (client déjà connecté ou paramètres invalides): {e}") print("Vérifiez que le token et le pseudo sont corrects") except Exception as e: print(f"Erreur lors de l'interaction avec Twitch: {type(e).__name__}, {e}") except AttributeError as e: if "'Client' object has no attribute 'part'" in str(e): print("Message envoyé avec succès. (Erreur de déconnexion ignorée - bug connu de pytmi)") else: print(f"Erreur AttributeError: {e}") except Exception as e: print(f"Erreur inattendue: {type(e).__name__}, {e}") async def main(): parser = argparse.ArgumentParser() parser.add_argument('-pseudo', type=str, required=True, help='Pseudo name account') parser.add_argument('-token', type=str, required=True, help='Token oauth') parser.add_argument('-message', type=str, required=True, help='Message to send') parser.add_argument('-twitchname', type=str, required=True, help='Twitch channel name') args = parser.parse_args() stream_url = "https://www.twitch.tv/"+args.twitchname await send_message_to_twitch_stream(pseudo=args.pseudo, token=args.token, stream_url=stream_url, message=args.message) if __name__ == "__main__": asyncio.run(main())