File: | lib/Bot/IRC/Join.pm |
Coverage: | 45.2% |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | package Bot::IRC::Join; | ||||||
2 | # ABSTRACT: Bot::IRC Join and Part Channels; Remember State | ||||||
3 | |||||||
4 | 1 1 1 | 14 10 52 | use strict; | ||||
5 | 1 1 1 | 10 5 1679 | use warnings; | ||||
6 | |||||||
7 | # VERSION | ||||||
8 | |||||||
9 | sub init { | ||||||
10 | 1 | 0 | 6 | my ($bot) = @_; | |||
11 | 1 | 8 | $bot->load('Store'); | ||||
12 | |||||||
13 | $bot->hook( | ||||||
14 | { | ||||||
15 | to_me => 1, | ||||||
16 | text => qr/\bjoin\s+(?<channel>\S+)/i, | ||||||
17 | }, | ||||||
18 | sub { | ||||||
19 | 0 | 0 | my ( $bot, $in, $m ) = @_; | ||||
20 | |||||||
21 | 0 | 0 | if ( $m->{channel} =~ /^#\w+$/ ) { | ||||
22 | 0 | 0 | $bot->reply( 'I will attempt to join: ' . $m->{channel} ); | ||||
23 | 0 | 0 | $bot->join( $m->{channel} ); | ||||
24 | } | ||||||
25 | else { | ||||||
26 | 0 | 0 | $bot->reply( '"' . $m->{channel} . q{" doesn't appear to be a channel I can join.} ); | ||||
27 | } | ||||||
28 | }, | ||||||
29 | 1 | 22 | ); | ||||
30 | |||||||
31 | $bot->hook( | ||||||
32 | { | ||||||
33 | to_me => 1, | ||||||
34 | text => qr/\b(?:part|leave)\s+(?<channel>\S+)/i, | ||||||
35 | }, | ||||||
36 | sub { | ||||||
37 | 0 | 0 | my ( $bot, $in, $m ) = @_; | ||||
38 | |||||||
39 | 0 | 0 | if ( $m->{channel} =~ /^#\w+$/ ) { | ||||
40 | 0 | 0 | $bot->reply( 'I will depart: ' . $m->{channel} ); | ||||
41 | 0 | 0 | $bot->part( $m->{channel} ); | ||||
42 | } | ||||||
43 | else { | ||||||
44 | 0 | 0 | $bot->reply( '"' . $m->{channel} . q{" doesn't appear to be a valid channel name.} ); | ||||
45 | } | ||||||
46 | }, | ||||||
47 | 1 | 14 | ); | ||||
48 | |||||||
49 | 1 | 8 | $bot->helps( | ||||
50 | join => 'Join and part channels. Usage: join <channel>, part <channel>.', | ||||||
51 | ); | ||||||
52 | } | ||||||
53 | |||||||
54 | 1; |