mirror of
https://github.com/pragma-/pbot.git
synced 2024-11-20 02:49:49 +01:00
ChanOps: save permanent bans/mutes better
This commit is contained in:
parent
08667eda5d
commit
bac855c1f4
@ -218,17 +218,14 @@ sub ban_user_timed {
|
|||||||
$mask = $self->nick_to_banmask($mask);
|
$mask = $self->nick_to_banmask($mask);
|
||||||
$self->ban_user($mask, $channel, $immediately);
|
$self->ban_user($mask, $channel, $immediately);
|
||||||
|
|
||||||
|
my $data = {};
|
||||||
|
$data->{timeout} = $length > 0 ? gettimeofday + $length : -1;
|
||||||
|
$data->{owner} = $owner if defined $owner;
|
||||||
|
$data->{reason} = $reason if defined $reason;
|
||||||
|
$self->{unban_timeout}->add($channel, $mask, $data);
|
||||||
|
|
||||||
if ($length > 0) {
|
if ($length > 0) {
|
||||||
my $data = {timeout => gettimeofday + $length};
|
|
||||||
$data->{owner} = $owner if defined $owner;
|
|
||||||
$data->{reason} = $reason if defined $reason;
|
|
||||||
$self->{unban_timeout}->add($channel, $mask, $data);
|
|
||||||
$self->enqueue_unban_timeout($channel, $mask, $length);
|
$self->enqueue_unban_timeout($channel, $mask, $length);
|
||||||
} else {
|
|
||||||
if ($self->{unban_timeout}->exists($channel, $mask)) {
|
|
||||||
$self->{unban_timeout}->remove($channel, $mask);
|
|
||||||
$self->{pbot}->{timer}->dequeue_event("unban_timeout $channel $mask");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,7 +243,7 @@ sub checkban {
|
|||||||
|
|
||||||
$result .= "by $owner " if defined $owner;
|
$result .= "by $owner " if defined $owner;
|
||||||
$result .= "for $reason " if defined $reason;
|
$result .= "for $reason " if defined $reason;
|
||||||
$result .= "($duration remaining)";
|
$result .= $timeout > 0 ? "($duration remaining)" : "(permanent)";
|
||||||
return $result;
|
return $result;
|
||||||
} else {
|
} else {
|
||||||
return "$mask has no ban timeout.";
|
return "$mask has no ban timeout.";
|
||||||
@ -275,17 +272,14 @@ sub mute_user_timed {
|
|||||||
$mask = $self->nick_to_banmask($mask);
|
$mask = $self->nick_to_banmask($mask);
|
||||||
$self->mute_user($mask, $channel, $immediately);
|
$self->mute_user($mask, $channel, $immediately);
|
||||||
|
|
||||||
|
my $data = {};
|
||||||
|
$data->{timeout} = $length > 0 ? gettimeofday + $length : -1;
|
||||||
|
$data->{owner} = $owner if defined $owner;
|
||||||
|
$data->{reason} = $reason if defined $reason;
|
||||||
|
$self->{unmute_timeout}->add($channel, $mask, $data);
|
||||||
|
|
||||||
if ($length > 0) {
|
if ($length > 0) {
|
||||||
my $data = { timeout => gettimeofday + $length };
|
|
||||||
$data->{owner} = $owner if defined $owner;
|
|
||||||
$data->{reason} = $reason if defined $reason;
|
|
||||||
$self->{unmute_timeout}->add($channel, $mask, $data);
|
|
||||||
$self->enqueue_unmute_timeout($channel, $mask, $length);
|
$self->enqueue_unmute_timeout($channel, $mask, $length);
|
||||||
} else {
|
|
||||||
if ($self->{unmute_timeout}->exists($channel, $mask)) {
|
|
||||||
$self->{unmute_timeout}->remove($channel, $mask);
|
|
||||||
$self->{pbot}->{timer}->dequeue_event("unmute_timeout $channel $mask");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,7 +297,7 @@ sub checkmute {
|
|||||||
|
|
||||||
$result .= "by $owner " if defined $owner;
|
$result .= "by $owner " if defined $owner;
|
||||||
$result .= "for $reason " if defined $reason;
|
$result .= "for $reason " if defined $reason;
|
||||||
$result .= "($duration remaining)";
|
$result .= $timeout > 0 ? "($duration remaining)" : "(permanent)";
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
} else {
|
} else {
|
||||||
@ -476,7 +470,9 @@ sub enqueue_unmute_timeouts {
|
|||||||
|
|
||||||
foreach my $channel ($self->{unmute_timeout}->get_keys) {
|
foreach my $channel ($self->{unmute_timeout}->get_keys) {
|
||||||
foreach my $mask ($self->{unmute_timeout}->get_keys($channel)) {
|
foreach my $mask ($self->{unmute_timeout}->get_keys($channel)) {
|
||||||
my $interval = $self->{unmute_timeout}->get_data($channel, $mask, 'timeout') - $now;
|
my $timeout = $self->{unmute_timeout}->get_data($channel, $mask, 'timeout');
|
||||||
|
next if $timeout <= 0;
|
||||||
|
my $interval = $timeout - $now;
|
||||||
$interval = 10 if $interval < 10;
|
$interval = 10 if $interval < 10;
|
||||||
$self->enqueue_unmute_timeout($channel, $mask, $interval);
|
$self->enqueue_unmute_timeout($channel, $mask, $interval);
|
||||||
}
|
}
|
||||||
@ -489,7 +485,9 @@ sub enqueue_unban_timeouts {
|
|||||||
|
|
||||||
foreach my $channel ($self->{unban_timeout}->get_keys) {
|
foreach my $channel ($self->{unban_timeout}->get_keys) {
|
||||||
foreach my $mask ($self->{unban_timeout}->get_keys($channel)) {
|
foreach my $mask ($self->{unban_timeout}->get_keys($channel)) {
|
||||||
my $interval = $self->{unban_timeout}->get_data($channel, $mask, 'timeout') - $now;
|
my $timeout = $self->{unban_timeout}->get_data($channel, $mask, 'timeout');
|
||||||
|
next if $timeout <= 0;
|
||||||
|
my $interval = $timeout - $now;
|
||||||
$interval = 10 if $interval < 10;
|
$interval = 10 if $interval < 10;
|
||||||
$self->enqueue_unban_timeout($channel, $mask, $interval);
|
$self->enqueue_unban_timeout($channel, $mask, $interval);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user