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

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

Edgard fait son entree ... tremble Shiraz, tremble

  • Property svn:executable set to *
File size: 2.1 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="/home/bmamet/public_html/edgard/data/pages/edgard.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');
57    print "<$nick>\t| Salutations !\n";
58   
59    $conn->{'connected'} = 1;
60} # Fin on_connect
61
62
63
64
65sub on_public
66{
67    my ($conn, $event) = @_;
68    my $text = $event->{'args'}[0];
69    $conn->print("<" . $event->{'nick'} . ">\t| $text");
70
71                #pour l'instant on lit le fichier à chaque message ... c'est LOURD mais bon
72                # todo : relire le fichier seulement toutes les 5 minutes par exemple
73                 my %hash;
74                 open (FILE,"<$FICHIER_WIKI");
75                 
76                 while (<FILE>) 
77                 {     # chaque ligne est successivement affectée à $_
78                        my $ligne="$_";
79                        chomp $ligne;
80                        (my $cle1, my $cle2)=split(/;/,$ligne);
81                        $hash{"$cle1"}=$cle2;
82#                       print "$cle1    $cle2 \n";
83                 }
84                 close (FILE);
85                   
86                ## Les fonctions de gestion des événements :
87
88   
89                foreach my $key (keys(%hash)) {
90#                        print "---- $key\n";
91                         if ($text =~ /$key/)
92                { 
93                    $conn->privmsg($channel, "$hash{$key}"); # Salutation sur le channel
94               
95                }
96                } 
97} # Fin on_public
Note: See TracBrowser for help on using the repository browser.