source: spip-zone/_acotes_/irc/Edgard.pl @ 25730

Last change on this file since 25730 was 25730, checked in by ben.spip@…, 13 years ago

Edgard ne lit plus les lignes blanches et ne fait plus ddifferences entre majuscule et minuscule

  • Property svn:executable set to *
File size: 2.2 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6# On utilise la librairie Net::IRC pour se connecter à IRC
7use Net::IRC;
8
9
10# Configuration des options de connexion (serveur, login) :
11my $server = 'irc.freenode.net';
12my $nick = 'Edgard';
13
14
15# Informations concernant le Bot :
16my $ircname = 'Bot IRC Perl';
17my $username = 'perlBot';
18my $version = '1.0';
19
20
21# Channel sur lequel on veut que le Bot aille :
22my $channel = '#spip';
23
24
25my $FICHIER_WIKI="/var/www/virtual/edgard.spip.org/htdocs/data/pages/start.txt";
26
27# On crée l'objet qui nous permet de nous connecter à IRC :
28my $irc = new Net::IRC;
29
30
31# On crée l'objet de connexion à IRC :
32my $conn = $irc->newconn(
33    'Server'      => $server,
34    'Port'        => 6667, 
35    'Nick'        => $nick,
36    'Ircname'     => $ircname,
37    'Username'    => $username
38);
39
40
41# On installe les fonctions de Hook :
42$conn->add_handler('376', \&on_connect);         # Fin du MOTD => on est connecté
43$conn->add_handler('public', \&on_public);       # Sur le chan
44
45
46# On lance la connexion et la boucle de gestion des événements :
47
48$irc->start();
49
50
51sub on_connect
52{
53    my ($conn, $event) = @_;
54   
55    $conn->join($channel);
56    $conn->privmsg($channel, 'Salut ... ah  une minute sans IRC, que du bohneur');
57    print "<$nick>\t1 minute sans IRC, que du bonheur !\n";
58   
59    $conn->{'connected'} = 1;
60} # Fin on_connect
61
62
63sub on_public
64{
65    my ($conn, $event) = @_;
66    my $text = $event->{'args'}[0];
67    $conn->print("<" . $event->{'nick'} . ">\t| $text");
68
69                #pour l'instant on lit le fichier à chaque message ... c'est LOURD mais bon
70                # todo : relire le fichier seulement toutes les 5 minutes par exemple
71                 my %hash;
72                 open (FILE,"<$FICHIER_WIKI");
73                 
74                 while (<FILE>) 
75                 {     # chaque ligne est successivement affectée à $_
76                        my $ligne="$_";
77                        chomp $ligne;
78                        (my $cle1, my $cle2)=split(/;/,$ligne);
79                        if ($cle1) 
80                        {
81                                $hash{"$cle1"}=$cle2;
82                                #print __LINE__."bingo $cle1    $cle2 \n";
83                        }
84                 }
85                 close (FILE);
86                   
87                foreach my $key (keys(%hash)) 
88                {
89                        my $lckey=lc($key);
90                        $text=lc($text);
91                        if ($text =~ /$lckey/)
92                        {       
93                                $conn->privmsg($channel, "$hash{$key}"); # Salutation sur le channel
94                        }
95                } 
96} # Fin on_public
Note: See TracBrowser for help on using the repository browser.