unefede.pl 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  1. #!/usr/bin/perl
  2. # Copyright (c) 2014 Daniel Jakots <vigdis@chown.me>
  3. <<<<<<< HEAD
  4. # Permission to use, copy, modify, and distribute this software for any
  5. # purpose with or without fee is hereby granted, provided that the above
  6. # copyright notice and this permission notice appear in all copies.
  7. =======
  8. #
  9. # Permission to use, copy, modify, and distribute this software for any
  10. # purpose with or without fee is hereby granted, provided that the above
  11. # copyright notice and this permission notice appear in all copies.
  12. #
  13. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  14. # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  15. # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  16. # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  17. # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  18. # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  19. # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  20. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  21. use warnings;
  22. use strict;
  23. package MyBot;
  24. use base qw( Bot::BasicBot );
  25. <<<<<<< HEAD
  26. =======
  27. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  28. binmode STDOUT, ":utf8";
  29. use utf8;
  30. my $nb_adh = 0; # nombre d'adhérents
  31. my $nb_abo = 0; # nombre d'abonnés
  32. my $site = ""; # site web
  33. my $salon = ""; # salon irc/xmpp
  34. my $statut = 0; # étape de 1 à 8 du FAI
  35. my $date_crea = ""; # date de la création de l'asso
  36. my $date_jffdn = ""; # date de la rentrée dans la fédé
  37. my $contact = ""; # email de contact
  38. my $description = ""; # description de l'asso
  39. # le repectoire des données du bot aka autoconf
  40. my $bot_dir = `pwd`; chomp $bot_dir ; $bot_dir .= "/";
  41. my $wrk_dir = "wrk-dir/";
  42. my $dir = $bot_dir.$wrk_dir;
  43. <<<<<<< HEAD
  44. # dictionnaire contenant les regex permettants de trouver les FAI
  45. my %regex = (
  46. # Apinnet
  47. "apinnet" => "\\b(ap[in]|Poitou|Charente|Rochelle|(Deux[- ])?S[èe]vres?|Vienne|Angoul[eêè]me|Niort|Poitiers)",
  48. # Aquilenet
  49. "aquilenet" => "\\b(aq(ui|n)|Bord(o|e?au)|Landes|Gironde)",
  50. # ARN
  51. "arn" => "\\b(a(lsace|rn)|Stras|Colma)",
  52. # Auvernet
  53. "auvernet" => "\\b(Auver|Puy[- ](de[- ])D[oô]me|avn)",
  54. # Cafai
  55. "cafai" => "\\b(cafai|champagne|ardenn?e)",
  56. # faimaison
  57. "faimaison" => "\\b(fma|fail?m|Nantes|Loire[- ]Atlantique)",
  58. # FDN
  59. "fdn" => "\\bf(rench|dn)",
  60. # franciliens.net
  61. "franciliens" => "\\b(f(ranc|cn)|idf|Paris)",
  62. # grifon
  63. "grifon" => "\\b(grif|rennes|[îi]l?le[- ](et[- ])?vilaine)",
  64. # ilico
  65. "ilico" => "\\b(ilc|ill?[iy][ck])|(Corr?[éêèe][sz])",
  66. # illyse
  67. "illyse" => "\\b(ill?y|ill?i[sz]|lyon|rh[ôo]ne|loire|((st|saint)[- ]etienn?e))",
  68. # iloth
  69. "iloth" => "\\b(ilo|mont?pel|h[ée]rault)",
  70. # ldn
  71. "ldn" => "\\b(l(or|dn)|Nancy|Metz|Moselle|Meuse|Meurthe|Vosges)",
  72. # ndn
  73. "ndn" => "\\b(n(ice|dn)|Antibes|Cannes|Valbonne|Alpes[- ]Maritimes)",
  74. # netopi
  75. "netopi" => "\\b(netopi|Seine[- ](et[- ])?Marne)",
  76. # pclight
  77. "pclight" => "\\b(yonne|beon|cheny|pc[- ]?l)",
  78. # rézine
  79. "rezine" => "\\b(r[eé]z|Isère|Grenoble)",
  80. # rhizome
  81. "rhizome" => "\\b(rh?[iy][sz]om|Oise|Compi[eéêè]gne)",
  82. # sames
  83. "sames" => "\\bsam|(Pyrénées[- ]Atlantiques)",
  84. # sdn
  85. "sdn" => "\\b(s(all|dn)|Savoie|Haute[- ]Savoie)",
  86. # teleragno
  87. "teleragno" => "\\b(mars|telerag|telegrano)",
  88. # tetaneutral
  89. "tetaneutral" => "\\b(t(eta|tn|nn)|Toulouse|Comminges|(Haute[- ]Garon?ne))",
  90. # ail-network
  91. "ail" => "\\bail/",
  92. # chaul'hertz
  93. "chaul" => "\\b(c(haul|hz)|hertz|tarn|autan)",
  94. # igwan
  95. "igwan" => "\\b(ig[wn]|sbg|saint[- ]barth)",
  96. # neutrinet
  97. "neutrinet" => "\\b(neutri|n[tre]n|belgique)",
  98. # et le meilleur pour la fin
  99. =======
  100. # symbol auquel le bot répond
  101. my $symbol = "+";
  102. # dictionnaire contenant les regex permettants de trouver les FAI
  103. my %regex = (
  104. "apinnet" => "\\b(ap[in]|Poitou|Charente|Rochelle|(Deux[- ])?S[èe]vres?|Vienne|Angoul[eêè]me|Niort|Poitiers)",
  105. "aquilenet" => "\\b(aq(ui|n)|Bord(o|e?au)|Landes|Gironde)",
  106. "arn" => "\\b(a(lsace|rn)|Stras|Colma)",
  107. "auvernet" => "\\b(Auver|Puy[- ](de[- ])D[oô]me|avn)",
  108. "cafai" => "\\b(cafai|champagne|ardenn?e)",
  109. "faimaison" => "\\b(fma|fail?m|Nantes|Loire[- ]Atlantique)",
  110. "fdn" => "\\bf(rench|dn)",
  111. "franciliens" => "\\b(f(ranc|cn)|idf|Paris)",
  112. "grifon" => "\\b(grif|rennes|[îi]l?le[- ](et[- ])?vilaine)",
  113. "ilico" => "\\b(ilc|ill?[iy][ck])|(Corr?[éêèe][sz])",
  114. "illyse" => "\\b(ill?y|ill?i[sz]|lyon|rh[ôo]ne|loire|((st|saint)[- ]etienn?e))",
  115. "iloth" => "\\b(ilo|mont?pel|h[ée]rault)",
  116. "ldn" => "\\b(l(or|dn)|Nancy|Metz|Moselle|Meuse|Meurthe|Vosges)",
  117. "ndn" => "\\b(n(ice|dn)|Antibes|Cannes|Valbonne|Alpes[- ]Maritimes)",
  118. "netopi" => "\\b(netopi|Seine[- ](et[- ])?Marne)",
  119. "pclight" => "\\b(yonne|beon|cheny|pc[- ]?l)",
  120. "rezine" => "\\b(r[eé]z|Isère|Grenoble)",
  121. "rhizome" => "\\b(rh?[iy][sz]om|Oise|Compi[eéêè]gne)",
  122. "sames" => "\\bsam|(Pyrénées[- ]Atlantiques)",
  123. "sdn" => "\\b(s(all|dn)|Savoie|Haute[- ]Savoie)",
  124. "teleragno" => "\\b(mars|telerag|telegrano)",
  125. "tetaneutral" => "\\b(t(eta|tn|nn)|Toulouse|Comminges|(Haute[- ]Garon?ne))",
  126. "ail" => "\\bail/",
  127. "chaul" => "\\b(c(haul|hz)|hertz|tarn|autan)",
  128. "igwan" => "\\b(ig[wn]|sbg|saint[- ]barth)",
  129. "neutrinet" => "\\b(neutri|n[tre]n|belgique)",
  130. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  131. "ffdn" => "\\bf(ede|fdn|rance|édé)",
  132. );
  133. # Lis le fichier contenant les infos d'un FAI
  134. sub info {
  135. my $fai = shift @_;
  136. my $filename = $dir.$fai.".info";
  137. if (-e $filename)
  138. {
  139. my $fh;
  140. open ($fh, '<', $filename) or die "Impossible d'ouvrir le fichier $filename en lecture";
  141. while (my $line = <$fh>)
  142. {
  143. return $line;
  144. }
  145. close $fh;
  146. }
  147. else
  148. {
  149. return "pas d'information pour ". $fai ."\n";
  150. }
  151. }
  152. # Lis le fichier contenant les nombres adh/abo d'un FAI
  153. sub adh {
  154. my $fai = shift @_;
  155. my $filename = $dir.$fai.".adh";
  156. if (-e $filename)
  157. {
  158. my $fh;
  159. open ($fh, '<', $filename) or die "Impossible d'ouvrir le fichier $filename en lecture";
  160. while (my $line = <$fh>)
  161. {
  162. return $line;
  163. }
  164. close $fh;
  165. }
  166. else
  167. {
  168. return "pas d'information pour ". $fai ."\n";
  169. }
  170. }
  171. # lis le fichier et retourne le contenu
  172. sub lecture_fichier {
  173. <<<<<<< HEAD
  174. my $fichier;
  175. =======
  176. my $fichier = shift @_;
  177. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  178. my $filename = $dir.$fichier;
  179. if (-e $filename)
  180. {
  181. my $fh;
  182. open ($fh, '<', $filename) or die "Impossible d'ouvrir le fichier $filename en lecture";
  183. while (my $line = <$fh>)
  184. {
  185. return $line;
  186. }
  187. close $fh;
  188. }
  189. else
  190. {
  191. return "pas d'information pour \n";
  192. }
  193. }
  194. <<<<<<< HEAD
  195. =======
  196. # on compte le nombre d'adh et d'abo pour la fédé
  197. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  198. sub adh_abo_ffdn {
  199. my $filename = $dir."ffdn.adh";
  200. if (-e $filename)
  201. {
  202. my $fh;
  203. open ($fh, '<', $filename) or die "Impossible d'ouvrir le fichier $filename en lecture";
  204. while (my $line = <$fh>)
  205. {
  206. return $line;
  207. }
  208. close $fh;
  209. }
  210. else
  211. {
  212. return "pas d'information\n";
  213. }
  214. }
  215. ## Le bot lit le chan et réagit
  216. sub said {
  217. my ($self, $message) = @_;
  218. # si on veut des info
  219. <<<<<<< HEAD
  220. if ($message->{body} =~ /^\+info/) {
  221. =======
  222. if ($message->{body} =~ /^\Q$symbol\Einfo/) {
  223. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  224. shift @_;
  225. # Apinnet
  226. if($message->{body} =~ /$regex{"apinnet"}/i) {
  227. info("apinnet");
  228. <<<<<<< HEAD
  229. # return "site : http://www.apinnet.fr/ salon : irc://irc.geeknode.org/#Apinnet dans le Poitou-Charentes";
  230. =======
  231. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  232. }
  233. # Aquilenet
  234. elsif($message->{body} =~ /$regex{"aquilenet"}/i) {
  235. info("aquilenet");
  236. }
  237. # ARN
  238. elsif($message->{body} =~ /$regex{"arn"}/i) {
  239. info("arn");
  240. }
  241. # Auvernet
  242. elsif($message->{body} =~ /$regex{"auvernet"}/i) {
  243. info("auvernet");
  244. }
  245. # Cafai
  246. elsif($message->{body} =~ /$regex{"cafai"}/i) {
  247. info("cafai");
  248. }
  249. # faimaison
  250. elsif($message->{body} =~ /$regex{"faimaison"}/i) {
  251. info("faimaison");
  252. }
  253. # FDN
  254. elsif($message->{body} =~ /$regex{"fdn"}/i) {
  255. info("fdn");
  256. }
  257. # franciliens.net
  258. elsif($message->{body} =~ /$regex{"franciliens"}/i) {
  259. info("franciliens");
  260. }
  261. # grifon
  262. elsif($message->{body} =~ /$regex{"grifon"}/i) {
  263. info("grifon");
  264. }
  265. # ilico
  266. elsif($message->{body} =~ /$regex{"ilico"}/i) {
  267. info("ilico");
  268. }
  269. # illyse
  270. elsif($message->{body} =~ /$regex{"illyse"}/i) {
  271. info("illyse");
  272. }
  273. # iloth
  274. elsif($message->{body} =~ /$regex{"iloth"}/i) {
  275. info("iloth");
  276. }
  277. # ldn
  278. elsif($message->{body} =~ /$regex{"ldn"}/i) {
  279. info("ldn");
  280. }
  281. # ndn
  282. elsif($message->{body} =~ /$regex{"ndn"}/i) {
  283. <<<<<<< HEAD
  284. # return "Pas d'info pour Nice data network";
  285. =======
  286. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  287. info("ndn");
  288. }
  289. # netopi
  290. elsif($message->{body} =~ /$regex{"netopi"}/i) {
  291. <<<<<<< HEAD
  292. #return "Netopi = site : http://netopi.fr ; pas de salon ; en Seine et Marne";
  293. =======
  294. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  295. info("netopi");
  296. }
  297. # pclight
  298. elsif($message->{body} =~ /$regex{"pclight"}/i) {
  299. info("pclight");
  300. }
  301. # rézine
  302. elsif($message->{body} =~ /$regex{"rezine"}/i) {
  303. info("rezine");
  304. }
  305. # rhizome
  306. elsif($message->{body} =~ /$regex{"rhizome"}/i) {
  307. info("rhizome");
  308. }
  309. # sames
  310. elsif($message->{body} =~ /$regex{"sames"}/i) {
  311. info("sames");
  312. }
  313. # sdn
  314. elsif($message->{body} =~ /$regex{"sdn"}/i) {
  315. <<<<<<< HEAD
  316. # return"Sallanches Data Network = siteweb : http://sdnet.info/ ; pas de salon ; à Sallanches (73)";
  317. =======
  318. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  319. info("sdn");
  320. }
  321. # teleragno
  322. elsif($message->{body} =~ /$regex{"teleragno"}/i) {
  323. info("teleragno");
  324. }
  325. # tetaneutral
  326. elsif($message->{body} =~ /$regex{"tetaneutral"}/i) {
  327. info("tetaneutral");
  328. }
  329. # ail-network
  330. elsif($message->{body} =~ /$regex{"ail"}/i) {
  331. info("ail-network");
  332. <<<<<<< HEAD
  333. # return "Aïl-network = siteweb : http://ail-network.org/ ; pas de salon ; Tarn Sud-Est (Pays d'Autan)";
  334. }
  335. # chaul'hertz
  336. elsif($message->{body} =~ /$regex{"chaul"}/i) {
  337. # return "Chaul'Hertz = pas de site ni de salon ; Chauley, hameau à St Maurice en Rivière (71)";
  338. =======
  339. }
  340. # chaul'hertz
  341. elsif($message->{body} =~ /$regex{"chaul"}/i) {
  342. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  343. info("chaul-hertz");
  344. }
  345. # igwan
  346. elsif($message->{body} =~ /$regex{"igwan"}/i) {
  347. info("igwan");
  348. }
  349. # neutrinet
  350. elsif($message->{body} =~ /$regex{"neutrinet"}/i) {
  351. info("neutrinet");
  352. }
  353. elsif($message->{body} =~ /$regex{"ffdn"}/i) {
  354. 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.";
  355. }
  356. <<<<<<< HEAD
  357. # Si le FAI n'est pas valide, on l'indique
  358. else {
  359. return "commande : +info <fai> ou +info <lieu geographique>";
  360. =======
  361. # Si le FAI n'est pas valide, on l'indique
  362. else {
  363. return "commande : ".$symbol."info <fai> ou ".$symbol."info <lieu geographique>";
  364. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  365. }
  366. }
  367. # si on veut le nombre d'adhérent
  368. <<<<<<< HEAD
  369. elsif ($message->{body} =~ /^\+adh/) {
  370. shift @_;
  371. # Apinnet
  372. if($message->{body} =~ /$regex{"apinnet"}/i) {
  373. adh("apinnet");
  374. # return "site : http://www.apinnet.fr/ salon : irc://irc.geeknode.org/#Apinnet dans le Poitou-Charentes";
  375. =======
  376. elsif ($message->{body} =~ /^\Q$symbol\Eadh/) {
  377. shift @_;
  378. # Apinnet
  379. if($message->{body} =~ /$regex{"apinnet"}/i) {
  380. adh("apinnet");
  381. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  382. }
  383. # Aquilenet
  384. elsif($message->{body} =~ /$regex{"aquilenet"}/i) {
  385. adh("aquilenet");
  386. }
  387. # ARN
  388. elsif($message->{body} =~ /$regex{"arn"}/i) {
  389. adh("arn");
  390. }
  391. # Auvernet
  392. elsif($message->{body} =~ /$regex{"auvernet"}/i) {
  393. adh("auvernet");
  394. }
  395. # Cafai
  396. elsif($message->{body} =~ /$regex{"cafai"}/i) {
  397. adh("cafai");
  398. }
  399. # faimaison
  400. elsif($message->{body} =~ /$regex{"faimaison"}/i) {
  401. adh("faimaison");
  402. }
  403. # FDN
  404. elsif($message->{body} =~ /$regex{"fdn"}/i) {
  405. adh("fdn");
  406. }
  407. # franciliens.net
  408. elsif($message->{body} =~ /$regex{"franciliens"}/i) {
  409. adh("franciliens");
  410. }
  411. # grifon
  412. elsif($message->{body} =~ /$regex{"grifon"}/i) {
  413. adh("grifon");
  414. }
  415. # ilico
  416. elsif($message->{body} =~ /$regex{"ilico"}/i) {
  417. adh("ilico");
  418. }
  419. # illyse
  420. elsif($message->{body} =~ /$regex{"illyse"}/i) {
  421. adh("illyse");
  422. }
  423. # iloth
  424. elsif($message->{body} =~ /$regex{"iloth"}/i) {
  425. adh("iloth");
  426. }
  427. # ldn
  428. elsif($message->{body} =~ /$regex{"ldn"}/i) {
  429. adh("ldn");
  430. }
  431. # ndn
  432. elsif($message->{body} =~ /$regex{"ndn"}/i) {
  433. <<<<<<< HEAD
  434. # return "Pas d'adh pour Nice data network";
  435. =======
  436. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  437. adh("ndn");
  438. }
  439. # netopi
  440. elsif($message->{body} =~ /$regex{"netopi"}/i) {
  441. <<<<<<< HEAD
  442. #return "Netopi = site : http://netopi.fr ; pas de salon ; en Seine et Marne";
  443. =======
  444. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  445. adh("netopi");
  446. }
  447. # pclight
  448. elsif($message->{body} =~ /$regex{"pclight"}/i) {
  449. adh("pclight");
  450. }
  451. # rézine
  452. elsif($message->{body} =~ /$regex{"rezine"}/i) {
  453. adh("rezine");
  454. }
  455. # rhizome
  456. elsif($message->{body} =~ /$regex{"rhizome"}/i) {
  457. adh("rhizome");
  458. }
  459. # sames
  460. elsif($message->{body} =~ /$regex{"sames"}/i) {
  461. adh("sames");
  462. }
  463. # sdn
  464. elsif($message->{body} =~ /$regex{"sdn"}/i) {
  465. <<<<<<< HEAD
  466. # return"Sallanches Data Network = siteweb : http://sdnet.adh/ ; pas de salon ; à Sallanches (73)";
  467. =======
  468. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  469. adh("sdn");
  470. }
  471. # teleragno
  472. elsif($message->{body} =~ /$regex{"teleragno"}/i) {
  473. adh("teleragno");
  474. }
  475. # tetaneutral
  476. elsif($message->{body} =~ /$regex{"tetaneutral"}/i) {
  477. adh("tetaneutral");
  478. }
  479. # ail-network
  480. elsif($message->{body} =~ /$regex{"ail"}/i) {
  481. adh("ail-network");
  482. <<<<<<< HEAD
  483. # return "Aïl-network = siteweb : http://ail-network.org/ ; pas de salon ; Tarn Sud-Est (Pays d'Autan)";
  484. }
  485. # chaul'hertz
  486. elsif($message->{body} =~ /$regex{"chaul"}/i) {
  487. # return "Chaul'Hertz = pas de site ni de salon ; Chauley, hameau à St Maurice en Rivière (71)";
  488. =======
  489. }
  490. # chaul'hertz
  491. elsif($message->{body} =~ /$regex{"chaul"}/i) {
  492. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  493. adh("chaul-hertz");
  494. }
  495. # igwan
  496. elsif($message->{body} =~ /$regex{"igwan"}/i) {
  497. adh("igwan");
  498. }
  499. # neutrinet
  500. elsif($message->{body} =~ /$regex{"neutrinet"}/i) {
  501. adh("neutrinet");
  502. }
  503. elsif($message->{body} =~ /$regex{"ffdn"}/i) {
  504. <<<<<<< HEAD
  505. adh("ffdn");
  506. }
  507. # Si le FAI n'est pas valide, on l'indique
  508. else {
  509. return "commande : +adh <fai> ou +adh <lieu geographique>";
  510. =======
  511. 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.";
  512. }
  513. # Si le FAI n'est pas valide, on l'indique
  514. else {
  515. return "commande : ".$symbol."adh <fai> ou ".$symbol."adh <lieu geographique>";
  516. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  517. }
  518. }
  519. # si on veut de l'aide
  520. <<<<<<< HEAD
  521. elsif ($message->{body} =~ /^\+help/) {
  522. return "commandes gérées : +info, +adh, +suivi, +vote, +source";
  523. # 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 - ";
  524. }
  525. # les sources du bot
  526. elsif ($message->{body} =~ /^\+source/) {
  527. lecture_fichier("source");
  528. }
  529. # les infos par rapport aux réunions de suivies
  530. elsif ($message->{body} =~ /^\+suivi/) {
  531. lecture_fichier("suivi");
  532. }
  533. # les infos par rapport aux réunions de suivies
  534. elsif ($message->{body} =~ /^\+vote/) {
  535. =======
  536. elsif ($message->{body} =~ /^\Q$symbol\Ehelp/) {
  537. return "commandes gérées : ".$symbol."info, ".$symbol."adh, ".$symbol."suivi, ".$symbol."vote, ".$symbol."source";
  538. }
  539. # les sources du bot
  540. elsif ($message->{body} =~ /^\Q$symbol\Esource/) {
  541. lecture_fichier("source");
  542. }
  543. # les infos par rapport aux réunions de suivies
  544. elsif ($message->{body} =~ /^\Q$symbol\Esuivi/) {
  545. lecture_fichier("suivi");
  546. }
  547. # les infos par rapport aux réunions de suivies
  548. elsif ($message->{body} =~ /^\Q$symbol\Evote/) {
  549. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  550. lecture_fichier("vote");
  551. }
  552. elsif ($message->{body} =~ /datafoin/) {
  553. my $de = int rand(5);
  554. if ($de==1) {
  555. return "il ne faut pas me donner à manger après minuit /o\\";
  556. }
  557. elsif($de==2){
  558. return "omnomnom";
  559. }
  560. elsif($de==3){
  561. return "mais je vais grossir /o\\";
  562. }
  563. elsif($de==4){
  564. return "vouiii";
  565. }
  566. elsif($de==5){
  567. return "datafoin <3";
  568. }
  569. }
  570. }
  571. # tout ce qu'on écrit dans /tmp/log apparait dans $channel
  572. my $channel = '#ffdn';
  573. sub connected {
  574. <<<<<<< HEAD
  575. # my $channel = shift;
  576. =======
  577. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  578. my $self = shift;
  579. $self->forkit({ channel => $channel,
  580. run => [ qw( /usr/bin/tail -f /tmp/log ) ],
  581. });
  582. }
  583. <<<<<<< HEAD
  584. =======
  585. >>>>>>> e1e4ba39a66a7e535beea14fba6ec9c7ec75ef60
  586. # aucune idée de comment on déclenche cette ligne
  587. sub help { "Je suis le bot de la fédé." }
  588. #Info de connexion du bot
  589. MyBot->new(
  590. server => 'irc.geeknode.org',
  591. channels => [ '#bottestbot', '#ffdn'],
  592. nick => 'UneFede',
  593. username => 'bot',
  594. name => 'Droide de la Federation FDN, run by Vigdis'
  595. )->run();