[xchat] [perl] anti-kick + away

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 813 fois - Téléchargée 15 fois

Contenu du snippet

Étant donné qu' il n' existe pas beaucoup de scripts en perl pour Xchat ( 3 apparemment ),
je mets le miens en ligne ...
Il existe déjà un script Away, mais qui utilise l' ancienne lib IRC, alors que ce script utilise
la lib Xchat ...
Voila ...

+

Source / Exemple :


#!/bin/perl -w

Xchat::register("Script perso", "1.0", "redefinition de /away + anti-kick");

# On met un hook sur la commande "away" et un sur l' evenement "you kicked"
Xchat::hook_command("away", cmd_away);
Xchat::hook_print("You Kicked", cmd_kicked);
my ($hmsg, $hnot);

# Lorsque l' on tape "away" ...
sub cmd_away{
	my $name;
	# Si l' on est pas encore away, alors
	if((Xchat::get_info(away)) eq ""){
		# on recupere le nick de l' utilisateur
		$name = Xchat::get_info(nick);
		# on envoie la commande "/nick pseudo[away]"
		Xchat::command("nick ".$name."[away]");
		# on mets l' utilisateur en mode away
		Xchat::command("away");
		# on met un hook sur les message des chan et sur les notices ...
		$hmsg = Xchat::hook_server("PRIVMSG", cmd_msg);
		$hnot = Xchat::hook_server("NOTICE", cmd_not);

	}else{
	# Sinon ... on recupere le pseudo de l' utilisateur
		$name = Xchat::get_info(nick);
		# On suprimme le "[away]" a la fin
		# on change le nick et on se remet en ligne
		Xchat::command("nick ".substr($name, 0, length($name)-6));
		Xchat::command("back");
		# on supprime les hooks sur les messages recus sur les chans
		Xchat::unhook($hmsg);
		Xchat::unhook($hnot);
	}
	return Xchat::EAT_NONE;
}

# lorsque l' on est kické
sub cmd_kicked{
	# On affiche la phrase tu as été kické de "nom du chan"
	Xchat::print("Tu as été kické !!!! de $_[0][1]\r\nReconnection...");
	# on se reconnecte au chan immediatement
	Xchat::command("join ".$_[0][1]);
	# on envoie une notice a celui qui nous a kické pour lui dire qu' on est pas content :p
	Xchat::command("notice ".$_[0][2]." Plus jamais tu me kick toi ... :@");
	return Xchat::EAT_NONE;
}

# lorsque l' on est away et que qqun envoie un message sur le chan ...
sub cmd_msg{
	my ($netw, $serv);
	# Si le message comprends les 4 premieres lettres du pseudo ( pour moi "gero" a changer en fonction du votre ...)
	# et que ce n' est pas vous qui avez envoyé le msg
	if(($_[1][3] =~ m/gero/i)&&(!($_[0][0] =~ m/Xchat::get_info(nick)/))){
		$netw = Xchat::get_info(network);
		$serv = Xchat::get_info(server);
		# si le message n' est pas un message en PV, alors on affiche le message dans l' onglet general du serveur
		if($_[0][2] ne Xchat::get_info(nick)){
			Xchat::print("Chan:$_[0][2]::$_[0][0]::$_[1][3]\r\n", $netw, $serv);
		}
	}
	# On retourne toutes les infos pour que l' evenement suive son cours...
	return Xchat::EAT_NONE;
}
#lorsque l' on est away et que l' on recois une notice, on l' affiche egalement dans l'onglet general du serveur
sub cmd_not{
	my ($netw, $serv);
	$netw = Xchat::get_info(network);
	$serv = Xchat::get_info(server);
	Xchat::print("NOTICE::Chan:$_[0][2]::$_[0][0]::$_[1][3]\r\n", $netw, $serv);
	return Xchat::EAT_NONE;
}

# Au demarrage du script, on indique que le script est chagé.
Xchat::print("Script perl chargé !");

A voir également

Ajouter un commentaire

Commentaires

Messages postés
12
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
9 février 2012

Salut TRHILK1L.
Je suppose qu'au bout de tant de temps tu t'en fiches un peu mais
je pense que cela vient de ta version d' Xchat. En effet, comme je l'ai indiqué
dans l'introduction, j'utilise la nouvelle librairie, fournie avec Xchat 2.0.8 ou sup.
Peut-être le problème vient-il de là ?
Messages postés
1
Date d'inscription
jeudi 11 novembre 2010
Statut
Membre
Dernière intervention
27 décembre 2010

Salut
genial le script mais chez moi perso il ne va pas :D

Il m'indique ceci et vu que je ne connais pas le perl je ne vois pas :)

Error in command callback Undefined subroutine &Xchat::Script::cdcdc::sprint_f called at (eval 11) line 75.
Messages postés
12
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
9 février 2012

Effectivement UAIP :p , tu réfléchis apparemment un peu plus sur mes propos ( certes un peu vagues ) que TEBECO qui s' empresse de vouloir ajouter un commentaire assez inutile sur la description ( aucun rapport avec le fonctionnement de mon script n' est-ce pas TEBECO ? ).
TEBECO :
- 1 Je parlais comme l' a si bien fait remarquer UAIP des sources de CE site.
- 2 Je sais encore utiliser un moteur de recherches, merci de t' en soucier.
- 3 Si tu as un commentaire sur ma source plutôt que sur le titre, la description, le nombre de ligne, mes fautes d' orthographes, mon pseudo ou autre chose qui - au final - ne m' intéresses pas trop, je suis preneur...
Merci quand même d' avoir pris du temps pour t' intéresser a ma publication. A moins que tu ne te sois arrêté à la description ?

UAIP : Oui, en effet, de toute facon il va falloir que je me penche sur l' extraction du nom de l' auteur de l' envoie du msg, parce que c' est visuellement assez lourd l' affichage - host compris - de l' utilisateur... Si en plus le script est plus rapide, ce ne sera que tout benef...

Au passage, si qqun a une idée sur le genre de fonction utile que je pourrais rajouter au script, ou une optimisation du code ... je suis preneur, je suis un peu rouillé en perl ...

Et est-ce que qqun sait utiliser la lib tkx ? je voudrais afficher les messages dans une fenêtre plutôt que dans l' onglet général du serveur, mais en utilisant Tk, le script bloque Xchat complètement lors de l' instruction MainLoop(); ... :-s

Merci
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011

Il devait surement parler de ce site, qui est censé être tourné vers l'IRC en général et tous ses clients dérivés (mIRC, Kvirc, XChat, etc) mais qui ne contient pratiquement que des codes en mIRC scripting.
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

"Étant donné qu' il n' existe pas beaucoup de scripts en perl pour Xchat ( 3 apparemment )"

xD dommage que la recherche soit pas fructueuse plutôt :

http://xchat.org/cgi-bin/disp.pl

le site même du client est probablement un des plus fournit en exemple de code
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.