mirror of
https://github.com/pragma-/pbot.git
synced 2025-05-13 18:07:27 +02:00
Improved unban queue handling
This commit is contained in:
parent
53ffb271b3
commit
2746c14f7c
@ -112,7 +112,7 @@ sub unban_user {
|
|||||||
|
|
||||||
return "/msg $nick Usage for /msg: unban <nick/mask> <channel>" if $channel !~ /^#/;
|
return "/msg $nick Usage for /msg: unban <nick/mask> <channel>" if $channel !~ /^#/;
|
||||||
|
|
||||||
$self->{pbot}->{chanops}->unban_user($target, $channel, 1);
|
$self->{pbot}->{chanops}->unban_user($target, $channel);
|
||||||
return "/msg $nick $target has been unbanned from $channel.";
|
return "/msg $nick $target has been unbanned from $channel.";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,7 +187,7 @@ sub unmute_user {
|
|||||||
|
|
||||||
return "/msg $nick Usage for /msg: unmute <mask> <channel>" if $channel !~ /^#/;
|
return "/msg $nick Usage for /msg: unmute <mask> <channel>" if $channel !~ /^#/;
|
||||||
|
|
||||||
$self->{pbot}->{chanops}->unmute_user($target, $channel, 1);
|
$self->{pbot}->{chanops}->unmute_user($target, $channel);
|
||||||
return "/msg $nick $target has been unmuted in $channel.";
|
return "/msg $nick $target has been unmuted in $channel.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ sub ban_user {
|
|||||||
|
|
||||||
sub unban_user {
|
sub unban_user {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my ($mask, $channel, $immediately) = @_;
|
my ($mask, $channel) = @_;
|
||||||
|
|
||||||
my $bans;
|
my $bans;
|
||||||
|
|
||||||
@ -166,14 +166,9 @@ sub unban_user {
|
|||||||
next if $baninfo->{type} ne '+b';
|
next if $baninfo->{type} ne '+b';
|
||||||
next if exists $unbanned{$baninfo->{banmask}};
|
next if exists $unbanned{$baninfo->{banmask}};
|
||||||
$unbanned{$baninfo->{banmask}} = 1;
|
$unbanned{$baninfo->{banmask}} = 1;
|
||||||
|
$self->add_to_unban_queue($channel, 'b', $baninfo->{banmask});
|
||||||
if ($immediately) {
|
|
||||||
$self->add_op_command($channel, "mode $channel -b $baninfo->{banmask}");
|
|
||||||
$self->gain_ops($channel);
|
|
||||||
} else {
|
|
||||||
$self->add_to_unban_queue($channel, 'b', $baninfo->{banmask});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
$self->check_unban_queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub ban_user_timed {
|
sub ban_user_timed {
|
||||||
@ -219,7 +214,7 @@ sub mute_user {
|
|||||||
|
|
||||||
sub unmute_user {
|
sub unmute_user {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my ($mask, $channel, $immediately) = @_;
|
my ($mask, $channel) = @_;
|
||||||
$mask = lc $mask;
|
$mask = lc $mask;
|
||||||
$channel = lc $channel;
|
$channel = lc $channel;
|
||||||
$self->{pbot}->{logger}->log("Unmuting $channel $mask\n");
|
$self->{pbot}->{logger}->log("Unmuting $channel $mask\n");
|
||||||
@ -229,12 +224,8 @@ sub unmute_user {
|
|||||||
$self->{unmute_timeout}->save;
|
$self->{unmute_timeout}->save;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($immediately) {
|
$self->add_to_unban_queue($channel, 'q', $mask);
|
||||||
$self->add_op_command($channel, "mode $channel -q $mask");
|
$self->check_unban_queue;
|
||||||
$self->gain_ops($channel);
|
|
||||||
} else {
|
|
||||||
$self->add_to_unban_queue($channel, 'q', $mask);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub mute_user_timed {
|
sub mute_user_timed {
|
||||||
@ -307,34 +298,43 @@ sub add_to_unban_queue {
|
|||||||
sub check_unban_queue {
|
sub check_unban_queue {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
|
my $MAX_COMMANDS = 4;
|
||||||
|
my $commands = 0;
|
||||||
|
|
||||||
foreach my $channel (keys %{$self->{unban_queue}}) {
|
foreach my $channel (keys %{$self->{unban_queue}}) {
|
||||||
my ($list, $count, $modes);
|
my $done = 0;
|
||||||
$list = '';
|
while (not $done) {
|
||||||
$modes = '-';
|
my ($list, $count, $modes);
|
||||||
$count = 0;
|
$list = '';
|
||||||
|
$modes = '-';
|
||||||
|
$count = 0;
|
||||||
|
|
||||||
foreach my $mode (keys %{$self->{unban_queue}->{$channel}}) {
|
foreach my $mode (keys %{$self->{unban_queue}->{$channel}}) {
|
||||||
while (@{$self->{unban_queue}->{$channel}->{$mode}}) {
|
while (@{$self->{unban_queue}->{$channel}->{$mode}}) {
|
||||||
my $target = pop @{$self->{unban_queue}->{$channel}->{$mode}};
|
my $target = pop @{$self->{unban_queue}->{$channel}->{$mode}};
|
||||||
$list .= " $target";
|
$list .= " $target";
|
||||||
$modes .= $mode;
|
$modes .= $mode;
|
||||||
last if ++$count >= $self->{pbot}->{ircd}->{MODES};
|
last if ++$count >= $self->{pbot}->{ircd}->{MODES};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not @{$self->{unban_queue}->{$channel}->{$mode}}) {
|
||||||
|
delete $self->{unban_queue}->{$channel}->{$mode};
|
||||||
|
}
|
||||||
|
|
||||||
|
last if $count >= $self->{pbot}->{ircd}->{MODES};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (not @{$self->{unban_queue}->{$channel}->{$mode}}) {
|
if (not keys $self->{unban_queue}->{$channel}) {
|
||||||
delete $self->{unban_queue}->{$channel}->{$mode};
|
delete $self->{unban_queue}->{$channel};
|
||||||
|
$done = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
last if $count == $self->{pbot}->{ircd}->{MODES};
|
if ($count) {
|
||||||
}
|
$self->add_op_command($channel, "mode $channel $modes $list");
|
||||||
|
$self->gain_ops($channel);
|
||||||
|
|
||||||
if (not keys $self->{unban_queue}->{$channel}) {
|
return if ++$commands >= $MAX_COMMANDS;
|
||||||
delete $self->{unban_queue}->{$channel};
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ($count) {
|
|
||||||
$self->add_op_command($channel, "mode $channel $modes $list");
|
|
||||||
$self->gain_ops($channel);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user