From: ailin-nemui Date: Wed, 11 Oct 2023 13:21:11 +0000 (+0200) Subject: no_opmsg: new script X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=e63e66d968403ed4a53c7877b8ea2b38b528c376;p=irssi-scripts.irssi.org.git no_opmsg: new script turn wallchops messages into regular channel messages --- diff --git a/scripts/no_opmsg.pl b/scripts/no_opmsg.pl new file mode 100644 index 0000000..9bc396e --- /dev/null +++ b/scripts/no_opmsg.pl @@ -0,0 +1,35 @@ +use strict; +use warnings; +use experimental 'signatures'; +use Irssi; + +our $VERSION = '0.1'; # 533b021b83d26b0 +our %IRSSI = ( + authors => 'Nei', + contact => 'Nei @ anti@conference.jabber.teamidiot.de', + url => "http://anti.teamidiot.de/", + name => 'no_opmsg', + description => 'Kill incoming op messages.', + license => 'ISC', + ); + +our ($op_message); +sub expando_op_message { + $op_message // '' +} + +sub sig_event_op_public ($server, $recoded, $nick, $addr, $target) { + my $statusmsg = $server->isupport('statusmsg') // '@'; + my $st = "[\Q$statusmsg\E]"; + $target =~ s/^(($st)+)//; + local $op_message = $1; + if ($target =~ /^!/) { + my $ch_obj = $server->channel_find($target); + $target = $ch_obj->{visible_name} if $ch_obj; + } + Irssi::signal_stop; + Irssi::signal_emit('message public', $server, $recoded, $nick, $addr, $target); +} + +Irssi::expando_create('op_message' => \&expando_op_message, { 'event privmsg' => 'none' }); +Irssi::signal_add_first('message irc op_public' => 'sig_event_op_public');