47 lines
2.0 KiB
Python
47 lines
2.0 KiB
Python
import asyncio
|
|
import argparse
|
|
from urllib.parse import urlparse
|
|
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 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())
|