Mercurial > hg > skillbot
annotate skillbot.pl @ 5:dddb84241032
Bot can now read skills from the API for its friends
author | Dominic Cleal <dominic@computerkb.co.uk> |
---|---|
date | Sat, 06 Dec 2008 14:48:58 +0000 |
parents | 19e0bf2f7ada |
children | 6b73a2781c15 |
rev | line source |
---|---|
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
2 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
3 # vim:set ts=4 shiftwidth=4 cindent: |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
4 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
5 =pod |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
6 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
7 skillbot |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
8 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
9 Provides notifications of EVE Online skill completions over IRC. |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
10 |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
11 Based on Andy Smith's twitfolk bot: |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
12 $Id: twitfolk.pl 802 2008-11-29 00:07:38Z andy $ |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
13 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
14 Copyright ©2008 Andy Smith <andy+twitfolk.pl@bitfolk.com> |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
15 Portions copyright ©2008 Dominic Cleal <dominic@computerkb.co.uk> |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
16 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
17 Artistic license same as Perl. |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
18 =cut |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
19 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
20 use strict; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
21 use warnings; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
22 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
23 use WebService::EveOnline; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
24 use Data::Dumper; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
25 use Net::IRC; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
26 use HTML::Entities; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
27 use POSIX; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
28 use Encode; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
29 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
30 require 'timers.pl'; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
31 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
32 # Config variables |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
33 my %config; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
34 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
35 my %friends; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
36 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
37 open(CONFIG, "< skillbot.conf") or die "can't open skillbot.conf for reading: $!"; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
38 while(<CONFIG>) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
39 chomp; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
40 s/#.*//; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
41 s/^\s+//; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
42 s/\s+$//; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
43 next unless length; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
44 my ($var, $value) = split(/\s*=\s*/, $_, 2); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
45 $config{$var} = $value; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
46 } |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
47 close(CONFIG) or die "can't close skillbot.conf: $!"; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
48 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
49 my $version = '0.01'; |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
50 my $ircname = "skillbot v$version"; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
51 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
52 my $DEBUG = $ENV{'IRC_DEBUG'} || 0; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
53 my $time_to_die = 0; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
54 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
55 justme(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
56 daemonize(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
57 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
58 open(PIDFILE, "> $config{'pidfile'}") or die "can't write $config{'pidfile'}: $!"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
59 print PIDFILE "$$\n"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
60 close(PIDFILE) or die "can't close $config{'pidfile'}: $!"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
61 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
62 update_friends(undef); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
63 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
64 my $irc = new Net::IRC; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
65 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
66 my $conn = $irc->newconn(Server => $config{'target_server'}, |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
67 Port => $config{'target_port'}, |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
68 Nick => $config{'nick'}, |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
69 Ircname => $ircname, |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
70 Username => $config{'username'}, |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
71 Password => $config{'target_pass'}) |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
72 or die "can't connect to $config{'target_server'}:$config{'target_port'}: $@\n"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
73 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
74 binmode $conn->{_socket}, ":bytes"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
75 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
76 init_handlers($conn); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
77 init_timers(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
78 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
79 until ($time_to_die) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
80 $irc->do_one_loop(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
81 do_timers_once($conn); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
82 do_timers_repeat($conn); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
83 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
84 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
85 if ($conn) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
86 $conn->quit("Caught SIGINT, bye."); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
87 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
88 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
89 cleanup_and_die(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
90 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
91 sub cleanup_and_die { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
92 unlink($config{'pidfile'}); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
93 exit(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
94 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
95 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
96 sub init_handlers |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
97 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
98 my ($self) = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
99 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
100 $self->add_handler('notice', \&on_notice); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
101 $self->add_handler([ 251,252,253,254,302,255 ], \&on_init); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
102 $self->add_handler('disconnect', \&on_disconnect); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
103 $self->add_handler(376, \&on_connect); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
104 $self->add_handler(433, \&on_nick_taken); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
105 $self->add_handler('cversion', \&on_cversion); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
106 $self->add_handler('cping', \&on_ping); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
107 $self->add_handler('join', \&on_join); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
108 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
109 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
110 sub irc_debug |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
111 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
112 my ($fmt, @args) = @_; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
113 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
114 return unless $DEBUG; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
115 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
116 $fmt = '%s| *** ' . $fmt . "\n"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
117 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
118 print sprintf($fmt, scalar gmtime(), @args); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
119 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
120 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
121 =pod |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
122 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
123 Timers to set going when we start. |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
124 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
125 =cut |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
126 sub init_timers |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
127 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
128 # Join channels fort eh first time, ~15 secs after connect |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
129 add_one_shot_timer(15, sub { my ($timer, $self) = @_; join_channels($self); }); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
130 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
131 # Check we are in the right channels every 10 minutes |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
132 add_repeat_timer(600, sub { my ($timer, $self) = @_; join_channels($self); }); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
133 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
134 # Read the "friends" config file every 6 minutes and make sure we have |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
135 # API sessions for them all |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
136 add_repeat_timer(360, sub { my ($timer, $self) = @_; update_friends($self); }); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
137 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
138 # Check for new skills every 5 minutes. |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
139 add_repeat_timer(300, sub { my ($timer, $self) = @_; check_training($self); }); |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
140 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
141 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
142 sub nickserv_id_now |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
143 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
144 my ($self) = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
145 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
146 $self->privmsg("NickServ", sprintf("IDENTIFY %s", $config{nick_pass})); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
147 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
148 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
149 sub nickserv_release |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
150 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
151 my ($self) = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
152 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
153 $self->privmsg("NickServ", sprintf("RELEASE %s %s", $config{nick}, |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
154 $config{nick_pass})); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
155 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
156 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
157 sub on_connect |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
158 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
159 my $self = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
160 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
161 =pod |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
162 $twit->update(sprintf("Connected to irc://%s/, joining channels", $config{target_server})); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
163 $twit->http_code == 200 or print sprintf("%s| *** %s\n", scalar gmtime(), $twit->http_message); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
164 =cut |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
165 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
166 $self->away($config{away}) if ($config{away}); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
167 join_channels($self); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
168 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
169 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
170 sub join_channels |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
171 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
172 my $self = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
173 $self->join('#' . $config{channel}); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
174 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
175 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
176 sub on_join |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
177 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
178 my ($self, $event) = @_; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
179 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
180 # print Dumper($event); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
181 if ($event->nick eq $config{nick}) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
182 =pod |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
183 $twit->update("In channel, checking for tweets"); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
184 $twit->http_code == 200 or print sprintf("%s| *** %s\n", scalar gmtime(), $twit->http_message); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
185 =cut |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
186 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
187 # Now we're in, check for tweets as a one-off |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
188 add_one_shot_timer(10, sub { my ($timer, $self) = @_; check_training($self); }); |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
189 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
190 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
191 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
192 sub on_ping |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
193 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
194 my ($self, $event) = @_; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
195 my $their_nick = $event->nick; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
196 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
197 $self->ctcp_reply($their_nick, "PING " . join (' ', ($event->args))); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
198 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
199 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
200 sub on_init |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
201 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
202 my ($self, $event) = @_; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
203 my (@args) = ($event->args); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
204 shift (@args); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
205 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
206 # irc_debug(@args); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
207 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
208 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
209 sub on_disconnect |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
210 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
211 my ($self, $event) = @_; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
212 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
213 irc_debug("Disconnected from %s (%s). Attempting to reconnect...", |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
214 $event->from, ($event->args())[0]); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
215 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
216 while (! $self->connect()) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
217 irc_debug("%s", $@); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
218 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
219 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
220 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
221 sub on_notice |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
222 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
223 my ($self, $event) = @_; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
224 my ($their_nick) = $event->nick; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
225 my ($notice_txt) = join(' ', $event->args); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
226 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
227 $_ = $their_nick; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
228 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
229 irc_debug("Got notice from %s: %s", $_, $notice_txt); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
230 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
231 if (/^NickServ$/i) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
232 do_nickserv_notice($self, $notice_txt); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
233 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
234 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
235 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
236 sub do_nickserv_notice |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
237 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
238 my ($self, $notice) = @_; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
239 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
240 $_ = $notice; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
241 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
242 if (/This nick is owned by someone else/ || |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
243 /This nickname is registered and protected/i) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
244 irc_debug("ID to NickServ at request of NickServ"); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
245 nickserv_id_now($self); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
246 } elsif (/Your nick has been recovered/i) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
247 irc_debug("NickServ told me I recovered my nick, RELEASE'ing now"); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
248 nickserv_release($self); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
249 } elsif (/Your nick has been released from custody/i) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
250 irc_debug("NickServ told me my nick is released, /nick'ing now"); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
251 $self->nick($config{nick}); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
252 } else { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
253 irc_debug("Ignoring NickServ notice: %s", $notice); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
254 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
255 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
256 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
257 sub on_nick_taken |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
258 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
259 my ($self) = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
260 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
261 $self->nick($config{nick} . $$); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
262 nickserv_recover($self); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
263 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
264 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
265 sub on_cversion |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
266 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
267 my ($self, $event) = @_; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
268 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
269 my $vstring = sprintf("VERSION twitfolk v%s " . |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
270 "(\002grifferz\002 is responsible for this atrocity)", $version); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
271 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
272 $self->ctcp_reply($event->nick, $vstring); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
273 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
274 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
275 sub justme |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
276 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
277 if (open(PIDFILE, "< $config{pidfile}")) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
278 my $pid; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
279 chop($pid = <PIDFILE>); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
280 close(PIDFILE) or die "couldn't close $config{pidfile}: $1"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
281 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
282 if (kill(0, $pid)) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
283 print "$0 already running (pid $pid), bailing out\n"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
284 cleanup_and_die(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
285 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
286 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
287 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
288 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
289 sub handle_sig_int_term |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
290 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
291 $time_to_die = 1; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
292 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
293 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
294 =pod |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
295 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
296 Splurge the perl error to IRC for the amusement of others. |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
297 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
298 =cut |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
299 sub handle_perl_death |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
300 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
301 die @_ if $^S; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
302 my $msg = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
303 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
304 if ($conn) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
305 $conn->quit($msg . ", died"); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
306 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
307 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
308 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
309 sub daemonize |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
310 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
311 $SIG{__DIE__} = \&handle_perl_death; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
312 $SIG{INT} = $SIG{TERM} = \&handle_sig_int_term; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
313 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
314 # Only daemonize if not running debug mode |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
315 return if ($DEBUG); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
316 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
317 my $pid = fork(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
318 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
319 exit if $pid; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
320 die "Couldn't fork: $!" unless defined($pid); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
321 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
322 close(STDOUT); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
323 close(STDERR); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
324 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
325 POSIX::setsid() or die "Can't start a new session: $!"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
326 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
327 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
328 =pod |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
329 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
330 Read a list of friends from the friends_file. These will be friended in |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
331 Twitter if they aren't already. Format is: |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
332 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
333 character_name user_id api_key IRC_nick |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
334 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
335 Start a line with # for a comment. Columns must be tab separated. |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
336 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
337 =cut |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
338 sub update_friends |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
339 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
340 my $self = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
341 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
342 open(FF, "< $config{friends_file}") or die "Couldn't open friends_file: $!"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
343 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
344 while (<FF>) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
345 next if (/^#/); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
346 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
347 if (/^([^\t]+)\t+([0-9]+)\t+([A-F0-9]{64})\t+([^\t]+)/i) { |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
348 my $c = $1; |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
349 my $uid = $2; |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
350 my $key = uc($3); |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
351 my $nick = $4; |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
352 |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
353 if (! $friends{$c}) { |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
354 my $api = WebService::EveOnline->new( { user_id => $uid, |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
355 api_key => $key } ); |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
356 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
357 foreach my $character ($api->characters) { |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
358 next if $c ne $character->name; |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
359 $friends{$c}->{char} = $character; |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
360 last; |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
361 } |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
362 |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
363 unless (defined $friends{$c}->{char}) |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
364 { |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
365 irc_debug("EVE: Unable to find character %s for ID %lu", |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
366 $c, $uid); |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
367 next; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
368 } |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
369 |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
370 $friends{$c}->{api} = $api; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
371 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
372 irc_debug("EVE: Adding new friend '%s' =~ %s", $c, $nick); |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
373 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
374 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
375 $friends{$c}->{nick} = $nick; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
376 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
377 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
378 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
379 close(FF) or warn "Something weird when closing friends_file: $!"; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
380 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
381 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
382 =pod |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
383 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
384 Check for any characters that aren't known to be training, then call the API |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
385 to see if they've started, setting timers. |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
386 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
387 =cut |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
388 sub check_training |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
389 { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
390 my $self = shift; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
391 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
392 foreach my $f (keys %friends) { |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
393 # Skip skills training that we've learnt about |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
394 next if defined $friends{$f}->{skill}; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
395 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
396 my $skill = $friends{$f}->{char}->skill->in_training; |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
397 # Nothing training |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
398 next unless $skill; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
399 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
400 irc_debug("Character %s is training %s (%s)", |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
401 $friends{$f}->{char}->name, $skill->name, |
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
402 $skill->time_remaining); |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
403 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
404 my $text = $skill->name; |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
405 if ($text =~ /[\n\r]/) { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
406 $text =~ s/[\n\r]/ /g; |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
407 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
408 |
5
dddb84241032
Bot can now read skills from the API for its friends
Dominic Cleal <dominic@computerkb.co.uk>
parents:
1
diff
changeset
|
409 $self->notice('#' . $config{channel}, sprintf("[%s] %s", $friends{$f}->{nick}, |
0
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
410 encode("utf8", $text))); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
411 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
412 } |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
413 |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
414 END { |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
415 cleanup_and_die(); |
d6521d5ea884
Import of Andy Smith's twitfolk bot
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff
changeset
|
416 } |