summaryrefslogtreecommitdiffstats
path: root/scripts/mass_hilight_blocker.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/mass_hilight_blocker.pl')
-rw-r--r--scripts/mass_hilight_blocker.pl62
1 files changed, 62 insertions, 0 deletions
diff --git a/scripts/mass_hilight_blocker.pl b/scripts/mass_hilight_blocker.pl
new file mode 100644
index 0000000..559d02d
--- /dev/null
+++ b/scripts/mass_hilight_blocker.pl
@@ -0,0 +1,62 @@
+# disable hilighting of mass-hilights
+# (messages which contain a lot of nicknames)
+#
+# DESCRIPTION
+# sometimes a jester annoys a channel with a message
+# containing a lot of nicks that are in that channel.
+# this script prevents hilighting of a window in this
+# case. number of nicks in the message is user
+# configurable in the variable mass_highlight_threshold.
+#
+# CHANGELOG
+# * 01.05.2004
+# fixed problems with nicks containing brackets
+# added comments, description and this changelog :)
+# * 30.05.2004
+# first version of the script
+
+use strict;
+use Irssi;
+use vars qw($VERSION %IRSSI);
+$VERSION = "0.4";
+%IRSSI = (
+ authors => "Uli Baumann",
+ contact => "f-zappa\@irc-muenster.de",
+ name => "mass_hilight_blocker",
+ description => "Disables hilighting for messages containing a lot of nicknames",
+ license => "GPL",
+ changed => "Sun Nov 11 15:30:00 CET 2018",
+);
+
+
+sub sig_printtext {
+ my ($dest, $text, $stripped) = @_; # our parameters
+ my $window = $dest->{window}; # where irssi wants to output
+ my $num_nicks=-1; # don't count target's nick
+ my $max_num_nicks=Irssi::settings_get_int('mass_hilight_threshold');
+
+ if ($dest->{level} & MSGLEVEL_HILIGHT)# we solely look at hilighted messages
+ {
+ my $server = $dest->{server}; # get server and channel for target
+ my $channel = $server->channel_find($dest->{target});
+
+ foreach my $nick ($channel->nicks()) # walk through nicks
+ {
+ $nick = $nick->{nick};
+ if ($text =~ /\Q$nick/) # does line contain this nick?
+ {$num_nicks++;} # then increase counter
+ }
+
+ if ($num_nicks>=($max_num_nicks)) # all criteria match?
+ {
+ $dest->{level} = MSGLEVEL_CLIENTCRAP;
+ Irssi::signal_continue($dest, $text, $stripped); # continue with changed level
+ $window->print('mass-hilighting in above message ('.$num_nicks.' nicks)',MSGLEVEL_CLIENTCRAP);
+ }
+ }
+}
+
+# tell irssi to use this and initialize variable if necessary
+
+Irssi::signal_add_first('print text', 'sig_printtext');
+Irssi::settings_add_int('misc','mass_hilight_threshold',3);