Parcourir la source

Merge branch 'master' of ssh://code.ffdn.org:55555/vigdis/bot-irc

Conflicts:
	json-file.pl
	unefede.pl
Vigdis (DanJ) il y a 10 ans
Parent
commit
11d3ded474
4 fichiers modifiés avec 279 ajouts et 0 suppressions
  1. 20 0
      README.md
  2. 121 0
      dev.pl
  3. 4 0
      json-file.pl
  4. 134 0
      unefede.pl

+ 20 - 0
README.md

@@ -0,0 +1,20 @@
+# UneFede
+
+C'est un bot irc qui (pour l'instant) seulement présent sur le chan #ffdn. Il
+répond à quelques commandes. 
+
+# Fonctionnement
+
+Trois scripts  :
+
+* unefede.pl (basé sur Bot::BasicBot) qui se connecte à irc et lit à
+  partir de fichier plat
+* feed.ksh qui se contente juste de télécharger les json
+* json-file.pl qui va parser les json et écrire dans les fichiers lus
+  par unefede.pl
+
+Seuls ces deux derniers ont intérêt à être dans cron(8).
+
+# Autre
+
+Je complèterai ce readme avec les réponses des questions qu'on me pose :p

+ 121 - 0
dev.pl

@@ -0,0 +1,121 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+
+binmode STDOUT, ":utf8";
+use utf8;
+
+
+my $nb_adh = 0; # nombre d'adhérents
+my $nb_abo = 0; # nombre d'abonnés
+my $site = ""; # site web
+my $salon = ""; # salon irc/xmpp
+my $statut = 0; # étape de 1 à 8 du FAI
+my $date_crea = ""; # date de la création de l'asso
+my $date_jffdn = ""; # date de la rentrée dans la fédé
+my $contact = ""; # email de contact
+my $description = ""; # description de l'asso
+
+# le repectoire des données du bot aka autoconf
+my $bot_dir = `pwd`; chomp $bot_dir ; $bot_dir .= "/";
+my $wrk_dir = "wrk-dir/";
+my $dir = $bot_dir.$wrk_dir;
+
+my %regex = (
+    # Apinnet
+    "apinnet"      => "\b(ap[in]|Poitou|Charente|Rochelle|(Deux[- ])?S[èe]vres?|Vienne|Angoul[eêè]me|Niort|Poitiers)",
+    # Aquilenet
+    "aquilenet"    => "\b(aq(ui|n)|Bord(o|e?au)|Landes|Gironde)",
+    # ARN
+    "arn"          => "\b(a(lsace|rn)|Stras|Colma)",
+    # Auvernet
+    "auvernet"     => "\b(Auver|Puy[- ](de[- ])D[oô]me|avn)",
+    # Cafai
+    "cafai"        => "\b(cafai|champagne|ardenn?e)",
+    # faimaison
+    "faimaison"    => "\b(fma|fail?m|Nantes|Loire[- ]Atlantique)",
+    # FDN
+    "fdn"          => "\bf(rench|dn)",
+    # franciliens.net
+    "franciliens"  =>  "\b(f(ranc|cn)|idf|Paris)",
+    # grifon
+    "grifon"       => "\b(grif|rennes|[îi]l?le[- ](et[- ])?vilaine)",
+    # ilico
+    "ilico"        => "\b(ilc|ill?[iy][ck])|(Corr?[éêèe][sz])",
+    # illyse
+    "illyse"       => "\b(ill?y|ill?i[sz]|lyon|rh[ôo]ne|loire|((st|saint)[- ]etienn?e))",
+    # iloth
+    "iloth"        => "\b(ilo|mont?pel|h[ée]rault)",
+    # ldn
+    "ldn"          => "\b(l(or|dn)|Nancy|Metz|Moselle|Meuse|Meurthe|Vosges)",
+    # ndn
+    "ndn"          => "\b(n(ice|dn)|Antibes|Cannes|Valbonne|Alpes[- ]Maritimes)",
+    # netopi
+    "netopi"       => "\b(netopi|Seine[- ](et[- ])?Marne)",
+    # pclight
+    "pclight"      => "\b(yonne|beon|cheny|pc[- ]?l)",
+    # rézine
+    "rezine"       => "\b(r[eé]z|Isère|Grenoble)",
+    # rhizome
+    "rhizome"      => "\b(rh?[iy][sz]om|Oise|Compi[eéêè]gne)",
+    # sames
+    "same"         => "\bsam|(Pyrénées[- ]Atlantiques)",
+    # sdn
+    "sdn"          => "\b(s(all|dn)|Savoie|Haute[- ]Savoie)",
+    # teleragno
+    "teleragno"    => "\b(mars|telerag|telegrano)",
+    # tetaneutral
+    "tetaneutral"  => "\b(t(eta|tn|nn)|Toulouse|Comminges|(Haute[- ]Garon?ne))",
+    # ail-network
+    "ail"          => "\bail/",
+    # chaul'hertz
+    "chaul"        => "\b(c(haul|hz)|hertz|tarn|autan)",
+    # igwan
+    "igwan"        => "\b(ig[wn]|sbg|saint[- ]barth)",
+    # neutrinet
+    "neutrinet"    => "\b(neutri|n[tre]n|belgique)",
+    # et le meilleur pour la fin 
+    "ffdn"         => "\bf(ede|fdn|rance|édé)",
+    );
+
+
+
+# Lis le fichier contenant les infos d'un FAI
+sub info {
+    my $fai = shift @_;
+    my $filename = $dir.$fai.".info";
+    if (-e $filename)
+    {
+	my $fh;
+	open ($fh, '<', $filename) or die "Impossible d'ouvrir le fichier $filename en lecture";
+	while (my $line = <$fh>)
+	{
+	    return $line;
+	}
+	close $fh;
+    }
+    else
+    {
+	return "pas d'information pour ". $fai ."\n";
+    }
+}
+
+# Lis le fichier contenant les nombres adh/abo d'un FAI
+sub adh {
+    my $fai = shift @_;
+    my $filename = $dir.$fai.".adh";
+    my $fh;
+    open ($fh, '<', $filename) or die "Impossible d'ouvrir le fichier $filename en lecture";
+    while (my $line = <$fh>)
+    {
+	return $line;
+    }
+    close $fh;
+}
+
+print info("ilicao");
+print info("ilico");
+print info "sames";
+print info "fcn";
+print info "illyse";
+print info "fdn";

+ 4 - 0
json-file.pl

@@ -117,7 +117,11 @@ sub info{
 
 
     my $fh2;
     my $fh2;
     open ($fh2, '>', $filename) or die "Impossible d'ouvrir le fichier $filename en écriture";
     open ($fh2, '>', $filename) or die "Impossible d'ouvrir le fichier $filename en écriture";
+<<<<<<< HEAD
     print $fh2 $description . ". Site : ". $site ." - Salon de discussion : ". $salon ." - Adresse de contact : ". $contact . " - Crée le ". $date_crea .", il a rejoint la fédé le ". $date_jffdn ."\n";
     print $fh2 $description . ". Site : ". $site ." - Salon de discussion : ". $salon ." - Adresse de contact : ". $contact . " - Crée le ". $date_crea .", il a rejoint la fédé le ". $date_jffdn ."\n";
+=======
+    print $fh2 $description . ". Site : ". $site ." - Salon de discussion : ". $salon ." - Adresse de contact : ". $contact . " - Créé le ". $date_crea .", il a rejoint la fédé le ". $date_jffdn ."\n";
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
     close $fh2;
     close $fh2;
 }
 }
 
 

+ 134 - 0
unefede.pl

@@ -1,11 +1,19 @@
 #!/usr/bin/perl
 #!/usr/bin/perl
 
 
 # Copyright (c) 2014 Daniel Jakots <vigdis@chown.me>
 # Copyright (c) 2014 Daniel Jakots <vigdis@chown.me>
