Le nom du timer ne doit pas contenir d'espaces ni certains caractères interdits (je ne sais même pas lesquels) mais on peut utiliser les mêmes caractères que ceux qui décrivent un nick (Exemple: |-^HaX0R^-| , mais la lettre A peut tout aussi bien faire l'affaire!). Le nom doit être collé au mot "timer".
Les options, je n'en connais qu'une (mais il y en a plusieurs autres): c'est l'option -o qui permet de rendre le timer indépendant du fait que vous êtes connecté ou non à un serveur irc. En effet, par défaut le timer s'arrête lorsque vous vous déconnectez.
Répétitions est un nombre entier positif, mais pouvant être nul, qui constitue le nombre de fois que l'on veut répéter la /commande. Lorsque le nombre est nul, la commande est répétée indéfiniment.
L'intervalle de temps est un nombre entier positif (non nul), qui constitue le délai du timer exprimé en secondes.
/commande est la commande à exécuter par le timer. Ce peut être une commande irc simple, ou un alias que vous aurez défini.
Un exemple simpliste de l'utilisation des timers
Voici un exemple assez simple: il s'agit d'un timer d'away, typiquement affectionné par le lamer désireux de faire savoir à tout le monde, et le plus souvent possible, qu'il est parti aux cabinets.
/timercaca 0 120 /ame est away (parti aux cabinets) mais je prends vos messages en PV
Cette simple petite ligne écrit un message toutes les 2 minutes sur tous les canaux que vous fréquentez sur l'heure.
Pour arrêter le massacre, il suffit de taper
/timercaca off .
Lister et stopper les timers
Le simple fait de taper
/timer ou /timer? vous affiche la liste de
tous les timers actifs. Enfin, pour arrêter tous les timers, taper
/timer? off.
Domaine d'utilisation des timers
On peut tirer parti des timers de différentes manières: à vous de voir! Un exemple un peu plus intelligent que le précédent est l'utilisation d'un timer pour
retarder une opération ou un test: par exemple, vous pouvez envoyer une commande au serveur, et effectuer un traitement en fonction de la réponse. Sachant que la réponse d'un serveur n'est jamais instantanée, vous pouvez prévoir un délai de 2 secondes entre le moment ou la commande est envoyée et le moment ou cette commande est traitée. Ceci n'est pas conseillé: il existe toujours un moyen de s'en tirer proprement avec un
raw de serveur; en effet, suivant le lag, le temps de réponse du serveur peut dépasser celui que vous avez prévu.
Autre cas:
on peut détecter assez facilement les floodeurs à l'aide d'un timer. Chaque fois qu'une personne prononce des mots sur votre canal, il suffit d'incrémenter une variable (associée au nick), puis d'appeler un processus par timer (dont le nom est associé au nick aussi) remettant à zéro la variable au bout de 3 secondes. Si la variable dépasse une valeur critique, mettons 6, cela signifie qu'il a balancé au moins 6 lignes sur le canal en moins de 3 secondes.
Un exemple bien plus compliqué: la détection de Net splits
Voici un exemple un peu plus compliqué, mais utile celui-là, qui consiste à
détecter les Net splits et à les afficher proprement:
(Rappel: un Net split survient quand deux serveurs linkés se déconnectent: cela se traduit alors par une rafale de messages de déconnexion qui ont, comme paramètres, les noms des 2 serveurs qui délinkent.)
alias netsplit {
%M = $chan(0) | set %j 1
while ( %j <= %M ) {
%chan = $chan(%j)
set %temp % $+ netsplit $+ %chan | set %temp [ [ %temp ] ]
if ( %temp != $null ) {
echo 2 %chan $chr(91) $+ $time $+ $chr(93) *** Netsplit - %temp - $+ $gettok(%temp,0,32) personne(s) ( $+ %serveurs $+ ) }
inc %j
}
unset %netsplit*
}
on ^*:quit:gerequit $nick $address $1-
alias gerequit {
if ($gettok($3,0,46) > 1 && $gettok($4,0,46) > 1) {
set %serveurs $3 // $4
%M = $comchan($1,0) | set %j 1
while ( %j <= %M ) {
%chan = $comchan($1,%j)
set %temp % $+ netsplit $+ %chan | set %temp [ [ %temp ] ]
set % $+ netsplit $+ %chan %temp $1
inc %j
}
.timersplit 1 3 /netsplit
halt
}
%M = $comchan($1,0) | set %j 1
while ( %j <= %M ) {
%chan = $comchan($1,%j)
echo 2 %chan $chr(91) $+ $time $+ $chr(93) *** Déconnexion: $1 ( $+ $2 $+ ) $iif($3 != $null,( $+ $3- $+ ))
inc %j
}
halt
}
J'utilise personnellement ce bout de script chez moi. Il a l'avantage d'une part d'écrire les messages de quit en français, avec l'heure devant:
[21:35:39] *** Déconnexion: ssxdzdxzs (hhhh@80.67.129.8) (Quit)
D'autre part, lorsqu'il y a plusieurs personnes qui quittent avec un message de type
(titi.toto.org tutu.tete.com) et avec un délai n'excédant pas 3 secondes entre chaque déconnexion,
vous voyez apparaître la liste des personnes qui sont parties dans le split, sans qu'il y aie une inondation de
quit messages:
[21:55:47] *** Netsplit - ewxghjfna X MrBrawn Nob elteis DJP-Work Gold[AW] _cronos_ paul|DOUR WaZa Guig-PLaG ksprTaf EvilPola Teuf - 14 personne(s) (Paris.Fr.Eu.Undernet.org // irc.magneto.org)
Réagir à cet article (4 commentaires)
Retour à la page des tutoriaux