Anti-Sapart_Sajoin_MassSajoin
Parfois sur irc, des operateurs facetieux s'amusent a vous sapart (forcer a quitter un salon), vous sajoin (forcer a joindre un salon), ou pire, vous contraignent a joindre un grand nombre de salons, ce qui a pour effet de vous faire lagguer et vous force a vous deconnecter.
Ce petit script vous permettra de quitter automatiquement le ou les salons d'ou vous serez sajoin, et de rejoindre automatiquement les salons d'ou vous serez sapart, et ce, en evitant le lag.
Le script ne fonctionnait pas, l'erreur est maintenant corrigée.
import xchat __module_name__ = "Anti_Sapart-SaJoin-MassSajoin" __module_version__ = "0.1.2" __module_description__ = "Rejoin automatique sur un sapart et Part auto sur un sajoin" def as_cb(word, word_eol, userdata): leserveur = xchat.get_info('server') try: if word[9] is not None: if word[9][0] is chr(35) and word[8] == "part" and word[0] == ":"+leserveur: print "sapart du salon", word[9] xchat.command("join %s" % (word[9])) if word[9][0] is chr(35) and word[8] == "join" and word[0] == ":"+leserveur: xchat.command("flushq") xchat.command("part %s les SAJOIN cay pas poli" % (word[9])) return xchat.EAT_NONE except IndexError: return xchat.EAT_NONE xchat.hook_server("Notice", as_cb) print "%s %s loaded" % (__module_name__, __module_version__)
Quelques explications :
Le script recupere les notices, verifie qu'une notice envoyée par le serveur (leserveur get_info) correspond bien au format :
* *** You were forced to part #salon
* *** You were forced to join #salon
En cas de sapart, il fait un join sur le salon, et en cas de sajoin, un flushq et un part.
Pourquoi le flushq ? en cas de mass-sajoin (sajoin d'un grand nombre de salons en meme temps), votre client envoit beaucoup de données au serveur, ce qui provoque le lag. Le flushq sert donc a vider la queue d'envoi afin de ne pas avoir a attendre que tous les messages soient envoyés.
Le try / except sert a gerer l'exception "indexrange" sur les notices qui n'ont pas un assez grand nombre de caracteres... Si cette exception n'etait pas gérée, sur une notice d'une personne quelconque avec pour texte un simple "salut" par exemple, le script renverrait une erreur dans xchat de type :
Traceback (most recent call last):
File "/chemin/du/script/AntiSapart.py", line 12, in as_cb
if word[9] is not None:
IndexError: list index out of range
(remarquez que le type d'erreur est specifié dans l'erreur renvoyée, ce qui permet de savoir quel except gerer).

2 commentaires:
Bonjour, la question a 1 millions d'euro, Quelqu'un pourrait me dire comment excecuté le script avec xchat, sous linux ? merci
Salut,
Comme tous les scripts pour xchat, tu le mets dans /home/ton_user/.xchat2/
en lui donnant pour nom ce_que_tu_veux.py
(le .py c'est pour dire que c'est un script python)
Il se chargera tout seul quand tu lanceras xchat (tu peux le voir dans Fenetre / Greffons et Scripts, ou il portera le nom "Anti_Sapart-SaJoin-MassSajoin")
Bien sur, ce script ne fonctionne que lorsqu'un ircop te sajoin ou te sapart d'un salon)
Enregistrer un commentaire