… | |
… | |
29 | } |
29 | } |
30 | |
30 | |
31 | sub users { |
31 | sub users { |
32 | $CON |
32 | $CON |
33 | ? grep $_ ne $CON->nick, keys %{ $CON->channel_list->{$BOTCHAN} || {} } |
33 | ? grep $_ ne $CON->nick, keys %{ $CON->channel_list->{$BOTCHAN} || {} } |
34 | : () |
34 | : () |
35 | } |
35 | } |
|
|
36 | |
|
|
37 | # for nicklist monitoring, #d# should be done event-based |
|
|
38 | our %NICKLIST; |
|
|
39 | our $NICKLIST = AE::timer 20, 59.17, sub { |
|
|
40 | return unless defined &ext::nickmon::NT_OTHER; |
|
|
41 | |
|
|
42 | my %NEXTLIST; |
|
|
43 | for (users) { |
|
|
44 | &ext::nickmon::upd ("irc/$_", &ext::nickmon::NT_OTHER, "irc") |
|
|
45 | unless exists $NICKLIST{$_}; |
|
|
46 | |
|
|
47 | delete $NICKLIST{$_}; |
|
|
48 | undef $NEXTLIST{$_}; |
|
|
49 | } |
|
|
50 | |
|
|
51 | &ext::nickmon::del ("irc/$_") |
|
|
52 | for keys %NICKLIST; |
|
|
53 | |
|
|
54 | %NICKLIST = %NEXTLIST; |
|
|
55 | }; |
36 | |
56 | |
37 | sub handle_fcmd { |
57 | sub handle_fcmd { |
38 | my ($name, $me, $msg) = @_; |
58 | my ($name, $me, $msg) = @_; |
39 | |
59 | |
40 | if ($msg eq "!who") { |
60 | if ($msg eq "!who") { |