mirror of
https://github.com/irssi/irssi.git
synced 2025-02-02 15:08:01 -05:00
Added /AUTOOP
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@625 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
d74313b368
commit
d86c715790
@ -1,4 +1,5 @@
|
||||
EXTRA_DIST = \
|
||||
autoop.pl \
|
||||
autorejoin.pl \
|
||||
hello.pl \
|
||||
privmsg.pl \
|
||||
|
79
scripts/autoop.pl
Normal file
79
scripts/autoop.pl
Normal file
@ -0,0 +1,79 @@
|
||||
# /AUTOOP <*|#channel> [<nickmasks>]
|
||||
# For Irssi 0.7.96 and above (older versions had a few bugs)
|
||||
|
||||
use Irssi;
|
||||
|
||||
my %opnicks, %temp_opped;
|
||||
|
||||
sub cmd_autoop {
|
||||
my ($data) = @_;
|
||||
my ($channel, $masks) = split(" ", $data, 2);
|
||||
|
||||
if ($channel eq "") {
|
||||
if (!%opnicks) {
|
||||
Irssi::print("Usage: /AUTOOP <*|#channel> [<nickmasks>]");
|
||||
Irssi::print("No-one's being auto-opped currently.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
Irssi::print("Currently auto-opping in channels:");
|
||||
foreach $channel (keys %opnicks) {
|
||||
$masks = $opnicks{$channel};
|
||||
|
||||
if ($channel eq "*") {
|
||||
Irssi::print("All channels: $masks");
|
||||
} else {
|
||||
Irssi::print("$channel: $masks");
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ($masks eq "") {
|
||||
$masks = "<no-one>" if (!$masks);
|
||||
delete $opnicks{$channel};
|
||||
} else {
|
||||
$opnicks{$channel} = $masks;
|
||||
}
|
||||
if ($channel eq "*") {
|
||||
Irssi::print("Now auto-opping in all channels: $masks");
|
||||
} else {
|
||||
Irssi::print("$channel: Now auto-opping: $masks");
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub autoop {
|
||||
my ($channel, $masks, @nicks) = @_;
|
||||
my $nickrec;
|
||||
|
||||
foreach $nickrec (@nicks) {
|
||||
$nick = $nickrec->values()->{'nick'};
|
||||
$host = $nickrec->values()->{'host'};
|
||||
|
||||
if (!$temp_opped{$nick} &&
|
||||
Irssi::irc_masks_match($masks, $nick, $host)) {
|
||||
$channel->command("/op $nick");
|
||||
$temp_opped{$nick} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub event_massjoin {
|
||||
my ($channel, @nicks) = @_;
|
||||
|
||||
return if (!$channel->values()->{'chanop'});
|
||||
|
||||
undef %temp_opped;
|
||||
|
||||
# channel specific
|
||||
my $masks = $opnicks{$channel->values()->{'name'}};
|
||||
autoop($channel, $masks, @nicks) if ($masks);
|
||||
|
||||
# for all channels
|
||||
$masks = $opnicks{"*"};
|
||||
autoop($channel, $masks, @nicks) if ($masks);
|
||||
}
|
||||
|
||||
Irssi::command_bind('autoop', '', 'cmd_autoop');
|
||||
Irssi::signal_add_last('massjoin', 'event_massjoin');
|
Loading…
Reference in New Issue
Block a user