Blob


1 #!/usr/bin/perl
2 use strict;
3 use warnings;
5 package GreetBot;
6 use base qw(Bot::BasicBot);
8 sub chanjoin {
9 my $self = shift;
10 my $arguments = shift;
11 my $nick = $arguments->{who};
12 if ($nick eq $self->pocoirc->nick_name()) {
13 return;
14 }
15 $self->say(
16 channel => $arguments->{channel},
17 body => "Welcome, $nick!",
18 );
19 }
21 sub chanpart {
22 my $self = shift;
23 my $arguments = shift;
24 $self->say(
25 channel => $arguments->{channel},
26 body => "I'm sad to see $arguments->{who} go.",
27 );
28 }
30 sub emoted {
31 my $self = shift;
32 my $arguments = shift;
34 $self->emote(
35 channel => $arguments->{channel},
36 body => "$arguments->{body} too",
37 );
38 }
40 sub noticed {
41 my $self = shift;
42 my $arguments = shift;
44 my $nick = $arguments->{who};
46 my @notices = (
47 "$nick, please resend this in a normal message",
48 "I'm having a hard time reading your notice.",
49 "Good point, $nick.",
50 "Can you message on the public channel instead?",
51 );
53 $self->notice(
54 who => $nick,
55 channel => $arguments->{channel},
56 body => $notices[int(rand(4))],
57 );
58 }
60 sub topic {
61 my $self = shift;
62 my $arguments = shift;
64 if ($arguments->{who} eq $self->pocoirc->nick_name()) {
65 return;
66 }
67 $self->pocoirc->yield('topic' => $arguments->{channel} => "$arguments->{topic} || Don't change the topic!");
68 }
70 sub nick_change {
71 my $self = shift;
72 my $oldnick = shift;
73 my $newnick = shift;
75 if ($newnick eq $self->pocoirc->nick_name()) {
76 return;
77 }
79 $self->pocoirc->yield('nick' => "$oldnick");
80 $self->say(
81 who => "$newnick",
82 body => "If you don't mind, I'd like to use your old nick.",
83 );
84 }
86 package main;
88 my $bot = GreetBot->new(
89 server => 'irc.example.com',
90 port => '6667',
91 channels => ['#perl102'],
92 nick => 'nickname',
93 name => 'username',
94 );
95 $bot->run();