File Coverage

blib/lib/Sirc/Kick.pm
Criterion Covered Total %
statement 22 53 41.5
branch 1 20 5.0
condition 0 6 0.0
subroutine 6 13 46.1
pod 0 3 0.0
total 29 95 30.5


line stmt bran cond sub pod time code
1             # $Id: Kick.pm,v 1.5 2000-06-30 23:53:02-04 roderick Exp $
2             #
3             # Copyright (c) 1997-2000 Roderick Schertler. All rights reserved.
4             # This program is free software; you can redistribute it and/or modify
5             # it under the same terms as Perl itself.
6              
7 1     1   676 use strict;
  1         61  
  1         48  
8              
9             package Sirc::Kick;
10              
11 1     1   5 use Exporter ();
  1         3  
  1         19  
12 1     1   4 use Sirc::Chantrack qw(%Chan_op);
  1         1  
  1         150  
13 1         92 use Sirc::Util qw(addcmd arg_count_error ban_pattern docommand
14 1     1   5 have_ops optional_channel timer userhost xtell);
  1         2  
15              
16 1     1   6 use vars qw($VERSION @ISA @EXPORT_OK $Debug);
  1         1  
  1         168  
17              
18             BEGIN {
19 1     1   2 $VERSION = do{my@r=q$Revision: 1.5 $=~/\d+/g;sprintf '%d.'.'%03d'x$#r,@r};
  1         11  
  1         7  
20 1 50       5 $VERSION .= '-l' if q$Locker: $ =~ /: \S/;
21              
22             # ban_pattern() is exportable because it used to live here.
23 1         14 @ISA = qw(Exporter);
24 1         3 @EXPORT_OK = qw(ban_pattern kb kbtmp);
25 1         653 $Debug = 0;
26             }
27              
28             sub debug {
29 0 0   0 0   xtell 'kick debug ' . join '', @_
30             if $Debug;
31             }
32              
33             sub kb {
34 0     0 0   debug "kb @_";
35 0 0 0       unless (@_ == 2 || @_ == 3) {
36 0           arg_count_error undef, '2 or 3', @_;
37 0           return;
38             }
39 0           my ($channel, $n, $reason) = @_;
40 0 0         have_ops $channel or return;
41             userhost $n, sub {
42 0     0     my $pattern = ban_pattern $::who, $::user, $::host;
43 0           docommand "^alias unban mode $channel -b $pattern";
44 0           docommand "mode $channel -o+b $::who $pattern";
45 0           docommand "kick $channel $::who $reason";
46 0           };
47             }
48             docommand "^alias unban /eval Sirc::Util::tell_question 'No previous pattern'";
49              
50             # kickban, /kb [channel] nick reason
51              
52             sub main::cmd_kb {
53 0     0     debug "cmd_kb $::args";
54 0 0         optional_channel or return;
55 0           kb split ' ', $::args, 3;
56             }
57             addcmd 'kb';
58              
59             # kbtmp channel nick reason
60              
61             sub kbtmp {
62 0     0 0   debug "kbtmp @_";
63 0 0 0       unless (@_ == 2 || @_ == 3) {
64 0           arg_count_error undef, '2 or 3', @_;
65 0           return;
66             }
67 0           my ($channel, $n, $reason) = @_;
68 0 0         have_ops $channel or return;
69             userhost $n, sub {
70 0     0     my $pattern = "$n!*\@*";
71 0           my $op = $Chan_op{$channel}{$n};
72 0 0         docommand "mode $channel "
    0          
73             . ($op ? '-o' : '')
74             . '+b'
75             . ($op ? " $n": '')
76             . " $pattern";
77 0           docommand "kick $channel $n $reason";
78 0           timer 10, sub { docommand "mode $channel -b $pattern" };
  0            
79 0           };
80             }
81              
82             # /k [channel] nick comment
83              
84             sub main::cmd_k {
85 0     0     debug "cmd_k $::args";
86 0 0         optional_channel or return;
87 0           kbtmp split ' ', $::args, 3;
88             }
89             addcmd 'k';
90              
91             1;