+<<<<<<< HEAD
 
 
 # Permission to use, copy, modify, and distribute this software for any
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
 # purpose with or without fee is hereby granted, provided that the above
 # copyright notice and this permission notice appear in all copies.
 # copyright notice and this permission notice appear in all copies.
 
 
+=======
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
@@ -21,7 +29,10 @@ use strict;
 package MyBot;
 package MyBot;
 use base qw( Bot::BasicBot );
 use base qw( Bot::BasicBot );
 
 
+<<<<<<< HEAD
 
 
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 binmode STDOUT, ":utf8";
 binmode STDOUT, ":utf8";
 use utf8;
 use utf8;
 
 
@@ -39,6 +50,7 @@ my $description = ""; # description de l'asso
 my $bot_dir = `pwd`; chomp $bot_dir ; $bot_dir .= "/";
 my $bot_dir = `pwd`; chomp $bot_dir ; $bot_dir .= "/";
 my $wrk_dir = "wrk-dir/";
 my $wrk_dir = "wrk-dir/";
 my $dir = $bot_dir.$wrk_dir;
 my $dir = $bot_dir.$wrk_dir;
+<<<<<<< HEAD
 
 
 # dictionnaire contenant les regex permettants de trouver les FAI
 # dictionnaire contenant les regex permettants de trouver les FAI
 
 
@@ -96,6 +108,39 @@ my %regex = (
     # neutrinet
     # neutrinet
     "neutrinet"    => "\\b(neutri|n[tre]n|belgique)",
     "neutrinet"    => "\\b(neutri|n[tre]n|belgique)",
     # et le meilleur pour la fin 
     # et le meilleur pour la fin 
+=======
+# symbol auquel le bot répond
+my $symbol = "+";
+
+# dictionnaire contenant les regex permettants de trouver les FAI
+my %regex = (
+    "apinnet"      => "\\b(ap[in]|Poitou|Charente|Rochelle|(Deux[- ])?S[èe]vres?|Vienne|Angoul[eêè]me|Niort|Poitiers)",
+    "aquilenet"    => "\\b(aq(ui|n)|Bord(o|e?au)|Landes|Gironde)",
+    "arn"          => "\\b(a(lsace|rn)|Stras|Colma)",
+    "auvernet"     => "\\b(Auver|Puy[- ](de[- ])D[oô]me|avn)",
+    "cafai"        => "\\b(cafai|champagne|ardenn?e)",
+    "faimaison"    => "\\b(fma|fail?m|Nantes|Loire[- ]Atlantique)",
+    "fdn"          => "\\bf(rench|dn)",
+    "franciliens"  =>  "\\b(f(ranc|cn)|idf|Paris)",
+    "grifon"       => "\\b(grif|rennes|[îi]l?le[- ](et[- ])?vilaine)",
+    "ilico"        => "\\b(ilc|ill?[iy][ck])|(Corr?[éêèe][sz])",
+    "illyse"       => "\\b(ill?y|ill?i[sz]|lyon|rh[ôo]ne|loire|((st|saint)[- ]etienn?e))",
+    "iloth"        => "\\b(ilo|mont?pel|h[ée]rault)",
+    "ldn"          => "\\b(l(or|dn)|Nancy|Metz|Moselle|Meuse|Meurthe|Vosges)",
+    "ndn"          => "\\b(n(ice|dn)|Antibes|Cannes|Valbonne|Alpes[- ]Maritimes)",
+    "netopi"       => "\\b(netopi|Seine[- ](et[- ])?Marne)",
+    "pclight"      => "\\b(yonne|beon|cheny|pc[- ]?l)",
+    "rezine"       => "\\b(r[eé]z|Isère|Grenoble)",
+    "rhizome"      => "\\b(rh?[iy][sz]om|Oise|Compi[eéêè]gne)",
+    "sames"         => "\\bsam|(Pyrénées[- ]Atlantiques)",
+    "sdn"          => "\\b(s(all|dn)|Savoie|Haute[- ]Savoie)",
+    "teleragno"    => "\\b(mars|telerag|telegrano)",
+    "tetaneutral"  => "\\b(t(eta|tn|nn)|Toulouse|Comminges|(Haute[- ]Garon?ne))",
+    "ail"          => "\\bail/",
+    "chaul"        => "\\b(c(haul|hz)|hertz|tarn|autan)",
+    "igwan"        => "\\b(ig[wn]|sbg|saint[- ]barth)",
+    "neutrinet"    => "\\b(neutri|n[tre]n|belgique)",
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
     "ffdn"         => "\\bf(ede|fdn|rance|édé)",
     "ffdn"         => "\\bf(ede|fdn|rance|édé)",
     );
     );
 
 
@@ -141,7 +186,11 @@ sub adh {
 
 
 # lis le fichier et retourne le contenu
 # lis le fichier et retourne le contenu
 sub lecture_fichier {
 sub lecture_fichier {
+<<<<<<< HEAD
     my $fichier;
     my $fichier;
+=======
+    my $fichier = shift @_;
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
     my $filename = $dir.$fichier;
     my $filename = $dir.$fichier;
     if (-e $filename)
     if (-e $filename)
     {
     {
@@ -160,6 +209,10 @@ sub lecture_fichier {
     
     
 }
 }
 
 
+<<<<<<< HEAD
+=======
+# on compte le nombre d'adh et d'abo pour la fédé
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 sub adh_abo_ffdn {
 sub adh_abo_ffdn {
     my $filename = $dir."ffdn.adh";
     my $filename = $dir."ffdn.adh";
     if (-e $filename)
     if (-e $filename)
@@ -184,13 +237,20 @@ sub adh_abo_ffdn {
 sub said {
 sub said {
     my ($self, $message) = @_;
     my ($self, $message) = @_;
     # si on veut des info
     # si on veut des info
+<<<<<<< HEAD
     if ($message->{body} =~ /^\+info/) {
     if ($message->{body} =~ /^\+info/) {
+=======
+    if ($message->{body} =~ /^\Q$symbol\Einfo/) {
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
         shift @_;
         shift @_;
 
 
 	# Apinnet
 	# Apinnet
 	if($message->{body} =~ /$regex{"apinnet"}/i) {
 	if($message->{body} =~ /$regex{"apinnet"}/i) {
 	    info("apinnet");
 	    info("apinnet");
+<<<<<<< HEAD
 #	    return "site : http://www.apinnet.fr/ salon : irc://irc.geeknode.org/#Apinnet dans le  Poitou-Charentes";
 #	    return "site : http://www.apinnet.fr/ salon : irc://irc.geeknode.org/#Apinnet dans le  Poitou-Charentes";
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	}	
 	}	
 	# Aquilenet
 	# Aquilenet
 	elsif($message->{body} =~ /$regex{"aquilenet"}/i) {
 	elsif($message->{body} =~ /$regex{"aquilenet"}/i) {
@@ -242,12 +302,18 @@ sub said {
 	}
 	}
 	# ndn
 	# ndn
 	elsif($message->{body} =~ /$regex{"ndn"}/i) {
 	elsif($message->{body} =~ /$regex{"ndn"}/i) {
+<<<<<<< HEAD
 #    	    return "Pas d'info pour Nice data network";
 #    	    return "Pas d'info pour Nice data network";
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	    info("ndn");
 	    info("ndn");
 	}
 	}
 	# netopi
 	# netopi
 	elsif($message->{body} =~ /$regex{"netopi"}/i) {
 	elsif($message->{body} =~ /$regex{"netopi"}/i) {
+<<<<<<< HEAD
 	    #return "Netopi = site : http://netopi.fr ; pas de salon ; en Seine et Marne";
 	    #return "Netopi = site : http://netopi.fr ; pas de salon ; en Seine et Marne";
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	    info("netopi");
 	    info("netopi");
 	}
 	}
 	# pclight
 	# pclight
@@ -268,7 +334,10 @@ sub said {
 	}
 	}
 	# sdn
 	# sdn
 	elsif($message->{body} =~ /$regex{"sdn"}/i) {
 	elsif($message->{body} =~ /$regex{"sdn"}/i) {
+<<<<<<< HEAD
 #	    return"Sallanches Data Network = siteweb : http://sdnet.info/ ; pas de salon ; à Sallanches (73)";
 #	    return"Sallanches Data Network = siteweb : http://sdnet.info/ ; pas de salon ; à Sallanches (73)";
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	    info("sdn");
 	    info("sdn");
 	}
 	}
 	# teleragno
 	# teleragno
@@ -282,11 +351,17 @@ sub said {
 	# ail-network
 	# ail-network
 	elsif($message->{body} =~ /$regex{"ail"}/i) {
 	elsif($message->{body} =~ /$regex{"ail"}/i) {
 	    info("ail-network");
 	    info("ail-network");
+<<<<<<< HEAD
 #	    return "Aïl-network = siteweb : http://ail-network.org/ ; pas de salon ; Tarn Sud-Est (Pays d'Autan)";
 #	    return "Aïl-network = siteweb : http://ail-network.org/ ; pas de salon ; Tarn Sud-Est (Pays d'Autan)";
 	}
 	}
 	# chaul'hertz
 	# chaul'hertz
 	elsif($message->{body} =~ /$regex{"chaul"}/i) {
 	elsif($message->{body} =~ /$regex{"chaul"}/i) {
 #	    return "Chaul'Hertz = pas de site ni de salon ; Chauley, hameau à St Maurice en Rivière (71)";	
 #	    return "Chaul'Hertz = pas de site ni de salon ; Chauley, hameau à St Maurice en Rivière (71)";	
+=======
+	}
+	# chaul'hertz
+	elsif($message->{body} =~ /$regex{"chaul"}/i) {
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	    info("chaul-hertz");
 	    info("chaul-hertz");
 	}
 	}
 	# igwan
 	# igwan
@@ -300,14 +375,21 @@ sub said {
 	elsif($message->{body} =~ /$regex{"ffdn"}/i) {
 	elsif($message->{body} =~ /$regex{"ffdn"}/i) {
 	    return "La fédération FDN regroupe des Fournisseurs d'Accès à Internet associatifs se reconnaissant dans des valeurs communes : bénévolat, solidarité, fonctionnement démocratique et à but non lucratif; défense et promotion de la neutralité du Net.";	
 	    return "La fédération FDN regroupe des Fournisseurs d'Accès à Internet associatifs se reconnaissant dans des valeurs communes : bénévolat, solidarité, fonctionnement démocratique et à but non lucratif; défense et promotion de la neutralité du Net.";	
 	}	
 	}	
+<<<<<<< HEAD
 	
 	
 	# Si le FAI n'est pas valide, on l'indique
 	# Si le FAI n'est pas valide, on l'indique
 	else {
 	else {
 	    return "commande : +info <fai> ou +info <lieu geographique>";	
 	    return "commande : +info <fai> ou +info <lieu geographique>";	
+=======
+	# Si le FAI n'est pas valide, on l'indique
+	else {
+	    return "commande : ".$symbol."info <fai> ou ".$symbol."info <lieu geographique>";	
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	}
 	}
     }
     }
     
     
     # si on veut le nombre d'adhérent
     # si on veut le nombre d'adhérent
+<<<<<<< HEAD
     elsif ($message->{body} =~ /^\+adh/) {
     elsif ($message->{body} =~ /^\+adh/) {
         shift @_;
         shift @_;
 
 
@@ -315,6 +397,13 @@ sub said {
 	if($message->{body} =~ /$regex{"apinnet"}/i) {
 	if($message->{body} =~ /$regex{"apinnet"}/i) {
 	    adh("apinnet");
 	    adh("apinnet");
 #	    return "site : http://www.apinnet.fr/ salon : irc://irc.geeknode.org/#Apinnet dans le  Poitou-Charentes";
 #	    return "site : http://www.apinnet.fr/ salon : irc://irc.geeknode.org/#Apinnet dans le  Poitou-Charentes";
+=======
+    elsif ($message->{body} =~ /^\Q$symbol\Eadh/) {
+        shift @_;
+	# Apinnet
+	if($message->{body} =~ /$regex{"apinnet"}/i) {
+	    adh("apinnet");
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	}	
 	}	
 	# Aquilenet
 	# Aquilenet
 	elsif($message->{body} =~ /$regex{"aquilenet"}/i) {
 	elsif($message->{body} =~ /$regex{"aquilenet"}/i) {
@@ -366,12 +455,18 @@ sub said {
 	}
 	}
 	# ndn
 	# ndn
 	elsif($message->{body} =~ /$regex{"ndn"}/i) {
 	elsif($message->{body} =~ /$regex{"ndn"}/i) {
+<<<<<<< HEAD
 #    	    return "Pas d'adh pour Nice data network";
 #    	    return "Pas d'adh pour Nice data network";
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	    adh("ndn");
 	    adh("ndn");
 	}
 	}
 	# netopi
 	# netopi
 	elsif($message->{body} =~ /$regex{"netopi"}/i) {
 	elsif($message->{body} =~ /$regex{"netopi"}/i) {
+<<<<<<< HEAD
 	    #return "Netopi = site : http://netopi.fr ; pas de salon ; en Seine et Marne";
 	    #return "Netopi = site : http://netopi.fr ; pas de salon ; en Seine et Marne";
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	    adh("netopi");
 	    adh("netopi");
 	}
 	}
 	# pclight
 	# pclight
@@ -392,7 +487,10 @@ sub said {
 	}
 	}
 	# sdn
 	# sdn
 	elsif($message->{body} =~ /$regex{"sdn"}/i) {
 	elsif($message->{body} =~ /$regex{"sdn"}/i) {
+<<<<<<< HEAD
 #	    return"Sallanches Data Network = siteweb : http://sdnet.adh/ ; pas de salon ; à Sallanches (73)";
 #	    return"Sallanches Data Network = siteweb : http://sdnet.adh/ ; pas de salon ; à Sallanches (73)";
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	    adh("sdn");
 	    adh("sdn");
 	}
 	}
 	# teleragno
 	# teleragno
@@ -406,11 +504,17 @@ sub said {
 	# ail-network
 	# ail-network
 	elsif($message->{body} =~ /$regex{"ail"}/i) {
 	elsif($message->{body} =~ /$regex{"ail"}/i) {
 	    adh("ail-network");
 	    adh("ail-network");
+<<<<<<< HEAD
 #	    return "Aïl-network = siteweb : http://ail-network.org/ ; pas de salon ; Tarn Sud-Est (Pays d'Autan)";
 #	    return "Aïl-network = siteweb : http://ail-network.org/ ; pas de salon ; Tarn Sud-Est (Pays d'Autan)";
 	}
 	}
 	# chaul'hertz
 	# chaul'hertz
 	elsif($message->{body} =~ /$regex{"chaul"}/i) {
 	elsif($message->{body} =~ /$regex{"chaul"}/i) {
 #	    return "Chaul'Hertz = pas de site ni de salon ; Chauley, hameau à St Maurice en Rivière (71)";	
 #	    return "Chaul'Hertz = pas de site ni de salon ; Chauley, hameau à St Maurice en Rivière (71)";	
+=======
+	}
+	# chaul'hertz
+	elsif($message->{body} =~ /$regex{"chaul"}/i) {
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	    adh("chaul-hertz");
 	    adh("chaul-hertz");
 	}
 	}
 	# igwan
 	# igwan
@@ -422,6 +526,7 @@ sub said {
 	    adh("neutrinet");
 	    adh("neutrinet");
 	}
 	}
 	elsif($message->{body} =~ /$regex{"ffdn"}/i) {
 	elsif($message->{body} =~ /$regex{"ffdn"}/i) {
+<<<<<<< HEAD
 	    adh("ffdn");
 	    adh("ffdn");
 	}	
 	}	
 
 
@@ -429,11 +534,19 @@ sub said {
     	# Si le FAI n'est pas valide, on l'indique
     	# Si le FAI n'est pas valide, on l'indique
     	else {
     	else {
     	    return "commande : +adh <fai> ou +adh <lieu geographique>";	
     	    return "commande : +adh <fai> ou +adh <lieu geographique>";	
+=======
+	    return "La fédération FDN regroupe des Fournisseurs d'Accès à Internet associatifs se reconnaissant dans des valeurs communes : bénévolat, solidarité, fonctionnement démocratique et à but non lucratif; défense et promotion de la neutralité du Net.";	
+	}		
+    	# Si le FAI n'est pas valide, on l'indique
+    	else {
+    	    return "commande : ".$symbol."adh <fai> ou ".$symbol."adh <lieu geographique>";	
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
     	}
     	}
     }
     }
 
 
 
 
     # si on veut de l'aide
     # si on veut de l'aide
+<<<<<<< HEAD
     elsif ($message->{body} =~ /^\+help/) {
     elsif ($message->{body} =~ /^\+help/) {
 	return "commandes gérées : +info, +adh, +suivi, +vote, +source";
 	return "commandes gérées : +info, +adh, +suivi, +vote, +source";
 #	return "pour les infos +info - pour les nombres d'adhérent·e·s et d'abonné·e·s +adh - pour les informations par rapport aux réunios de suivi +suivi - pour les sources du bot +source - ";
 #	return "pour les infos +info - pour les nombres d'adhérent·e·s et d'abonné·e·s +adh - pour les informations par rapport aux réunios de suivi +suivi - pour les sources du bot +source - ";
@@ -448,6 +561,21 @@ sub said {
     }
     }
     # les infos par rapport aux réunions de suivies
     # les infos par rapport aux réunions de suivies
     elsif ($message->{body} =~ /^\+vote/) {
     elsif ($message->{body} =~ /^\+vote/) {
+=======
+    elsif ($message->{body} =~ /^\Q$symbol\Ehelp/) {
+	return "commandes gérées : ".$symbol."info, ".$symbol."adh, ".$symbol."suivi, ".$symbol."vote, ".$symbol."source";
+    }
+    # les sources du bot
+    elsif ($message->{body} =~ /^\Q$symbol\Esource/) {
+	lecture_fichier("source");
+    }
+    # les infos par rapport aux réunions de suivies
+    elsif ($message->{body} =~ /^\Q$symbol\Esuivi/) {
+	lecture_fichier("suivi");
+    }
+    # les infos par rapport aux réunions de suivies
+    elsif ($message->{body} =~ /^\Q$symbol\Evote/) {
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 	lecture_fichier("vote");
 	lecture_fichier("vote");
     }
     }
     elsif ($message->{body} =~ /datafoin/) {
     elsif ($message->{body} =~ /datafoin/) {
@@ -473,14 +601,20 @@ sub said {
 # tout ce qu'on écrit dans /tmp/log apparait dans $channel
 # tout ce qu'on écrit dans /tmp/log apparait dans $channel
 my $channel = '#ffdn';
 my $channel = '#ffdn';
 sub connected {
 sub connected {
+<<<<<<< HEAD
 #    my $channel = shift;
 #    my $channel = shift;
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
     my $self = shift;
     my $self = shift;
     $self->forkit({ channel => $channel,
     $self->forkit({ channel => $channel,
                     run     => [ qw( /usr/bin/tail -f /tmp/log ) ],
                     run     => [ qw( /usr/bin/tail -f /tmp/log ) ],
 		  });
 		  });
 }
 }
 
 
+<<<<<<< HEAD
 
 
+=======
+>>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
 # aucune idée de comment on déclenche cette ligne
 # aucune idée de comment on déclenche cette ligne
 sub help { "Je suis le bot de la fédé." }
 sub help { "Je suis le bot de la fédé." }