Sextium

De Site à Mans
Aller à la navigation Aller à la recherche

Bot IRC écrit en Perl

Projet créé pour se divertir sur le chans IRC.

Ce bot est le successeur d'une version écrit en C qui est moins modulable que cette version en Perl.

Il est conçu pour se divertir lors des échanges sur IRC. Il permet d'afficher des macros sur un channel IRC.

Ces macros sont enregistrées par les utilisateurs sous forme d'actions, de messages ou commandes IRC. Il est possible de créer une macro avec plusieurs macros à la suite. Il garde aussi un historie de celles effacées.

Fonctionnalités

Il peut aussi effectuer d'autres petites tâches :

  • Statistique de l'activité des chans avec Pisg
  • Statistique des mots employés, nombre de fois...
  • Anagramme en utilisation du Dictionnaire de René Cougnenc
    • Dico encore présent dans les distribution à base de Debian
  • Gestion des droits à l'activer, des utilisateurs
    • Autorisation d'interagir
    • Blocage d'un utilisateur
  • Protection des utilisateurs définis contre les Kick, MODE -o, ban...

Manuel

Un fichier d'aide avait était écrit en XML/XSL mais celui a été perdu. Une lecture du code source Mybot.pm devrait permette de comprendre comment fonctionnent les macros assez rapidement...

Voici un extrait partiel :

invite [A] || [B] || [C]
(A) $invite nick1 [nickN ...]
        Doit inviter les nick sur le channel où est reçu la demande d'invite

(B) $invite nick1 [nickN ...] #chan1 [#chanN...]
        Doit inviter les nicks sur les channels qui suivent les nicks : #chan1 #chanN...

(C) $invite #chan1 [#ChanN ...]
        Doit inviter l'utilisateur qui envoit la demande sur le chan courant
        il sera invité sur les #channels précisés : #chan1 chanN....

 Si le nick du bot est précisé il est remplacé par celui du demandeur.
    Si l'invite est effectué en Privé (PRIVMSG) sans channel alors je refuse :)

level [nick]
    Renvoit le level d'un utilisateur sous forme numérique OU
    toutes les informations connus dans userlist de $from...
    Si pas d'argument, alors elle renvoit le level de
    l'utilisateur précédent. Dans tous les cas elle est lancée
    au début de &on_cmd() et donc elle possède toujours
    les bons réglages de l'utilisateur courant...

info
    envoit les information du bot et des channels qui l'occupe.
    Précise s'il est en mode talk ou pas.


sleep time
    Marque un temps d'attente.

macro [ name ] [ N° ]
$name(N°)
    name    Correspond au nom de la macro existante. Si elle n'existe pas, une erreur est renvoyé à l'utilisateur.
    N°      Est une numéro de macro existante, ou une suite.
            ex1 $macro 1 8 353 renvera les macro N°1, 8 et 353. Si elle existe, sinon le bot ne réagit pas.
            ex2 $mirc(30)
                Cette est très pratique lorsque vous ajouter plusieurs macro dans une seul. Elle garanti l'emploi de la bonne macro et des ses version aléatoire.

del "macro name" [option]
del "macro name"
    option:
        ALL pour effecer toutes les macros qui porte le même nom. (désactivé)
        ID  N° de la macro. Il peut y avoir plusieurs macro portant le même nom, préciser l'ID
            indique laquelle effacer.
        SANS OPTIONS
        Efface la dernière macro qui a été utilisée ou ajoutée.


Conception

Le Bot est conçu en deux parties.

  1. Celle gérant la connexion au serveur IRC
    • Sextium.pm
      • conçu pour être lisible et donc modifiable rapidement
      • chaque fonction IRC est définie "sub on_irc_IRC_Valide", rendant plus simple l'analyse et l'ajout de fonction. Il ne référence pas tous les code IRC, ex : 331 du Topic envoyé par le serveur, les nouveaux codes : 396, ...
  2. La deuxième, les commandes de base séparées en 4 parties:
    • Mybot.pm
      • Contient &on_cmd qui gère les messages et notifications (PRIVMSG et NOTICE) provenant du serveur.
      • Utilisateurs
      • Commande de base : ban, adduser, ident, log
    • Channel.pm
      • Gestion des évènements des channels
    • Macro.pm
    • Dico.pm

Il évite de flooder le serveur avec sa gestion d'évènement (fonction &send_sleep2). Très pratique pour le "mode Guerre" :D, les commandes sont prioritaires par rapport aux autres. Un utilisateur pourrait tenter de flooder, faire ralentir, le Bot que ça ne gênerait pas pour défendre ses amis.

Un kick, un ban sont donc prioritaire par rapport à quelque chose de moins comme les macros...

Paramétrable

Un fichier "bot.cfg" permet de régler le bot à souhait. Il est géré partiellement avec Config::General et une de mes adaptations.

  • Serveurs à utiliser
  • Nick name du bot
  • Channel où se connecter
    • condition pour joindre un canal, nombre de fois, temps d'attente entre chaque connexion...
  • Log de fonctionne et mode débugge
  • Noms des fichiers : utilisateur, macro, niveaux choisis, stats...

Fichiers

Le fichier des macros est enregistré en XML. Ceci pour facilement la gestion. Le format XML employé dans ce fichier est "fait maison", il est donc très succinct , Idem pour le Xparser qui est un mixte de syntaxe Perl et XML....


Téléchargement

Version 0.5.10 de 2008 https://mans.gyptis.org/ce_que_je_fais/logiciels_softs/Sextium-0.5.10.tar.bz2

Si votre navigateur refuse de télécharger le paquet, veuillez utiliser un autre ou copié/collé lien dans une nouvelle page