Advertisement
Guest User

Untitled

a guest
Jul 8th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.96 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use diagnostics;
  6.  
  7. # On utilise la librairie Net::IRC pour se connecter à IRC
  8. use Net::IRC;
  9.  
  10. # Vous utiliserez peut-être Data::Dumper pour le debug, pour savoir de quoi sont composés certains événements...
  11. # use Data::Dumper;
  12.  
  13.  
  14.  
  15. # Configuration des options de connexion (serveur, login) :
  16. my $server = 'irc.epiknet.net';
  17. my $nick = 'LovelyBot'; # A configurer !
  18. my $pass = 'missddd'; # A configurer !
  19.  
  20.  
  21. # Informations concernant le Bot :
  22. my $ircname = 'Bot IRC Perl';
  23. my $username = 'perlBot';
  24. my $version = '2.0';
  25.  
  26.  
  27. # Channel sur lequel on veut que le Bot aille :
  28. my $channel = '#fanclub_miss3d';
  29.  
  30.  
  31. # On crée l'objet qui nous permet de nous connecter à IRC :
  32. my $irc = new Net::IRC;
  33.  
  34.  
  35. # On crée l'objet de connexion à IRC :
  36. my $conn = $irc->newconn(
  37. 'Server' => $server,
  38. 'Port' => 6667,
  39. 'Nick' => $nick,
  40. 'Ircname' => $ircname,
  41. 'Username' => $username
  42. );
  43.  
  44.  
  45. # On installe les fonctions de Hook :
  46. $conn->add_handler('endofmotd', \&on_connect); # Fin du MOTD => on est connecté
  47. $conn->add_handler('public', \&on_public); # Sur le chan
  48. $conn->add_handler('notice', \&on_notice); # En notice
  49. $conn->add_handler('msg', \&on_private); # En privé
  50. $conn->add_handler('caction', \&on_caction); # /me
  51. $conn->add_handler('cversion', \&on_cversion); # Demande de version
  52. $conn->add_handler('cping', \&on_cping); # Demande de PING
  53. $conn->add_handler('ctime', \&on_ctime); # Demande de time
  54.  
  55. # On lance la connexion et la boucle de gestion des événements :
  56. $irc->start();
  57.  
  58.  
  59.  
  60.  
  61.  
  62. ## Les fonctions de gestion des événements :
  63.  
  64. sub on_connect
  65. {
  66. my ($conn, $event) = @_;
  67.  
  68. $conn->join($channel);
  69. $conn->privmsg($channel, 'Bien le bonjour :)');
  70. $conn->print("<$nick>\t| Bien le bonjour :)");
  71.  
  72. $conn->{'connected'} = 1;
  73.  
  74. $conn->privmsg('nickserv', 'IDENTIFY ' . $pass);
  75. $conn->print("Identify : $nick $pass");
  76.  
  77. } # Fin on_connect
  78.  
  79.  
  80. sub on_public
  81. {
  82. my ($conn, $event) = @_;
  83. my $text = $event->{'args'}[0];
  84. my $pseudo = $event->nick;
  85. $conn->print("<" . $event->{'nick'} . ">\t| $text");
  86.  
  87. if (substr($text, 0, 1) eq '!')
  88. { # $text commence par un '!' => il s'agit probablement d'une commande
  89. my $commande = ($text =~ m/^!([^ ]*)/)[0];
  90. if ($commande ne '')
  91. {
  92. if ($commande eq 'kiss')
  93. {
  94. my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
  95. if (defined($params[0]) && $params[0] ne '')
  96. { # Un paramètre (non vide) a été passé à la commande
  97. # => On va pouvoir l'utiliser
  98. $conn->privmsg($channel, "$pseudo fait un énorme kiss à $params[0] !"); # Salutation sur le channel
  99. $conn->print("<$nick>\t| Bonjour $params[0] !"); # Et echo sur la console
  100. }
  101. else
  102. { # Un paramètre attendu n'a pas été fourni à la commande...
  103. $conn->print("Un paramètre attendu");
  104. }
  105. }
  106.  
  107. if ($commande eq 'test')
  108. {
  109. my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
  110. if (defined($params[0]) && $params[0] ne '')
  111. { # Un paramètre (non vide) a été passé à la commande
  112. # => On va pouvoir l'utiliser
  113. $conn->privmsg($channel, "$pseudo fait des TESTS sur le pseudo > $params[0] !"); # Salutation sur le channel
  114. $conn->print("<$nick>\t| Bonjour $params[0] !"); # Et echo sur la console
  115. }
  116. else
  117. { # Un paramètre attendu n'a pas été fourni à la commande...
  118. $conn->print("Un paramètre attendu");
  119. }
  120. }
  121.  
  122.  
  123. if ($commande eq 'coca')
  124. {
  125. my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
  126. if (defined($params[0]) && $params[0] ne '')
  127. { # Un paramètre (non vide) a été passé à la commande
  128. # => On va pouvoir l'utiliser
  129. $conn->privmsg($channel, "$pseudo offre un coca à $params[0] :)"); # Salutation sur le channel
  130. $conn->print("<$nick>\t| Bonjour $params[0] !"); # Et echo sur la console
  131. }
  132. else
  133. { # Un paramètre attendu n'a pas été fourni à la commande...
  134. $conn->print("Un paramètre attendu");
  135. }
  136. }
  137.  
  138. if ($commande eq 'relou')
  139. {
  140. my @params = grep {!/^\s*$/} split(/\s+/, substr($text, length("!$commande")));
  141. if (defined($params[0]) && $params[0] ne '')
  142. { # Un paramètre (non vide) a été passé à la commande
  143. # => On va pouvoir l'utiliser
  144. $conn->privmsg($channel, "$pseudo trouve que $params[0] commence à être relou"); # Salutation sur le channel
  145. $conn->print("<$nick>\t| Bonjour $params[0] !"); # Et echo sur la console
  146. }
  147. else
  148. { # Un paramètre attendu n'a pas été fourni à la commande...
  149. $conn->print("Un paramètre attendu");
  150. }
  151. }
  152.  
  153. else
  154. { # La commande n'a pas été reconnue...
  155. $conn->print("Commande non reconnue");
  156. }
  157. }
  158. else
  159. { # On avait un ! en début de ligne, mais non suivi d'un nom de commande
  160. $conn->print("Pas une commande");
  161. }
  162. }
  163. } # Fin on_public
  164.  
  165. sub on_notice
  166. {
  167. my ($conn, $event) = @_;
  168. my $text = $event->{'args'}[0];
  169. $conn->print("NOTICE<" . $event->nick() . ">\t| $text");
  170. } # Fin on_notice
  171.  
  172.  
  173. sub on_private
  174. {
  175. my ($conn, $event) = @_;
  176. my $text = $event->{'args'}[0];
  177. $conn->print("PRIVE<" . $event->nick() . ">\t| $text");
  178. } # Fin on_private
  179.  
  180.  
  181. sub on_caction
  182. {
  183. my ($conn, $event) = @_;
  184. my $nick = $event->nick;
  185. my $text = $event->{'args'}[0];
  186. $conn->print("* $nick $text");
  187. } # Fin on_caction
  188.  
  189.  
  190. sub on_cversion
  191. {
  192. my ($conn, $event) = @_;
  193. my $nick = $event->nick;
  194. $conn->ctcp_reply($nick, 'VERSION ' . "BotaGabou");
  195. $conn->print("*** CTCP VERSION request de $nick");
  196. } # Fin on_cversion
  197.  
  198.  
  199. sub on_cping
  200. {
  201. my ($conn, $event) = @_;
  202. my $nick = $event->nick;
  203. my $timestamp = $event->{'args'}[0];
  204. $conn->ctcp_reply($nick, 'PING ' . $timestamp);
  205. $conn->print("*** CTCP PING request de $nick");
  206. } # Fin on_cping
  207.  
  208.  
  209. sub on_ctime
  210. {
  211. my ($conn, $event) = @_;
  212. my $date = localtime;
  213. my $nick = $event->nick;
  214. $conn->ctcp_reply($nick, 'TIME ' . $date);
  215. $conn->print("*** CTCP TIME request de $nick");
  216. } # Fin on_ctime
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement