ChanOps: dequeue existing identical ban/mute timeouts when adding/updating timeout

This commit is contained in:
Pragmatic Software 2020-04-05 16:58:56 -07:00
parent 7ce2eb87d2
commit dde93db0ac
2 changed files with 8 additions and 2 deletions

View File

@ -486,15 +486,17 @@ sub mute_user {
my ($self, $from, $nick, $user, $host, $arguments, $stuff) = @_;
my ($target, $channel, $length) = $self->{pbot}->{interpreter}->split_args($stuff->{arglist}, 3);
$channel = '' if not defined $channel;
if (not defined $from) {
$self->{pbot}->{logger}->log("Command missing ~from parameter!\n");
return "";
}
if (not defined $channel and $from !~ m/^#/) { return "Usage from private message: mute <mask> <channel> [timeout (default: 24 hours)]"; }
if (not length $channel and $from !~ m/^#/) { return "Usage from private message: mute <mask> <channel> [timeout (default: 24 hours)]"; }
if ($channel !~ m/^#/) {
$length = "$channel $length";
$length = $channel . ' ' . (defined $length ? $length : '');
$length = undef if $length eq ' ';
$channel = exists $stuff->{admin_channel_override} ? $stuff->{admin_channel_override} : $from;
}

View File

@ -224,6 +224,8 @@ sub ban_user_timed {
$data->{reason} = $reason if defined $reason;
$self->{unban_timeout}->add($channel, $mask, $data);
$self->{pbot}->{timer}->dequeue_event("unban_timeout $channel $mask");
if ($length > 0) {
$self->enqueue_unban_timeout($channel, $mask, $length);
}
@ -278,6 +280,8 @@ sub mute_user_timed {
$data->{reason} = $reason if defined $reason;
$self->{unmute_timeout}->add($channel, $mask, $data);
$self->{pbot}->{timer}->dequeue_event("unmute_timeout $channel $mask");
if ($length > 0) {
$self->enqueue_unmute_timeout($channel, $mask, $length);
}