use strict; no warnings; use feature qw/switch/; use Irssi; our $VERSION = '0.10'; our %IRSSI = ( author => 'black@justla.me', name => 'delayer.pl', todo => 'NOTHING', ); my %delaylist = (); sub delayer { my ($server, $nick, $user, $host, $real_name, $away_msg) = @_; if ($delaylist{$nick}) { $server->command("query $nick $delaylist{$nick}"); removedelays($nick); } } sub delaycmd { my $command = shift; if (substr($command, 0, 1) eq '-') { $command = substr($command, 1) } my ($option, $args) = split(' ', $command, 2); if (!$option) { listdelays(); return; } given ("$option") { when (/^list$/i) { listdelays() } when (/^add$/i) { ($args) ? adddelays($args) : usage() } when (/^remove$/i || /^rem$/i) { removedelays($args) ; print "$args" } default { usage() } } } sub listdelays { my $nicklist = shift; my @nicks; if (!$nicklist) { @nicks = keys %delaylist; } else { @nicks = split(' ', $nicklist) } if (!@nicks) { print "\cBdelayER\cB: delay list is empty."; return; } print "\cBdelayER\cB"; foreach (@nicks) { print "--> \cB$_\cB: $delaylist{ $_ }"; } } sub adddelays { my $addcmd = shift; my ($nicklist, $msg) = split(' ', $addcmd, 2); if (!$msg) { usage(); return; } my @nicks = split(',', $nicklist); my %hash = map { $_, 1 } @nicks; @nicks = keys %hash; if (keys %delaylist) { my @isect = (); map { $hash{$_} = 1 } keys %delaylist; @isect = grep { $hash{$_} } @nicks; if (@isect) { # removedelays(@isect); } } foreach (@nicks) { $delaylist{ $_ } = $msg; } print "\cBdelayER\cB: " . scalar(@nicks) . ' delays added.'; } sub removedelays { my $nicklist = shift; if (!$nicklist) { %delaylist = (); print "\cBdelayER\cB: All delays removed."; } else { foreach (split(' ', $nicklist)) { delete $delaylist{ $_ }; } print "\cBdelayER\cB: " . scalar(split(' ', $nicklist)) . ' delays removed.'; } } sub usage { print <