3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-10-03 09:58:42 +02:00

Plugins: unregister event handlers on unload

This commit is contained in:
Pragmatic Software 2020-02-07 12:24:21 -08:00
parent cf9c45f3e9
commit 9f2a0346e0
15 changed files with 56 additions and 7 deletions

View File

@ -72,6 +72,12 @@ sub unload {
$self->dbi_end;
$self->{pbot}->{commands}->unregister('actiontrigger');
$self->{pbot}->{capabilities}->remove('can-actiontrigger');
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.caction', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.join', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.part', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.quit', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.kick', __PACKAGE__);
}
sub create_database {

View File

@ -36,6 +36,12 @@ sub initialize {
$self->{pbot}->{event_dispatcher}->register_handler('irc.caction', sub { $self->on_action(@_) });
}
sub unload {
my ($self) = @_;
$self->{pbot}->{event_dispatcher}->remove_handler('irc.nick', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.caction', __PACKAGE__);
}
sub on_nickchange {
my ($self, $event_type, $event) = @_;
my ($nick, $user, $host, $newnick) = ($event->{event}->nick, $event->{event}->user, $event->{event}->host, $event->{event}->args);

View File

@ -38,6 +38,12 @@ sub initialize {
$self->{kicks} = {};
}
sub unload {
my ($self) = @_;
$self->{pbot}->{event_dispatcher}->remove_handler('irc.kick', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.join', __PACKAGE__);
}
sub on_kick {
my ($self, $event_type, $event) = @_;
my ($nick, $user, $host, $target, $channel, $reason) = ($event->{event}->nick, $event->{event}->user, $event->{event}->host, $event->{event}->to, $event->{event}->{args}[0], $event->{event}->{args}[1]);

View File

@ -35,7 +35,11 @@ sub initialize {
$self->{nicks} = {};
}
sub unload {}
sub unload {
my ($self) = @_;
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.caction', __PACKAGE__);
}
sub on_action {
my ($self, $event_type, $event) = @_;

View File

@ -45,6 +45,8 @@ sub initialize {
sub unload {
my $self = shift;
$self->{pbot}->{timer}->unregister('antirepeat');
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.caction', __PACKAGE__);
}
sub on_public {

View File

@ -38,6 +38,11 @@ sub initialize {
$self->{offenses} = {};
}
sub unload {
my ($self) = @_;
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
}
sub on_public {
my ($self, $event_type, $event) = @_;
my ($nick, $user, $host, $channel, $msg) = ($event->{event}->nick, $event->{event}->user, $event->{event}->host, $event->{event}->{to}[0], $event->{event}->args);

View File

@ -37,6 +37,12 @@ sub initialize {
$self->{rejoins} = {};
}
sub unload {
my ($self) = @_;
$self->{pbot}->{event_dispatcher}->remove_handler('irc.kick', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.part', __PACKAGE__);
}
sub rejoin_channel {
my ($self, $channel) = @_;
$self->{rejoins}->{$channel}->{rejoins} = 0 if not exists $self->{rejoins}->{$channel};

View File

@ -54,6 +54,9 @@ sub unload {
my $self = shift;
$self->{pbot}->{commands}->unregister('battleship');
$self->{pbot}->{timer}->unregister('battleship timer');
$self->{pbot}->{event_dispatcher}->remove_handler('irc.part', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.quit', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.kick', __PACKAGE__);
}
sub on_kick {

View File

@ -48,6 +48,9 @@ sub unload {
my $self = shift;
$self->{pbot}->{commands}->unregister('connect4');
$self->{pbot}->{timer}->unregister('connect4 timer');
$self->{pbot}->{event_dispatcher}->remove_handler('irc.part', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.quit', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.kick', __PACKAGE__);
}
sub on_kick {

View File

@ -52,6 +52,7 @@ sub unload {
$self->{pbot}->{commands}->unregister('counterlist');
$self->{pbot}->{commands}->unregister('countertrigger');
$self->{pbot}->{capabilities}->remove('can-countertrigger');
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
}
sub create_database {

View File

@ -8,7 +8,6 @@ use warnings;
use strict;
use feature 'unicode_strings';
use Carp ();
sub new {
@ -28,9 +27,7 @@ sub initialize {
sub unload {
my $self = shift;
# perform plugin clean-up here
# normally we'd unregister the 'irc.public' event handler; however, the
# event dispatcher will do this automatically for us when it sees there
# is no longer an existing sub.
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
}
sub on_public {

View File

@ -30,6 +30,7 @@ sub initialize {
sub unload {
my $self = shift;
$self->{pbot}->{timer}->unregister('RelayUnreg');
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
}
sub on_public {

View File

@ -86,6 +86,9 @@ sub unload {
$self->{pbot}->{commands}->unregister('spinach');
$self->{pbot}->{timer}->unregister('spinach timer');
$self->{stats}->end if $self->{stats_running};
$self->{pbot}->{event_dispatcher}->remove_handler('irc.part', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.quit', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.kick', __PACKAGE__);
}
sub on_kick {

View File

@ -38,7 +38,9 @@ sub initialize {
}
sub unload {
# nothing to do here
my ($self) = @_;
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.caction', __PACKAGE__);
}
sub on_public {

View File

@ -36,7 +36,11 @@ sub initialize {
$self->{pbot}->{event_dispatcher}->register_handler('irc.caction', sub { $self->show_url_titles(@_) });
}
sub unload {}
sub unload {
my ($self) = @_;
$self->{pbot}->{event_dispatcher}->remove_handler('irc.public', __PACKAGE__);
$self->{pbot}->{event_dispatcher}->remove_handler('irc.caction', __PACKAGE__);
}
sub show_url_titles {
my ($self, $event_type, $event) = @_;