Logo classes.scriptsphp.org PHP

go to nav bar

Bot IRC :: CspBot

  • By :: Fab, Tetsuo, mcAllan
  • Date :: 16-08-2006
  • Version :: 0.3
  • Last Updated :: 15-04-2007

Bot IRC - Les plugins



Introduction

La version 0.3 intègre une nouvelle gestion des plugins.
Chaque plugin possede son propre répertoire avec ses fichiers de description.
Les méthodes publiques de la classe IRCMain permettent de commander facilement le bot.

Vous pouvez aussi proposer votre plugin.

Gestion des plugins

Chaque plugin se compose d'un répertoire du nom de la classe du plugin.
Dans ce répertoire on doit retrouver au moins deux fichiers :

  • plug.php qui contient la classe du plugin;
  • desc.xml qui décrit le plugin;
  • changelog.xml (facultatif) pour tracer les évolutions;

Les répertoires de plugin se trouvent dans le répertoire plugin. go to the top

Fichier plug.php et la classe du plugin

Dans plug.php on doit retrouver la classe du plugin héritée de la classe abstraite plugin.
La classe doit impérativement porter le même nom que le répertoire du plugin.
La fonction start sera appelée à chaque évènement détecté sur le chan.

Exemple de plug :

<?php

class plug_myplug extends plugin {

    
/**
     * IRCMain object
     * @var object IRCMain
     */
    
private $main;
    
    
/**
     * Constructor
     *
     * @param IRCMain main
     * 
     */
    
public function __construct($main) {
        
$this->main $main;
    }
    
    
/**
     * Start run plugin
     * 
     */
    
public function start() {
        
$this->myFunction();
    }
    
    private function 
myFunction() {
        
        
//.....
    
}

}
?>

Pour piloter le bot un certains nombre de propriétés et méthodes de la classe IRCMain sont à disposition :

Méthodes

  • void sendMsg ( string msg ) : envoie de msg sur le chan.
  • void sendPrivMsg ( string nick, string msg ) : envoie de msg en privé à nick.
  • void sendNotice ( string msg ) : envoie de msg en NOTICE sur le chan.
  • void sendPrivNotice ( string nick, string msg ) : envoie de msg en NOTICE privé à nick.
  • void Action ( string msg ) : envoie de /me msg sur le chan.
  • void sendCommand ( string cde, string msg ) : envoie commande cde avec msg sur le chan.
  • void sendPrivCommand ( string cde, string nick, string msg ) : envoie commande cde avec msg en privé à nick.
  • void Away ( string msg ) : Met le bot Away avec $msg
  • void nAway ( ) : Supprime le bot Away
  • Boolean isBotOp (string nick) : Indique si nick est Bot operator

Propriétés

  • string msg -> Texte complet reçu du serveur irc.
  • string type -> Type de message (PRIVATE, PUBLIC, ACTION...)
  • string from -> Nick de l'expéditeur du message
  • string mess -> Texte du message seulement.
  • string topicStr -> Texte du TOPIC du Chan.
  • string topicName -> Auteur du TOPIC du Chan.
  • string topicTime -> Date et heure de création du TOPIC du Chan.
  • array nickOnChan( nick )=time -> Liste des nick connectés avec date/heure connection.
  • array botOp( nick )=TRUE|FALSE -> Liste des ops du bot avec leur état d'identification.

Exemple de fonction pour faire parler le bot :

<?php
    
private function myFunction() {
        
        if(
preg_match('`^\!cri (.*)`i'$this->main->mess,$T)) {
            
$this->main->sendMsg('HAAAAAAAAAaaaaaaaaaa........ !!! '.$T[1]);
        }
    }

?>

Si le message du chan est : !cri texte alors le bot poussera son cri suivi du texte. go to the top

Fichier desc.xml

Ce fichier est exploité par la classe plugins et permet d'afficher l'aide sur le chan.
Il est aussi utilisé sur ce site pour présenter la documentation du plugin.
Il contient la description du plugin ainsi que l'aide pour la syntaxe des commandes.
Exemple :

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="http://classes.scriptsphp.org/style/BotPlug.css" media="projection, screen, tv"?>
<!DOCTYPE class PUBLIC "-//NTE//DTD BotPlug//FR" "http://classes.scriptsphp.org/style/BotPlug.dtd">
<plugin>
<name>plug_myplug</name>
<author>mcAllan</author>
<version>0.1</version>
<last_modified>30-08-2006</last_modified>
<label>Cris du bot</label>
<active>1</active>
<desc>Cris du bot la nuit au fond des bois.</desc>
<long_desc>
Exemple de fichier desc.xml d'un plugin

</long_desc>
<syntax>
<command>
<name>cri</name>
<format>!cri</format>
<param>le texte du hurlement</param>
<access>all</access>
<help>
Affiche le cri du bot
</help>
</command>

</syntax>
</plugin>

La propriété "active" indique si le plugin doit être chargé au démarrage du bot.

  • active = 1 : le plugin est chargé au démarrage du bot.
  • active = 0 : le plugin n'est pas chargé au démarrage du bot mais est disponible pour être chargé dynamiquement.
  • active = -1 : le plugin est ignoré.

La propriété "access" indique si la commande est accessible à tous les utilisateurs ou seulement aux ops.
access = op ou all

L'arborescence "syntax" permet de construire l'aide sur les commandes. go to the top

La DTD du fichier desc.xml

<!ELEMENT plugin (name | author | version | last_modified? | label | desc | long_desc | active | syntax?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT version (#PCDATA)>
<!ELEMENT last_modified (#PCDATA)>
<!ELEMENT label (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT long_desc (#PCDATA)>
<!ELEMENT active (#PCDATA)>
<!ELEMENT syntax (command?*)>
<!ELEMENT command (command_name | format | access | help | desc?)>
<!ELEMENT command_name (#PCDATA)>
<!ELEMENT format (#PCDATA)>
<!ELEMENT access (#PCDATA)>
<!ELEMENT help (#PCDATA)>
<!ELEMENT desc (#PCDATA)>

<!ENTITY lt "&lt;">
<!ENTITY gt "&gt;">
<!ENTITY lt "&#38;#60;">
<!ENTITY gt "&#62;">
<!ENTITY amp "&#40;">
<!ENTITY apos "&#39;">
<!ENTITY quot "&#34;">
<!ENTITY eacute "&#62;">

go to the top

Le fichier changelog.xml

Celui-ci se comprend aisément.
On y retrouve, le numéro de version, le titre, la date et la description des changements.
Id indique un éventuel n° de bug enregistré.
Exemple :

<?xml version="1.0" encoding="iso-8859-1"?>
<changelog>
<cl date="2006-08-30" version="0.3">
<change title="Nouvelle version" id="#804">
descrription des modifications
</change>
</cl>
</changelog>

go to the top

Merci de ne pas suivre ce lien emails.

0.1454s | «»
PHP powered