]> git.somenet.org - irc/bugbot.git/blob - BotModules/KeepAlive.bm
GITOLITE.txt
[irc/bugbot.git] / BotModules / KeepAlive.bm
1 ################################
2 # KeepAlive Module             #
3 ################################
4
5 package BotModules::KeepAlive;
6 use vars qw(@ISA);
7 @ISA = qw(BotModules);
8 1;
9
10 # RegisterConfig - Called when initialised, should call registerVariables
11 sub RegisterConfig {
12     my $self = shift;
13     $self->SUPER::RegisterConfig(@_);
14     $self->registerVariables(
15       # [ name, save?, settable? ]
16         ['delay', 1, 1, 20],
17         ['string', 1, 1, 'ping'],
18         ['target', 1, 1, '#spam'],
19     );
20 }
21
22 # Schedule - called when bot connects to a server, to install any schedulers
23 # use $self->schedule($event, $delay, $times, $data)
24 # where $times is 1 for a single event, -1 for recurring events,
25 # and a +ve number for an event that occurs that many times.
26 sub Schedule {
27     my $self = shift;
28     my ($event) = @_;
29     $self->schedule($event, \$self->{'delay'}, -1, 'keepalive');
30     $self->SUPER::Schedule($event);
31 }
32
33 sub Help {
34     my $self = shift;
35     my ($event) = @_;
36     return {
37         '' => 'This is a simple keep-alive module, it regularly sends text out. This has been known to help with network lag.',
38     } if $self->isAdmin($event);
39     return {};
40 }
41
42 sub Scheduled {
43     my $self = shift;
44     my ($event, @data) = @_;
45     if ($data[0] eq 'keepalive') {
46         local $event->{'target'} = $self->{'target'};
47         $self->say($event, $self->{'string'});
48     } else {
49         $self->SUPER::Scheduled($event, @data);
50     }
51 }