Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
68 lines (54 sloc) 1.96 KB
# vim: ft=perl
use strict;
use warnings;
use Irssi qw(theme_register signal_add servers);
our $VERSION = '1.01';
our %IRSSI = (
authors => 'ilbelkyr',
contact => 'ilbelkyr on freenode, ilbelkyr@shalture.org',
name => 'account-notify',
description => 'Display account identification status changes using CAP account-notify',
license => 'CC0 1.0 <https://creativecommons.org/publicdomain/zero/1.0/legalcode>',
changed => 'Sun Nov 04 00:42:42 CET 2017',
);
theme_register([
account_identified => '{channick_hilight $0} has identified as {hilight $2}',
account_unidentified => '{channick $0} has unidentified',
]);
sub on_account {
my ( $server, $account, $nick, $userhost ) = @_;
$account =~ s/^://;
# Print the notification to all shared channels, and the nick's query if any
for my $c ( $server->channels ) {
print_account( $c, $account, $nick, $userhost ) if $c->nick_find($nick);
}
my $q = $server->query_find($nick);
print_account( $q, $account, $nick, $userhost ) if defined $q;
}
sub print_account {
my ( $witem, $account, $nick, $userhost ) = @_;
if ( $account ne '*' ) {
$witem->printformat( MSGLEVEL_NICKS, 'account_identified', $nick, $userhost, $account );
}
else {
$witem->printformat( MSGLEVEL_NICKS, 'account_unidentified', $nick, $userhost );
}
}
sub on_connected {
my ($server) = @_;
if ( $server->{chat_type} eq 'IRC' ) {
$server->irc_server_cap_toggle( 'account-notify', 1 );
}
}
signal_add({
'event account' => \&on_account,
'event connected' => \&on_connected,
});
# When we are loaded, try to enable account-notify on all servers.
# ...But complain if this irssi is too old
if ( !Irssi::Irc::Server->can('irc_server_cap_toggle') ) {
die 'This script requires a more recent Irssi exposing the client capability API to Perl';
}
for my $server ( servers() ) {
on_connected($server);
}