mirror of
https://github.com/pragma-/pbot.git
synced 2025-01-11 12:32:37 +01:00
NickList improvements
* rename dumpnicks (60) to nicklist (0) * only logged-in admins can nicklist without arguments to see all channels * nicklist now tracks userdata meta (hostmask, etc) on NAMREPLY
This commit is contained in:
parent
c230a2f3b3
commit
e18ce03173
@ -38,7 +38,7 @@ sub initialize {
|
||||
|
||||
$self->{pbot}->{registry}->add_default('text', 'nicklist', 'debug', '0');
|
||||
|
||||
$self->{pbot}->{commands}->register(sub { $self->dumpnicks(@_) }, "dumpnicks", 60);
|
||||
$self->{pbot}->{commands}->register(sub { $self->show_nicklist(@_) }, "nicklist", 0);
|
||||
|
||||
$self->{pbot}->{event_dispatcher}->register_handler('irc.namreply', sub { $self->on_namreply(@_) });
|
||||
$self->{pbot}->{event_dispatcher}->register_handler('irc.join', sub { $self->on_join(@_) });
|
||||
@ -54,18 +54,31 @@ sub initialize {
|
||||
$self->{pbot}->{event_dispatcher}->register_handler('pbot.part', sub { $self->on_part_channel(@_) });
|
||||
}
|
||||
|
||||
sub dumpnicks {
|
||||
sub show_nicklist {
|
||||
my ($self, $from, $nick, $user, $host, $arguments) = @_;
|
||||
my $nicklist;
|
||||
|
||||
my $admin = $self->{pbot}->{admins}->loggedin($from, "$nick!$user\@$host");
|
||||
|
||||
if (not length $arguments) {
|
||||
if (not $admin) {
|
||||
return "Usage: nicklist <channel>";
|
||||
}
|
||||
$nicklist = Dumper($self->{nicklist});
|
||||
} else {
|
||||
my @args = split / /, $arguments;
|
||||
|
||||
if (@args == 1) {
|
||||
if (not exists $self->{nicklist}->{$arguments}) {
|
||||
return "No nicklist for $arguments.";
|
||||
}
|
||||
$nicklist = Dumper($self->{nicklist}->{$arguments});
|
||||
} else {
|
||||
if (not exists $self->{nicklist}->{$args[0]}) {
|
||||
return "No nicklist for $args[0].";
|
||||
} elsif (not exists $self->{nicklist}->{$args[0]}->{$args[1]}) {
|
||||
return "No such nick $args[1] in channel $args[0].";
|
||||
}
|
||||
$nicklist = Dumper($self->{nicklist}->{$args[0]}->{$args[1]});
|
||||
}
|
||||
}
|
||||
@ -94,8 +107,10 @@ sub remove_channel {
|
||||
|
||||
sub add_nick {
|
||||
my ($self, $channel, $nick) = @_;
|
||||
$self->{pbot}->{logger}->log("Adding nick '$nick' to channel '$channel'\n") if $self->{pbot}->{registry}->get_value('nicklist', 'debug');
|
||||
$self->{nicklist}->{lc $channel}->{lc $nick} = { nick => $nick, timestamp => 0 };
|
||||
if (not exists $self->{nicklist}->{lc $channel}->{lc $nick}) {
|
||||
$self->{pbot}->{logger}->log("Adding nick '$nick' to channel '$channel'\n") if $self->{pbot}->{registry}->get_value('nicklist', 'debug');
|
||||
$self->{nicklist}->{lc $channel}->{lc $nick} = { nick => $nick, timestamp => 0 };
|
||||
}
|
||||
}
|
||||
|
||||
sub remove_nick {
|
||||
@ -255,6 +270,12 @@ sub on_namreply {
|
||||
$stripped_nick =~ s/^[@+%]//g; # remove OP/Voice/etc indicator from nick
|
||||
$self->add_nick($channel, $stripped_nick);
|
||||
|
||||
my ($account_id, $hostmask) = $self->{pbot}->{messagehistory}->{database}->find_message_account_by_nick($stripped_nick);
|
||||
my ($user, $host) = $hostmask =~ m/[^!]+!([^@]+)@(.*)/;
|
||||
$self->set_meta($channel, $stripped_nick, 'hostmask', $hostmask);
|
||||
$self->set_meta($channel, $stripped_nick, 'user', $user);
|
||||
$self->set_meta($channel, $stripped_nick, 'host', $host);
|
||||
|
||||
if ($nick =~ m/\@/) {
|
||||
$self->set_meta($channel, $stripped_nick, '+o', 1);
|
||||
}
|
||||
@ -282,6 +303,9 @@ sub on_join {
|
||||
my ($self, $event_type, $event) = @_;
|
||||
my ($nick, $user, $host, $channel) = ($event->{event}->nick, $event->{event}->user, $event->{event}->host, $event->{event}->to);
|
||||
$self->add_nick($channel, $nick);
|
||||
$self->set_meta($channel, $nick, 'hostmask', "$nick!$user\@$host");
|
||||
$self->set_meta($channel, $nick, 'user', $user);
|
||||
$self->set_meta($channel, $nick, 'host', $host);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user