Difference between revisions of "Binds"

From Base de connaissances eggdrops & TCL
Jump to: navigation, search
(Messages - Notices)
 
(43 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
[[Catégorie:Tcl]]
 
[[Catégorie:Tcl]]
Vous pouvez utiliser la commande 'bind' pour lier des procédures certains évènements. Par example vous pouvez écrire une fonction qui sera appelée chaque fois qu'un utilisateur dira "danger" dans un canal.
+
[[Catégorie:FAQ]]
 +
[[Catégorie:TCL]]
 +
[[Catégorie:TCLDEV]]
 +
Vous pouvez utiliser la commande '''bind''' pour lier des procédures à certains évènements. Par example vous pouvez écrire une fonction qui sera appelée chaque fois qu'un utilisateur dira "danger" dans un canal.
  
Certains binds sont dit ''empilables'' (stackable). Cela signifie que vous pouvez appeler plusieurs commandes avec le même déclencheur. Normalement, par exemple, un bind comme ''bind msg - stop msg:stop'' (qui lance la procédure msg:stop lorsqu'on utilise la commande par message "stop") écrasera les déclarations précédentes du bind message stop. Les binds stackables, comme ''msgm'' s'ajoutent, cela signifie que si vous créez plusieurs ''bind msgm - stop ...'' et que quelqu'un dit "stop" dans un canal, toutes les procédures attachées ces binds seront lancées.
+
Certains binds sont dit ''empilables'' (stackable). Cela signifie que vous pouvez appeler plusieurs commandes avec le même déclencheur. Normalement, par exemple, un bind comme <source lang=tcl>bind msg - stop msg:stop</source> (qui lance la procédure msg:stop lorsqu'on utilise la commande par message "stop") écrasera les déclarations précédentes du bind message stop. Les binds stackables, comme ''msgm'' s'ajoutent, cela signifie que si vous créez plusieurs ''bind msgm - stop ...'' et que quelqu'un dit "stop" dans un canal, toutes les procédures attachées à ces binds seront lancées.
  
Pour supprimer un bind, utilisez la commande ''unbind'' avec tous les attributs correspondant au bind que vous voulez supprimer. Par exemple, pour supprimer le premier exemple, utilisez ''unbind msg - stop msg:stop''.
+
Pour supprimer un bind, utilisez la commande ''unbind'' avec tous les attributs correspondant au bind que vous voulez supprimer. Par exemple, pour supprimer le premier exemple, utilisez <source lang=tcl>unbind msg - stop msg:stop</source>.
=Règles syntaxiques=
+
=Préambule=
 +
==Règles syntaxiques==
 
Autant que faire se peut, nous essayons de normaliser l'écriture de la documentation.
 
Autant que faire se peut, nous essayons de normaliser l'écriture de la documentation.
  
Line 11: Line 15:
  
 
Nous essayons aussi de normaliser les termes employés et de garder leur nom en anglais car c'est ainsi que vous les trouverez dans la plupart des scripts Tcl.
 
Nous essayons aussi de normaliser les termes employés et de garder leur nom en anglais car c'est ainsi que vous les trouverez dans la plupart des scripts Tcl.
 +
 +
{{Attention|Vous trouverez parfois la variable <text> et parfois la variable <args> dans l'appel d'une procédure, cela n'est pas une erreur: '''text''' représente une ''chaine de mots'' alors que '''args''' représente une ''liste'', le traitement est donc différent.}}
 +
==Masques==
 +
Une petite précision donnée par Artix et qui a son importance: dans la plupart des binds, on parle de '''mask''' et de '''wildcard''', mais leur syntaxe n'est pas bien expliquée dans la documentation.
 +
 +
Les wildcards sont au nombre de 4:
 +
* '''*''' correspond à 0 ou n caractères incluant les espaces
 +
* '''%''' correspond à 0 ou n caractères n'incluant pas les espaces
 +
* '''?''' correspond exactement à 1 caractère
 +
* '''~''' correspond à 1 ou n espaces
 +
Il est possible de protéger ces caractères en les précédant d'un '''\''' pour annuler leur effet wildcard. Par exemple ab\* permettra de réagir à ''ab*'' et non pas à ''ab'', ''aba'' ou ''ab ba''
  
 
=Types de binds=
 
=Types de binds=
Ce qui suit est la liste des binds existants et la manière dont ils fonctionnent. Le format de la commande, la liste des arguments envoyés la procédure associée et une explication sont aussi données.
+
Ce qui suit est la liste des binds existants et la manière dont ils fonctionnent. Le format de la commande, la liste des arguments envoyés à la procédure associée et une explication sont aussi données.
{{Translation}}
 
 
==Messages - Notices==
 
==Messages - Notices==
{{Bind|MSG|bind msg <flags> <command> <proc>|procname <nick> <user@host> <handle> <text>|used for /msg commands. The first word of the user's msg is the command, and everything else becomes the text argument.|server}}
+
{{Bind|MSG|bind msg <flags> <command> <proc>|procname <nick> <user@host> <handle> <text>|Utilisé pour les commandes en message privé. Le premier mot du message est la commande, les autres sont pris comme des arguments texte.|server}}
{{Bind|MSGM|bind msgm <flags> <mask> <proc>|procname <nick> <user@host> <handle> <text>|matches the entire line of text from a /msg with the mask. This is useful for binding Tcl procs to words or phrases spoken anywhere within a line of text.<br />
+
{{Bind|MSGM|bind msgm <flags> <mask> <proc>|procname <nick> <user@host> <handle> <text>|Recherche un mot dans un message privé.<br />
[[Image:New.gif]] If the proc returns 1, Eggdrop will not log the message that triggered this bind. MSGM binds are processed before MSG binds. If the exclusive-binds setting is enabled, MSG binds will not be trigged by text that a MSGM bind has already handled.|server}}
+
{{new}} Si la procédure renvoit 1, Eggdrop n'enregistrera pas le message qui l'a déclenchée. Les binds MSGM sont traités avant les binds MSG. Si l'eggdrop est réglé avec l'option ''exclusive-binds'', les binds MSG ne seront pas traités si un bind MSGM est déclenché.|server}}
{{Bind|NOTC|bind notc <flags> <mask> <proc>|procname <nick> <user@host> <handle> <text> <dest>|dest will be a nickname (the bot's nickname, obviously) or a channel name. mask is matched against the entire notice and can contain wildcards. It is considered a breach of protocol to respond to a /notice on IRC, so this is intended for internal use (logging, etc.) only. Note that server notices do not trigger the NOTC bind.<br />
+
{{Bind|NOTC|bind notc <flags> <mask> <proc>|procname <nick> <user@host> <handle> <text> <dest>|Sert à réagir à une notice.<br />
[[Image:New.gif]] If the proc returns 1, Eggdrop will not log the message that triggered this bind.
+
''dest'' est un nick (a priori celui du robot) ou un nom de canal. ''mask'' est vérifié sur l'intégralité de la notice et peut contenir des [[wildcards]]. Répondre à une notice est considéré comme une faille dans le protocole IRC, aussi ce bind est utilisé pour le traitement interne seulement.<br />
New Tcl procs should be declared as
+
'''Note''': les notices serveur ne déclenchent pas ce bind.<br />
 +
{{new}} Si la procédure renvoit 1, Eggdrop n'enregistrera pas le message qui a déclenché le bind.<br />
 +
Les nouveaux Tcls doivent être déclaré comme ceci pour assurer la compatibilité:
 
<source lang=tcl>proc notcproc {nick uhost hand text {dest ""}} {
 
<source lang=tcl>proc notcproc {nick uhost hand text {dest ""}} {
 
   global botnick; if {$dest == ""} {set dest $botnick}
 
   global botnick; if {$dest == ""} {set dest $botnick}
 
   ...
 
   ...
}</source> for compatibility.|server}}
+
}</source>|server}}
{{Bind|RAW|bind raw <flags> <keyword> <proc>|procname <from> <keyword> <text>|previous versions of Eggdrop required a special compile option to enable this binding, but it's now standard. The keyword is either a numeric, like "368", or a keyword, such as "PRIVMSG". from will be the server name or the source user (depending on the keyword); flags are ignored. The order of the arguments is identical to the order that the IRC server sends to the bot. The pre-processing  only splits it apart enough to determine the keyword. If the proc returns 1, Eggdrop will not process the line any further (this could cause unexpected behavior in some cases).|server}}
+
{{Bind|RAW|bind raw <flags> <keyword> <proc>|procname <from> <keyword> <text>|Réagit à une ''commande directe''<br />Le ''keyword'' est soit un [[Raws numériques|numérique]], comme "368", ou un mot-clé comme "PRIVMSG". ''from'' est le serveur ou l'utilisateur qui envoit le message, les ''flags'' sont ignorés. L'ordre des argument est le même que l'ordre envoyé par le serveur IRC.<br />Ce bind ne supporte pas les message-tag d'IRC v3|server}}
 +
'''Important''': bien qu'il ne soit pas considéré comme déprécié, ce bind est supplanté par [[#RAWT|RAWT]] depuis eggdrop 1.9.1
 +
{{Bind|RAWT|bind rawt <flags> <keyword> <proc>|procname <from> <keyword> <text> <flag>|Similaire à [[#RAW|RAW]] mais possède un argument ''flag'' supplémentaire qui permet de gérer le protocole IRCv3|Server}}
 +
===ACT===
 +
Un ACTION (déclenché par /me) n'a pas de déclencheur direct, il faut utiliser [[#CTCP|CTCP]]
  
 
==Canal==
 
==Canal==
{{Bind|PUB|bind pub <flags> <command> <proc>|procname <nick> <user@host> <handle> <channel> <text>|used for commands given on a channel. The first word becomes the command and everything else is the text argument.|irc}}
+
{{Bind|PUB|bind pub <flags> <command> <proc>|procname <nick> <user@host> <handle> <channel> <text>|Utilisé pour une commande donnée sur un canal. Le premier mot devient la commande, ceux qui suivent deviennent les arguments ''text''.|irc}}
{{Bind|PUBM|bind pubm <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <text>|just like MSGM, except it's triggered by things said on a channel instead of things /msg'd to the bot. The mask is matched against the channel name followed by the text and can contain wildcards.<br />
+
{{Bind|PUBM|bind pubm <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <text>|Comme [[#MSGM|MSGM]] excepté qu'il réagit à quelque chose dit en canal. ''mask'' contient le nom du canal suivi du texte et peut contenir des wildcards.<br />
[[Image:New.gif]] If the proc returns 1, Eggdrop will not log the message that triggered this bind. PUBM binds are processed before PUB binds. If the exclusive-binds setting is enabled, PUB binds will not be trigged by text that a PUBM bind has already handled.|irc}}
+
{{new}} Si la procédure renvoit 1, Eggdrop n'enregistrera pas le message qui a déclenché le bind. PUBM est traité avant PUB. Si exclusive-bind est activé, les PUB ne seront pas déclenchés par un texte qui aura fait réagir PUBM.|irc}}
{{Bind|JOIN|bind join <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel>|triggered by someone joining the channel. The mask in the bind is matched against "#channel nick!user@host" and can contain wildcards.|irc}}
+
{{Bind|JOIN|bind join <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel>|Déclenché lorsqu'une personne rejoint un canal. Le mask est de la forme "#channel nick!user@host" et peut contenir des widlcards.|irc}}
{{Bind|PART|bind part <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <msg>|triggered by someone leaving the channel. The mask is matched against "#channel nick!user@host" and can contain wildcards. If no part message is specified, msg will be set to "".
+
{{Bind|PART|bind part <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <msg>|Déclenché lorsqu'une personne quitte un canal. Le mask est de la forme "#channel nick!user@host" et peut contenir des wildcards. Si aucun message de part n'est donné, la variable msg sera "".<br />
New Tcl procs should be declared as <source lang=tcl>proc partproc {nick uhost hand chan {msg ""}} { ... }</source> for compatibility.|irc}}
+
Les procédures doivent être déclarées sous la forme <source lang=tcl>proc partproc {nick uhost hand chan {msg ""}} { ... }</source> pour la compatibilité..|irc}}
{{Bind|TOPC|bind topc <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <topic>|triggered by a topic change. mask can contain wildcards and is matched against '#channel <new topic>'.|irc}}
+
{{Bind|TOPC|bind topc <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <topic>|Déclenché sur un changement de topic. mask peut contenir des wildcards et est de la forme '#channel <new topic>'.|irc}}
{{Bind|KICK|bind kick <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <target> <reason>|triggered when someone is kicked off the channel. The mask is matched against '#channel target reason' where the target is the nickname of the person who got kicked (can contain wildcards).
+
{{Bind|KICK|bind kick <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <target> <reason>|Déclenché lorsqu'une personne est kickée du canal. mask est de la forme '#channel target reason' où ''target'' est les nick de la personne kickée (peut contenir des wildcards).<br />
The proc is called with the nick, user@host, and handle of the kicker, plus the channel, the nickname of the person who was kicked, and the reason.|irc}}
+
La procédure est appelée avec les informations du '''kickeur''' plus le canal, le pseudo de la victime et la raison du kick.|irc}}
{{Bind|MODE|bind mode <flags> <mask> <proc>|proc-name <nick> <user@host> <handle> <channel> <mode-change> <target>|mode changes are broken down into their component parts before being sent here, so the <mode-change> will always be a single mode, such as "+m" or "-o". target will show the argument of the mode change (for o/v/b/e/I) or "" if the set mode does not take an argument. The bot's automatic response to a mode change will happen AFTER all matching Tcl procs are called. The mask will be matched against '#channel +/-modes' and can contain wildcards.
+
{{Bind|MODE|bind mode <flags> <mask> <proc>|proc-name <nick> <user@host> <handle> <channel> <mode-change> <target>|Les changements de mode sont découpés en parties uniques, donc <mode-change> sera toujours un mode simple, comme "+m" ou "-o". ''target'' est l'argument du mode (pour o/v/b/e/I) ou "" si le mode n'en prend pas. La réponse du robot intervient APRES que toutes les procédures Tcl correspondantes soient exécutées. Le mask est de la forme '#channel +/-modes' et peut contenir des wildcards.<br />
If it is a server mode, nick will be "", user@host is the server name, and handle is *.
+
S'il s'agit d'un mode serveur, ''nick'' sera "", ''user@host'' sera le nom du serveur et ''handle'' sera *.<br />
Note that "target" was added in 1.3.17 and that this will break Tcl scripts that were written for pre-1.3.17 Eggdrop that use the mode binding. Also, due to a typo, mode binds were broken completely in 1.3.17 but were fixed in 1.3.18. Mode bindings are not triggered at all in 1.3.17.
+
Notez que ''target'' a été ajouté depuis la version 1.3.17 et peut empécher le fonctionnement de Tcls écrit pour les versions précédentes d'Eggdrop. De plus, suite à une erreur dans la version 1.3.17, le bind mode ne fonctionne pas dans cette version mais a été corrigé dans la version 1.3.18.<br />
One easy example (from guppy) of how to support the "target" parameter in 1.3.18 and later and still remain compatible with older Eggdrop versions is:
+
Un exemple simple sur l'utilisation des procédures "1.3.18" et le moyen de les rendre compatible avec les versions plus anciennes d'eggdrop:
* Old script looks as follows:
+
* Ancienne version des scripts:
 
<source lang=tcl>bind mode - * mode_proc
 
<source lang=tcl>bind mode - * mode_proc
 
proc mode_proc {nick uhost hand chan mode} { ... }</source>
 
proc mode_proc {nick uhost hand chan mode} { ... }</source>
* To make it work with 1.3.18+ and stay compatible with older bots, do:
+
* Pour les versions 1.3.18 et la compatibilité descendante:
 
<source lang=tcl>bind mode - * mode_proc_fix
 
<source lang=tcl>bind mode - * mode_proc_fix
 
proc mode_proc_fix {nick uhost hand chan mode {target ""}} {
 
proc mode_proc_fix {nick uhost hand chan mode {target ""}} {
Line 52: Line 72:
 
}
 
}
 
proc mode_proc {nick uhost hand chan mode} { ... }</source>|irc}}
 
proc mode_proc {nick uhost hand chan mode} { ... }</source>|irc}}
 +
{{Note|Le bind '''MODE''' ne marche qu'avec les modes existants dans la [[RFC 1459]]. Certains serveurs, comme [http://www.unrealircd.org Unreal] ont des modes hors-norme, utilisez l'astuce "[[analyser les modes]]" pour plus de détails.}}
 
==Utilisateur==
 
==Utilisateur==
{{Bind|SIGN|bind sign <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <reason>|triggered by a signoff, or possibly by someone who got netsplit and never returned. The signoff message is the last argument to the proc. Wildcards can be used in the mask, which is matched against '#channel nick!user@host'.|irc}}
+
{{Bind|SIGN|bind sign <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <reason>|Déclenché lorsqu'une personne se déconnecte ou disparaît dans un netsplit et ne revient pas. Le message de déconnexion est le dernier argument envoyé à la procédure. Il est possible d'utiliser des wildcards dans le masque qui est de la forme '#channel nick!user@host'.|irc}}
{{Bind|NICK|bind nick <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <newnick>|triggered when someone changes nicknames. The mask is matched against '#channel newnick' and can contain wildcards. Channel is "*" if the user isn't on a channel (usually the bot not yet in a channel).|irc}}
+
{{Bind|NICK|bind nick <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel> <newnick>|Déclenché lorsque quelqu'un change de pseudonyme. Le masque indiqué correspond à "#channel nouveaupseudo" et peut contenir des wildcards (jokers). Si l'utilisateur n'est sur aucun canal (généralement le bot avant de joindre un canal), le canal indiqué sera *.|irc}}
{{Bind|SPLT|bind splt <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel>|triggered when someone gets netsplit on the channel. Be aware that this may be a false alarm (it's easy to fake a netsplit signoff message on some networks); mask may contain wildcards and is matched against '#channel nick!user@host'. Anyone who is SPLT will trigger a REJN or SIGN within the next wait-split (defined in the config file) minutes.|irc}}
+
{{Bind|SPLT|bind splt <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel>|Déclenché lorsque quelqu'un part dans un netsplit. Ceci peut être une fausse alerte (sur certains réseaux il est facile de faire croire à un faux netsplit). Le masque peut contenir des wildcards (jokers) et est de la forme '#channel nick!user@host'. Quelqu'un qui à déclenché le bind SPLT déclenchera les binds REJN ou SIGN s'il reviens avant la fin de la période d'attente indiquée dans le fichier de configuration.|irc}}
{{Bind|REJN|bind rejn <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel>|someone who was split has rejoined. mask can contain wildcards, and is matched against '#channel nick!user@host'.|irc}}
+
{{Bind|REJN|bind rejn <flags> <mask> <proc>|procname <nick> <user@host> <handle> <channel>|Déclenché quand quelqu'un perdu dans un netsplit rejoins le canal. Le masque peut contenir des jokers, et est de la forme'#channel nick!user@host'.|irc}}
 
==DCC - Party-Line==
 
==DCC - Party-Line==
{{Bind|DCC|bind dcc <flags> <command> <proc>|procname <handle> <idx> <text>|used for partyline commands; the command is the first word and everything else becomes the text argument. The idx is valid until the user disconnects. After that, it may be reused, so be careful about storing an idx for long periods of time.|core}}
+
{{Bind|DCC|bind dcc <flags> <command> <proc>|procname <handle> <idx> <text>|Utilisé pour les commandes de la PartyLine. L'argument command est le premier mot, et tout le reste après celle ci est le texte renvoyé par le bind. Il faut noter que l'idx est valable tant que l'utilisateur reste connecté, mais pourrait être réutilisé ensuite, donc vous devez être prudent en le stockant.|core}}
 +
{{Translation}}
 
{{Bind|CTCP|bind ctcp <flags> <keyword> <proc>|proc-name <nick> <user@host> <handle> <dest> <keyword> <text>|dest will be a nickname (the bot's nickname, obviously) or channel name. keyword is the ctcp command (which can contain wildcards), and text may be empty. If the proc returns 0, the bot will attempt its own processing of the ctcp command.|server}}
 
{{Bind|CTCP|bind ctcp <flags> <keyword> <proc>|proc-name <nick> <user@host> <handle> <dest> <keyword> <text>|dest will be a nickname (the bot's nickname, obviously) or channel name. keyword is the ctcp command (which can contain wildcards), and text may be empty. If the proc returns 0, the bot will attempt its own processing of the ctcp command.|server}}
 +
{{Note|'''Utilisation pour ACT'''}}
 +
<source lang=tcl>bind ctcp - "ACTION" maproc
 +
proc maproc {nick uhost hand chan key text} {
 +
  # $key contient "ACTION"
 +
  # $text contient le texte du /me
 +
}</source>
 
{{Bind|CTCR|bind ctcr <flags> <keyword> <proc>|proc-name <nick> <user@host> <handle> <dest> <keyword> <text>|just like ctcp, but this is triggered for a ctcp-reply (ctcp embedded in a notice instead of a privmsg)|server}}
 
{{Bind|CTCR|bind ctcr <flags> <keyword> <proc>|proc-name <nick> <user@host> <handle> <dest> <keyword> <text>|just like ctcp, but this is triggered for a ctcp-reply (ctcp embedded in a notice instead of a privmsg)|server}}
 
{{Bind|CHON|bind chon <flags> <mask> <proc>|proc-name <handle> <idx>|when someone first enters the party-line area of the bot via dcc chat or telnet, this is triggered before they are connected to a chat channel (so, yes, you can change the channel in a 'chon' proc). mask is matched against the handle and supports wildcards. This is NOT triggered when someone returns from the file area, etc.|core}}
 
{{Bind|CHON|bind chon <flags> <mask> <proc>|proc-name <handle> <idx>|when someone first enters the party-line area of the bot via dcc chat or telnet, this is triggered before they are connected to a chat channel (so, yes, you can change the channel in a 'chon' proc). mask is matched against the handle and supports wildcards. This is NOT triggered when someone returns from the file area, etc.|core}}
Line 80: Line 108:
 
bind need - "*" needall  < handles all needs</source>|irc}}
 
bind need - "*" needall  < handles all needs</source>|irc}}
 
{{Bind|FLUD|bind flud <flags> <type> <proc>|procname <nick> <user@host> <handle> <type> <channel>|any floods detected through the flood control settings (like 'flood-ctcp') are sent here before processing. If the proc returns 1, no further action is taken on the flood; if the proc returns 0, the bot will do its normal "punishment" for the flood. The flood types are: pub, msg, join, or ctcp (and can be masked to "*" for the bind); flags are ignored.|server}}
 
{{Bind|FLUD|bind flud <flags> <type> <proc>|procname <nick> <user@host> <handle> <type> <channel>|any floods detected through the flood control settings (like 'flood-ctcp') are sent here before processing. If the proc returns 1, no further action is taken on the flood; if the proc returns 0, the bot will do its normal "punishment" for the flood. The flood types are: pub, msg, join, or ctcp (and can be masked to "*" for the bind); flags are ignored.|server}}
{{Bind|[[Image:New.gif]] NOTE|bind note <flags> <mask> <proc>|procname <from> <to> <text>|incoming notes (either from the party line, someone on IRC, or someone on another bot on the botnet) are checked against these binds before being processed. The mask is matched against the receiving handle and supports wildcards. If the proc returns 1, Eggdrop will not process the note any further. Flags are ignored.|core}}
+
{{Bind|{{new}} NOTE|bind note <flags> <mask> <proc>|procname <from> <to> <text>|incoming notes (either from the party line, someone on IRC, or someone on another bot on the botnet) are checked against these binds before being processed. The mask is matched against the receiving handle and supports wildcards. If the proc returns 1, Eggdrop will not process the note any further. Flags are ignored.|core}}
 
{{Bind|ACT|bind act <flags> <mask> <proc>|proc-name <handle> <channel#> <action>|when someone does an action on the botnet, it invokes this binding. flags are ignored; the mask is matched against the text of the action and can support wildcards.|core}}
 
{{Bind|ACT|bind act <flags> <mask> <proc>|proc-name <handle> <channel#> <action>|when someone does an action on the botnet, it invokes this binding. flags are ignored; the mask is matched against the text of the action and can support wildcards.|core}}
 
{{Bind|WALL|bind wall <flags> <mask> <proc>|proc-name <from> <msg>|when the bot receives a wallops, it invokes this binding. flags are ignored; the mask is matched against the text of the wallops msg. Note that RFC shows the server name as a source of the message, whereas many IRCds send the nick!user@host of the actual sender, thus, Eggdrop will not parse it at all, but simply pass it to bind in its original form. If the proc returns 1, Eggdrop will not log the message that triggered this bind.|server}}
 
{{Bind|WALL|bind wall <flags> <mask> <proc>|proc-name <from> <msg>|when the bot receives a wallops, it invokes this binding. flags are ignored; the mask is matched against the text of the wallops msg. Note that RFC shows the server name as a source of the message, whereas many IRCds send the nick!user@host of the actual sender, thus, Eggdrop will not parse it at all, but simply pass it to bind in its original form. If the proc returns 1, Eggdrop will not log the message that triggered this bind.|server}}
Line 87: Line 115:
 
{{Bind|CHJN|bind chjn <flags> <mask> <proc>|proc-name <botname> <handle> <channel#> <flag> <idx> <user@host>|when someone joins a botnet channel, it invokes this binding. The mask is matched against the channel and can contain wildcards. flag is one of: * (owner), + (master), @ (op), or % (botnet master). Flags are ignored.|core}}
 
{{Bind|CHJN|bind chjn <flags> <mask> <proc>|proc-name <botname> <handle> <channel#> <flag> <idx> <user@host>|when someone joins a botnet channel, it invokes this binding. The mask is matched against the channel and can contain wildcards. flag is one of: * (owner), + (master), @ (op), or % (botnet master). Flags are ignored.|core}}
 
{{Bind|CHPT|bind chpt <flags> <mask> <proc>|proc-name <botname> <handle> <idx> <channel#>|when someone parts a botnet channel, it invokes this binding. The mask is matched against the channel and can contain wildcards. Flags are ignored.|core}}
 
{{Bind|CHPT|bind chpt <flags> <mask> <proc>|proc-name <botname> <handle> <idx> <channel#>|when someone parts a botnet channel, it invokes this binding. The mask is matched against the channel and can contain wildcards. Flags are ignored.|core}}
{{Bind|TIME|bind time <flags> <mask> <proc>|proc-name <minute> <hour> <day> <month> <year>|allows you to schedule procedure calls at certain times. mask matches 5 space separated integers of the form: "minute hour day month year". minute, hour, day, month have a zero padding so they are exactly two characters long; year is four characters. Flags are ignored.|core}}
+
{{Bind|TIME|bind time <flags> <mask> <proc>|proc-name <minute> <hour> <day> <month> <year>|permet d'appeler une procédure à des moments prédéfinis. Le masque se compose de 5 valeurs qui sont:
 +
* minute (deux digits 00 - 59)
 +
* heure (deux digits 00 - 23)
 +
* jour du mois (deux digits 01 - 31)
 +
* mois (deux digits 00 - 11) {{Attention|Le mois commence à '00' ('Janvier') et va jusqu'à '11' ('Décembre'), donc '-1' par rapport au calendrier}}
 +
* année (quatre digits 0000 - 9999)
 +
Il est possible d'utiliser des wildcards, les flags sont ignorés.|core}}
 +
{{Bind|CRON|bind cron <flags> <mask> <proc>|proc-name <minute> <hour> <day> <month> <weekday>|similaire au bind TIME, mais le masque est évalué comme une expression cron, e.g. "16/2 */2 5-15 7,8,9 4". Il peut contenir jusq'à 5 champs (minute, heure, jour, mois, jour de la semaine) délimités par des espaces. Les jours de la semaines vont de 0 à 6, dimanche pouvant être indifférement 0 ou 7.|core}}
 +
Voir aussi [[Cron]]
 
{{Bind|AWAY|bind away <flags> <mask> <proc>|proc-name <botname> <idx> <text>|triggers when a user goes away or comes back on the botnet. text is the reason than has been specified (text is "" when returning). mask is matched against the botnet-nick of the bot the user is connected to and supports wildcards. flags are ignored.|core}}
 
{{Bind|AWAY|bind away <flags> <mask> <proc>|proc-name <botname> <idx> <text>|triggers when a user goes away or comes back on the botnet. text is the reason than has been specified (text is "" when returning). mask is matched against the botnet-nick of the bot the user is connected to and supports wildcards. flags are ignored.|core}}
{{Bind|LOAD (stackable)
+
{{Bind|LOAD (stackable)|bind load <flags> <mask> <proc>|proc-name <module>|triggers when a module is loaded. mask is matched against the name of the loaded module and supports wildcards; flags are ignored.|core}}
        bind load <flags> <mask> <proc>
 
        proc-name <module>
 
 
 
        Description: triggers when a module is loaded. mask is matched
 
          against the name of the loaded module and supports wildcards;
 
          flags are ignored.
 
        Module: core
 
 
{{Bind|UNLD|bind unld <flags> <mask> <proc>|proc-name <module>|triggers when a module is unloaded. mask is matched against the name of the unloaded module and supports wildcards; flags are ignored.|core}}
 
{{Bind|UNLD|bind unld <flags> <mask> <proc>|proc-name <module>|triggers when a module is unloaded. mask is matched against the name of the unloaded module and supports wildcards; flags are ignored.|core}}
 
{{Bind|NKCH|bind nkch <flags> <mask> <proc>|proc-name <oldhandle> <newhandle>|triggered whenever a local user's handle is changed (in the userfile). mask is matched against the user's old handle and can contain wildcards; flags are ignored.|core}}
 
{{Bind|NKCH|bind nkch <flags> <mask> <proc>|proc-name <oldhandle> <newhandle>|triggered whenever a local user's handle is changed (in the userfile). mask is matched against the user's old handle and can contain wildcards; flags are ignored.|core}}

Latest revision as of 16:35, 10 April 2022

Vous pouvez utiliser la commande bind pour lier des procédures à certains évènements. Par example vous pouvez écrire une fonction qui sera appelée chaque fois qu'un utilisateur dira "danger" dans un canal.

Certains binds sont dit empilables (stackable). Cela signifie que vous pouvez appeler plusieurs commandes avec le même déclencheur. Normalement, par exemple, un bind comme
bind msg - stop msg:stop
(qui lance la procédure msg:stop lorsqu'on utilise la commande par message "stop") écrasera les déclarations précédentes du bind message stop. Les binds stackables, comme msgm s'ajoutent, cela signifie que si vous créez plusieurs bind msgm - stop ... et que quelqu'un dit "stop" dans un canal, toutes les procédures attachées à ces binds seront lancées. Pour supprimer un bind, utilisez la commande unbind avec tous les attributs correspondant au bind que vous voulez supprimer. Par exemple, pour supprimer le premier exemple, utilisez
unbind msg - stop msg:stop
.

Préambule

Règles syntaxiques

Autant que faire se peut, nous essayons de normaliser l'écriture de la documentation.

Ce qui se trouve entre < et > est un argument modifiable par l'utilisateur dans la définition du bind ou un argument reçu par la procédure (il est alors fonction du "déclencheur"),

Nous essayons aussi de normaliser les termes employés et de garder leur nom en anglais car c'est ainsi que vous les trouverez dans la plupart des scripts Tcl.

Attention.png Vous trouverez parfois la variable <text> et parfois la variable <args> dans l'appel d'une procédure, cela n'est pas une erreur: text représente une chaine de mots alors que args représente une liste, le traitement est donc différent.

Masques

Une petite précision donnée par Artix et qui a son importance: dans la plupart des binds, on parle de mask et de wildcard, mais leur syntaxe n'est pas bien expliquée dans la documentation.

Les wildcards sont au nombre de 4:

  • * correspond à 0 ou n caractères incluant les espaces
  • % correspond à 0 ou n caractères n'incluant pas les espaces
  • ? correspond exactement à 1 caractère
  • ~ correspond à 1 ou n espaces

Il est possible de protéger ces caractères en les précédant d'un \ pour annuler leur effet wildcard. Par exemple ab\* permettra de réagir à ab* et non pas à ab, aba ou ab ba

Types de binds

Ce qui suit est la liste des binds existants et la manière dont ils fonctionnent. Le format de la commande, la liste des arguments envoyés à la procédure associée et une explication sont aussi données.

Messages - Notices

MSG

Utilisé pour les commandes en message privé. Le premier mot du message est la commande, les autres sont pris comme des arguments texte.

  • Syntaxe: bind msg <flags> <command> <proc>
  • Procédure: procname <nick> <user@host> <handle> <text>
  • Module: server

MSGM

Recherche un mot dans un message privé.
New.gif Si la procédure renvoit 1, Eggdrop n'enregistrera pas le message qui l'a déclenchée. Les binds MSGM sont traités avant les binds MSG. Si l'eggdrop est réglé avec l'option exclusive-binds, les binds MSG ne seront pas traités si un bind MSGM est déclenché.

  • Syntaxe: bind msgm <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <text>
  • Module: server

NOTC

Sert à réagir à une notice.
dest est un nick (a priori celui du robot) ou un nom de canal. mask est vérifié sur l'intégralité de la notice et peut contenir des wildcards. Répondre à une notice est considéré comme une faille dans le protocole IRC, aussi ce bind est utilisé pour le traitement interne seulement.
Note: les notices serveur ne déclenchent pas ce bind.
New.gif Si la procédure renvoit 1, Eggdrop n'enregistrera pas le message qui a déclenché le bind.
Les nouveaux Tcls doivent être déclaré comme ceci pour assurer la compatibilité:

proc notcproc {nick uhost hand text {dest ""}} {
   global botnick; if {$dest == ""} {set dest $botnick}
   ...
}

  • Syntaxe: bind notc <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <text> <dest>
  • Module: server

RAW

Réagit à une commande directe
Le keyword est soit un numérique, comme "368", ou un mot-clé comme "PRIVMSG". from est le serveur ou l'utilisateur qui envoit le message, les flags sont ignorés. L'ordre des argument est le même que l'ordre envoyé par le serveur IRC.
Ce bind ne supporte pas les message-tag d'IRC v3

  • Syntaxe: bind raw <flags> <keyword> <proc>
  • Procédure: procname <from> <keyword> <text>
  • Module: server

Important: bien qu'il ne soit pas considéré comme déprécié, ce bind est supplanté par RAWT depuis eggdrop 1.9.1

RAWT

Similaire à RAW mais possède un argument flag supplémentaire qui permet de gérer le protocole IRCv3

  • Syntaxe: bind rawt <flags> <keyword> <proc>
  • Procédure: procname <from> <keyword> <text> <flag>
  • Module: Server

ACT

Un ACTION (déclenché par /me) n'a pas de déclencheur direct, il faut utiliser CTCP

Canal

PUB

Utilisé pour une commande donnée sur un canal. Le premier mot devient la commande, ceux qui suivent deviennent les arguments text.

  • Syntaxe: bind pub <flags> <command> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel> <text>
  • Module: irc

PUBM

Comme MSGM excepté qu'il réagit à quelque chose dit en canal. mask contient le nom du canal suivi du texte et peut contenir des wildcards.
New.gif Si la procédure renvoit 1, Eggdrop n'enregistrera pas le message qui a déclenché le bind. PUBM est traité avant PUB. Si exclusive-bind est activé, les PUB ne seront pas déclenchés par un texte qui aura fait réagir PUBM.

  • Syntaxe: bind pubm <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel> <text>
  • Module: irc

JOIN

Déclenché lorsqu'une personne rejoint un canal. Le mask est de la forme "#channel nick!user@host" et peut contenir des widlcards.

  • Syntaxe: bind join <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel>
  • Module: irc

PART

Déclenché lorsqu'une personne quitte un canal. Le mask est de la forme "#channel nick!user@host" et peut contenir des wildcards. Si aucun message de part n'est donné, la variable msg sera "".

Les procédures doivent être déclarées sous la forme
proc partproc {nick uhost hand chan {msg ""}} { ... }
pour la compatibilité..
  • Syntaxe: bind part <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel> <msg>
  • Module: irc

TOPC

Déclenché sur un changement de topic. mask peut contenir des wildcards et est de la forme '#channel <new topic>'.

  • Syntaxe: bind topc <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel> <topic>
  • Module: irc

KICK

Déclenché lorsqu'une personne est kickée du canal. mask est de la forme '#channel target reason' où target est les nick de la personne kickée (peut contenir des wildcards).
La procédure est appelée avec les informations du kickeur plus le canal, le pseudo de la victime et la raison du kick.

  • Syntaxe: bind kick <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel> <target> <reason>
  • Module: irc

MODE

Les changements de mode sont découpés en parties uniques, donc <mode-change> sera toujours un mode simple, comme "+m" ou "-o". target est l'argument du mode (pour o/v/b/e/I) ou "" si le mode n'en prend pas. La réponse du robot intervient APRES que toutes les procédures Tcl correspondantes soient exécutées. Le mask est de la forme '#channel +/-modes' et peut contenir des wildcards.
S'il s'agit d'un mode serveur, nick sera "", user@host sera le nom du serveur et handle sera *.
Notez que target a été ajouté depuis la version 1.3.17 et peut empécher le fonctionnement de Tcls écrit pour les versions précédentes d'Eggdrop. De plus, suite à une erreur dans la version 1.3.17, le bind mode ne fonctionne pas dans cette version mais a été corrigé dans la version 1.3.18.
Un exemple simple sur l'utilisation des procédures "1.3.18" et le moyen de les rendre compatible avec les versions plus anciennes d'eggdrop:

  • Ancienne version des scripts:
bind mode - * mode_proc
proc mode_proc {nick uhost hand chan mode} { ... }
  • Pour les versions 1.3.18 et la compatibilité descendante:
bind mode - * mode_proc_fix
proc mode_proc_fix {nick uhost hand chan mode {target ""}} {
   if {$target != ""} {append mode " $target"}
   mode_proc $nick $uhost $hand $chan $mode
}
proc mode_proc {nick uhost hand chan mode} { ... }

  • Syntaxe: bind mode <flags> <mask> <proc>
  • Procédure: proc-name <nick> <user@host> <handle> <channel> <mode-change> <target>
  • Module: irc

Le bind MODE ne marche qu'avec les modes existants dans la RFC 1459. Certains serveurs, comme Unreal ont des modes hors-norme, utilisez l'astuce "analyser les modes" pour plus de détails.

Utilisateur

SIGN

Déclenché lorsqu'une personne se déconnecte ou disparaît dans un netsplit et ne revient pas. Le message de déconnexion est le dernier argument envoyé à la procédure. Il est possible d'utiliser des wildcards dans le masque qui est de la forme '#channel nick!user@host'.

  • Syntaxe: bind sign <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel> <reason>
  • Module: irc

NICK

Déclenché lorsque quelqu'un change de pseudonyme. Le masque indiqué correspond à "#channel nouveaupseudo" et peut contenir des wildcards (jokers). Si l'utilisateur n'est sur aucun canal (généralement le bot avant de joindre un canal), le canal indiqué sera *.

  • Syntaxe: bind nick <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel> <newnick>
  • Module: irc

SPLT

Déclenché lorsque quelqu'un part dans un netsplit. Ceci peut être une fausse alerte (sur certains réseaux il est facile de faire croire à un faux netsplit). Le masque peut contenir des wildcards (jokers) et est de la forme '#channel nick!user@host'. Quelqu'un qui à déclenché le bind SPLT déclenchera les binds REJN ou SIGN s'il reviens avant la fin de la période d'attente indiquée dans le fichier de configuration.

  • Syntaxe: bind splt <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel>
  • Module: irc

REJN

Déclenché quand quelqu'un perdu dans un netsplit rejoins le canal. Le masque peut contenir des jokers, et est de la forme'#channel nick!user@host'.

  • Syntaxe: bind rejn <flags> <mask> <proc>
  • Procédure: procname <nick> <user@host> <handle> <channel>
  • Module: irc

DCC - Party-Line

DCC

Utilisé pour les commandes de la PartyLine. L'argument command est le premier mot, et tout le reste après celle ci est le texte renvoyé par le bind. Il faut noter que l'idx est valable tant que l'utilisateur reste connecté, mais pourrait être réutilisé ensuite, donc vous devez être prudent en le stockant.

  • Syntaxe: bind dcc <flags> <command> <proc>
  • Procédure: procname <handle> <idx> <text>
  • Module: core
Eye.png Cet article est en cours de traduction, n'hésitez pas à aider

CTCP

dest will be a nickname (the bot's nickname, obviously) or channel name. keyword is the ctcp command (which can contain wildcards), and text may be empty. If the proc returns 0, the bot will attempt its own processing of the ctcp command.

  • Syntaxe: bind ctcp <flags> <keyword> <proc>
  • Procédure: proc-name <nick> <user@host> <handle> <dest> <keyword> <text>
  • Module: server

Utilisation pour ACT

bind ctcp - "ACTION" maproc
proc maproc {nick uhost hand chan key text} {
   # $key contient "ACTION"
   # $text contient le texte du /me
}

CTCR

just like ctcp, but this is triggered for a ctcp-reply (ctcp embedded in a notice instead of a privmsg)

  • Syntaxe: bind ctcr <flags> <keyword> <proc>
  • Procédure: proc-name <nick> <user@host> <handle> <dest> <keyword> <text>
  • Module: server

CHON

when someone first enters the party-line area of the bot via dcc chat or telnet, this is triggered before they are connected to a chat channel (so, yes, you can change the channel in a 'chon' proc). mask is matched against the handle and supports wildcards. This is NOT triggered when someone returns from the file area, etc.

  • Syntaxe: bind chon <flags> <mask> <proc>
  • Procédure: proc-name <handle> <idx>
  • Module: core

CHOF

triggered when someone leaves the party line to disconnect from the bot. mask is matched against the handle and can contain wildcards. Note that the connection may have already been dropped by the user, so don't send output to the idx.

  • Syntaxe: bind chof <flags> <mask> <proc>
  • Procédure: proc-name <handle> <idx>
  • Module: core

Système de fichier

FIL

the same as DCC, except this is triggered if the user is in the file area instead of the party line

  • Syntaxe: bind fil <flags> <command> <proc>
  • Procédure: procname <handle> <idx> <text>
  • Module: filesys

SENT

after a user has successfully downloaded a file from the bot, this binding is triggered. mask is matched against the handle of the user that initiated the transfer and supports wildcards. nick is the actual recipient (on IRC) of the file. The path is relative to the dcc directory (unless the file transfer was started by a script call to 'dccsend', in which case the path is the exact path given in the call to 'dccsend').

  • Syntaxe: bind sent <flags> <mask> <proc>
  • Procédure: proc-name <handle> <nick> <path/to/file>
  • Module: transfer

RCVD

triggered after a user uploads a file successfully. mask is matched against the user's handle. nick is the IRC nickname that the file transfer originated from. The path is where the file ended up, relative to the dcc directory (usually this is your incoming dir).

  • Syntaxe: bind rcvd <flags> <mask> <proc>
  • Procédure: proc-name <handle> <nick> <path/to/file>
  • Module: transfer

Botnet

BOT

triggered by a message coming from another bot in the botnet. The first word is the command and the rest becomes the text argument; flags are ignored.

  • Syntaxe: bind bot <flags> <command> <proc>
  • Procédure: proc-name <from-bot> <command> <text>
  • Module: core

CHAT

when a user says something on the botnet, it invokes this binding. Flags are ignored; handle could be a user on this bot ("DronePup") or on another bot ("Eden@Wilde") and therefore you can't rely on a local user record. The mask is checked against the entire line of text and supports wildcards. NOTE: If a BOT says something on the botnet, the BCST bind is invoked instead.

  • Syntaxe: bind chat <flags> <mask> <proc>
  • Procédure: proc-name <handle> <channel#> <text>
  • Module: core

LINK

triggered when a bot links into the botnet. botname is the botnetnick of the bot that just linked in; via is the bot it linked through. The mask is checked against the botnetnick of the bot that linked and supports wildcards. flags are ignored.

  • Syntaxe: bind link <flags> <mask> <proc>
  • Procédure: proc-name <botname> <via>
  • Module: core

A trier

DISC

triggered when a bot disconnects from the botnet for whatever reason. Just like the link bind, flags are ignored; mask is matched against the botnetnick of the bot that unlinked. Wildcards are supported in mask.

  • Syntaxe: bind disc <flags> <mask> <proc>
  • Procédure: proc-name <botname>
  • Module: core

FILT

party line and file system users have their text sent through filt before being processed. If the proc returns a blank string, the text is considered parsed. Otherwise, the bot will use the text returned from the proc and continue parsing that

  • Syntaxe: bind filt <flags> <mask> <proc>
  • Procédure: procname <idx> <text>
  • Module: core

NEED

this bind is triggered on certain events, like when the bot needs operator status or the key for a channel. The types are: op, unban, invite, limit, and key; the mask is matched against '#channel type' and can contain wildcards. flags are ignored. Exemple:

bind need - "% op" needop < handles only need op
bind need - "*" needall   < handles all needs

  • Syntaxe: bind need <flags> <mask> <proc>
  • Procédure: procname <channel> <type>
  • Module: irc

FLUD

any floods detected through the flood control settings (like 'flood-ctcp') are sent here before processing. If the proc returns 1, no further action is taken on the flood; if the proc returns 0, the bot will do its normal "punishment" for the flood. The flood types are: pub, msg, join, or ctcp (and can be masked to "*" for the bind); flags are ignored.

  • Syntaxe: bind flud <flags> <type> <proc>
  • Procédure: procname <nick> <user@host> <handle> <type> <channel>
  • Module: server

New.gif NOTE

incoming notes (either from the party line, someone on IRC, or someone on another bot on the botnet) are checked against these binds before being processed. The mask is matched against the receiving handle and supports wildcards. If the proc returns 1, Eggdrop will not process the note any further. Flags are ignored.

  • Syntaxe: bind note <flags> <mask> <proc>
  • Procédure: procname <from> <to> <text>
  • Module: core

ACT

when someone does an action on the botnet, it invokes this binding. flags are ignored; the mask is matched against the text of the action and can support wildcards.

  • Syntaxe: bind act <flags> <mask> <proc>
  • Procédure: proc-name <handle> <channel#> <action>
  • Module: core

WALL

when the bot receives a wallops, it invokes this binding. flags are ignored; the mask is matched against the text of the wallops msg. Note that RFC shows the server name as a source of the message, whereas many IRCds send the nick!user@host of the actual sender, thus, Eggdrop will not parse it at all, but simply pass it to bind in its original form. If the proc returns 1, Eggdrop will not log the message that triggered this bind.

  • Syntaxe: bind wall <flags> <mask> <proc>
  • Procédure: proc-name <from> <msg>
  • Module: server

BCST

when a bot broadcasts something on the botnet (see 'dccbroadcast' above), it invokes this binding. flags are ignored; the mask is matched against the message text and can contain wildcards. 'channel' argument will always be '-1' since broadcasts are not directed to any partyline channel. It is also invoked when a BOT (not a person, as with the CHAT bind) 'says' something on a channel. In this case, the 'channel' argument will be a valid channel, and not '-1'.

  • Syntaxe: bind bcst <flags> <mask> <proc>
  • Procédure: proc-name <botname> <channel#> <text>
  • Module: core

CHJN

when someone joins a botnet channel, it invokes this binding. The mask is matched against the channel and can contain wildcards. flag is one of: * (owner), + (master), @ (op), or % (botnet master). Flags are ignored.

  • Syntaxe: bind chjn <flags> <mask> <proc>
  • Procédure: proc-name <botname> <handle> <channel#> <flag> <idx> <user@host>
  • Module: core

CHPT

when someone parts a botnet channel, it invokes this binding. The mask is matched against the channel and can contain wildcards. Flags are ignored.

  • Syntaxe: bind chpt <flags> <mask> <proc>
  • Procédure: proc-name <botname> <handle> <idx> <channel#>
  • Module: core

TIME

permet d'appeler une procédure à des moments prédéfinis. Le masque se compose de 5 valeurs qui sont:

  • minute (deux digits 00 - 59)
  • heure (deux digits 00 - 23)
  • jour du mois (deux digits 01 - 31)
  • mois (deux digits 00 - 11)
    Attention.png Le mois commence à '00' ('Janvier') et va jusqu'à '11' ('Décembre'), donc '-1' par rapport au calendrier
  • année (quatre digits 0000 - 9999)

Il est possible d'utiliser des wildcards, les flags sont ignorés.

  • Syntaxe: bind time <flags> <mask> <proc>
  • Procédure: proc-name <minute> <hour> <day> <month> <year>
  • Module: core

CRON

similaire au bind TIME, mais le masque est évalué comme une expression cron, e.g. "16/2 */2 5-15 7,8,9 4". Il peut contenir jusq'à 5 champs (minute, heure, jour, mois, jour de la semaine) délimités par des espaces. Les jours de la semaines vont de 0 à 6, dimanche pouvant être indifférement 0 ou 7.

  • Syntaxe: bind cron <flags> <mask> <proc>
  • Procédure: proc-name <minute> <hour> <day> <month> <weekday>
  • Module: core

Voir aussi Cron

AWAY

triggers when a user goes away or comes back on the botnet. text is the reason than has been specified (text is "" when returning). mask is matched against the botnet-nick of the bot the user is connected to and supports wildcards. flags are ignored.

  • Syntaxe: bind away <flags> <mask> <proc>
  • Procédure: proc-name <botname> <idx> <text>
  • Module: core

LOAD (stackable)

triggers when a module is loaded. mask is matched against the name of the loaded module and supports wildcards; flags are ignored.

  • Syntaxe: bind load <flags> <mask> <proc>
  • Procédure: proc-name <module>
  • Module: core

UNLD

triggers when a module is unloaded. mask is matched against the name of the unloaded module and supports wildcards; flags are ignored.

  • Syntaxe: bind unld <flags> <mask> <proc>
  • Procédure: proc-name <module>
  • Module: core

NKCH

triggered whenever a local user's handle is changed (in the userfile). mask is matched against the user's old handle and can contain wildcards; flags are ignored.

  • Syntaxe: bind nkch <flags> <mask> <proc>
  • Procédure: proc-name <oldhandle> <newhandle>
  • Module: core

EVNT

triggered whenever one of these events happen. flags are ignored; valid events are:

  • sighup - called on a kill -HUP <pid>
  • sigterm - called on a kill -TERM <pid>
  • sigill - called on a kill -ILL <pid>
  • sigquit - called on a kill -QUIT <pid>
  • save - called when the userfile is saved
  • rehash - called just after a rehash
  • prerehash - called just before a rehash
  • prerestart - called just before a restart
  • logfile - called when the logs are switched daily
  • loaded - called when the bot is done loading
  • userfile-loaded - called after userfile has been loaded
  • connect-server - called just before we connect to an IRC server
  • init-server - called when we actually get on our IRC server
  • disconnect-server - called when we disconnect from our IRC server
  • Syntaxe: bind evnt <flags> <type> <proc>
  • Procédure: proc-name <type>
  • Module: core

LOST

triggered when a DCC SEND transfer gets lost, such as when the connection is terminated before all data was successfully sent/received. This is typically caused by a user abort.

  • Syntaxe: bind lost <flags> <mask> <proc>
  • Procédure: proc-name <handle> <nick> <path> <bytes-transferred> <length-of-file>
  • Module: transfer

TOUT

triggered when a DCC SEND transfer times out. This may either happen because the dcc connection was not accepted or because the data transfer stalled for some reason.

  • Syntaxe: bind tout <flags> <mask> <proc>
  • Procédure: proc-name <handle> <nick> <path> <bytes-transferred> <length-of-file>
  • Module: transfer