begin process at 2010 03 21 18:56:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > [XCHAT] [PERL] ANTI-KICK + AWAY

[XCHAT] [PERL] ANTI-KICK + AWAY


 Information sur la source

 Description

É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

  • #!/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é !");
#!/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é !");



 Sources du même auteur

Source avec une capture [XCHAT] ANTI KICK / AWAY C++

 Sources de la même categorie

Source avec Zip Source avec une capture MODULE DE TÉLÉCHARGEMENT DE FICHIER BASIQUE (SYNCHRONE / ASY... par Renfield
Source avec Zip Source avec une capture NAVIGATEUR INTERNET MDI MULTIFENETRES par Ant95
Source avec Zip Source avec une capture UPLOAD FTP VB 6 par Onin42
Source avec Zip Source avec une capture FAVORIS URL par Le Pivert
Source avec Zip Source avec une capture DEVSSH CLIENT SFTP/SSH par iblsysteme

 Sources en rapport avec celle ci

Source avec une capture [XCHAT] ANTI KICK / AWAY C++ par GeroXXXX
Source avec une capture AWAY BY MSK par devorZ
[XCHAT] COMMANDES CHR/ASC par 0x586e
Source avec une capture TRIGGER PERL XCHAT par epitaph
XCHAT - SCRIPT PERL AWAY par lumesh

Commentaires et avis

Commentaire de uaip le 02/11/2009 00:31:11

Salut,

Ouaip, en effet ça fait plaisir de voir autre chose que du mIRC scripting...
Ben, pas grand chose à dire, je connais pas XChat. C'est rigolo cette utilisation des hooks.

Simple question : pourquoi utiliser 1 regexp qui, finalement, ne sert à rien ?
(!($_[0][0] =~ m/Xchat::get_info(nick)/)) revient à ($_[0][0] ne Xchat::get_info(nick))

Je me trompe ?

Bonne continuation.

Commentaire de GeroXXXX le 02/11/2009 12:25:09

Oui tu te trompes :p en fait,$_[0][0] ne contient pas que le pseudo, la string correspondante est de la forme : "pseudo!nomduserveur@ton_host:".
Donc un simple $_[0][0] ne Xchat::get_info(nick) n' est pas suffisant ...
apres il est vrai que je pourrais extraire le pseudo de la chaine de caractère $_[0][0]
et faire une comparaison avec "ne" mais bon ... :p
voila et merci pour cet intérêt envers mon ti script ^^

Bonne continuation également :)

Commentaire de uaip le 02/11/2009 12:46:13

Ah oui, j'avais zappé ce détail :')
La méthode d'extraction que tu proposes est sans doute plus laborieuse à écrire qu'une regexp (qui s'écrit en 2sec sans réfléchir), mais elle nécessite bien moins de ressources et est plus rapide d'exécution. Dans ce cas là c'est peut-être pas ce qu'on recherche, mais c'est bon à savoir.

Commentaire de TeBeCo le 02/11/2009 18:18:20

"É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

Commentaire de uaip le 02/11/2009 21:23:15

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.

Commentaire de GeroXXXX le 03/11/2009 13:28:39

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

events pour xchat en perl [ par Jamu ] Salut a tous Je me suis mis au perl il y a peu de temps et ce que je voudrais fair c virer les evenements textuel d'origine de mon xchat pour me coder add_handler - Script Perl pour Xchat [ par advi ] Bonjour à tous,j'ai créé un script Perl pour Xchat. Il fonctionne parfaitement, j'ai juste un probleme.Je suis capable de déclencher mon script sur de recuperer l'host en perl (xchat) [ par aeled ] J'essaie de faire une commande en perl qui récupere l'host d'un user placé en parametre.en gros /host [nick] doit renvoyer un truc du style : *!*@xxx. Auto ban sauf les +ao [ par CorB3n ] Salut à tous,Je recherche un remote afin d'auto bannir automatiquement les personnes joignant le chan, sauf ceux qui ont un chanlev sur @L (+ao en l'o Kick une personne qui ecrit en rouge [ par romeomd ] Bonjours, j'aimerais avoir un On Text pour kicker un personne qui ecrit en rouge sur un salon en particulier. Pcq la plupart des tricheurs de quizz so Aidez moi [ par reva94 ] kelk1 pourai me crée un anti flood : - au bout de 4 phrases en flood il le kick ban 5 min anti-pub : 1 er pub Qui avertit 2 eme pub qui kick 3 emem p Don't iddle [ par angeldavid ] Bonjour, je voudrais faire un truc tout simple, mais il me faut votre aide, j'aimerai faire un don't iddle, j'ai déja commencer :on 1:join:#support.ho Détecteur de clônes (xchat) [ par Nebula ] Bonsoir à tous,J'essaie de faire un plugin pour X-Chat qui détecterait les clônes (j'ose espérer qu'il n'y a pas que des mircistes ici ?). Pour ce fai repetition de frase et 1 kick simple [ par empreur_noir ] slt a toutes et a tous je suis nouvo sur ce sitez g 2 question a poser - premiere comment peux t'on faire pour que mon script detecte probleme de ($nick unknown command [ par J4Gu4R ] voila dans ma remote un évenement de kickon *:KICK:*:{ if ($knick == $me) { echo -s je me fais kick } elseif ($nick == $me) { echo -s je ki


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales