rr4botz2 est un bot IRC écrit en C++ chargeant des scripts Lua. Il conserve une liste des utilisateurs des canaux et permet aux scripts de réagir à certaines actions, comme un message sur un canal ou en privé.
En plus de la lib standard Lua, le bot dispose des fonctions suivantes pour intéragir avec le bot :
say(chan, texte) : dit texte sur le canal chan. Exemple : say("#bots", "hello world")
send_command(commande) : envoie la commande
IRC commande au serveur. Exemple : send_command("MODE #bots +v eggdrop\n")
log(type, texte) : log la chaîne texte. type doit être “error”, “warning” ou “info”. Exemple : log("warning", "probleme !")
register_onchannelmsg(func, regex) : enregistre la fonction func pour être appelée si une chaîne correspondant à la regex est prononcée sur un canal. La fonction func prend en paramètre le nom du canal, le nick de l'utilisateur qui a parlé et le texte prononcé.
register_onaction(func, action) : enregistre la fonction func pour être appelée lorsque l'action action est effectuée. action peut être “join”, “part” ou “quit”. func reçoit en paramètre le nom du canal, l'action, le nick de l'utilisateur et un éventuel argument (sauf pour join).
register_onchannelupdate(func) : enregistre la fonction func pour être appelée périodiquement, à chaque mise à jour des informations sur le canal. func reçoit en paramètre le nom du canal.
load_module(script) : charge le module script. script doit être un script Lua valide. Retourne true ou false suivant si le module a pu être charé ou non (l'erreur éventuelle est loggée).
unload_module(script) : décharge le module script s'il était chargé. Ne retourne rien. Attention : vous ne devez jamais déchargé le module courant !
get_nick() : retourne le nick du bot.
get_chan(chan) : si le canal chan est connu du bot, retourne une table contenant des informations. Le champ users contient la table des utilisateurs sur le canal sous la forme nick → mode, où mode est “normal”, “voice”, “halfop”, “op”, “protect” ou “owner”.
Si vous avez besoin d'autres fonctionnalités, n'hésitez pas à me contacter (remram44). La prise en charge d'autres langages de script n'est pas envisagée.
Vous aurez besoin de Lua, pthread et des sockets (fournies par la lib wsock32 sous Windows). Le projet, bien que prévu à l'origine pour fonctionner sous Linux, compile et tourne parfaitement sous Windows (testé avec MinGW).