summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_data/scripts.yaml11
-rw-r--r--scripts/smartfilter.pl36
2 files changed, 47 insertions, 0 deletions
diff --git a/_data/scripts.yaml b/_data/scripts.yaml
index afbfb9e..feb6ebd 100644
--- a/_data/scripts.yaml
+++ b/_data/scripts.yaml
@@ -4485,3 +4485,14 @@
name: "XQF"
url: "none"
version: "0.14"
+
+- authors: "crshd"
+ changed: "2012-10-02"
+ contact: "christian.brassat@gmail.com"
+ description: "Filters join/part messages if user hasn't been active in a while."
+ filename: "smartfilter.pl"
+ modified: "2012-10-02 21:05:40"
+ license: "BSD"
+ name: "smartfilter"
+ url: "none"
+ version: "0.1"
diff --git a/scripts/smartfilter.pl b/scripts/smartfilter.pl
new file mode 100644
index 0000000..f82ebb1
--- /dev/null
+++ b/scripts/smartfilter.pl
@@ -0,0 +1,36 @@
+use strict;
+use Irssi;
+use vars qw($VERSION %IRSSI);
+
+$VERSION = "0.1";
+
+%IRSSI = (
+ authors => 'Christian Brassat',
+ contact => 'crshd@mail.com',
+ name => 'smartfilter.pl',
+ description => 'This script hides join/part messages.',
+ license => 'BSD',
+ url => 'http://crshd.github.io',
+ changed => '2012-10-02',
+);
+
+our $lastmsg = {};
+
+sub smartfilter {
+ my ($channel, $nick, $address, $reason) = @_;
+ if ($lastmsg->{$nick} <= time() - Irssi::settings_get_int('smartfilter_delay')) {
+ Irssi::signal_stop();
+ }
+};
+
+sub log {
+ my ($server, $msg, $nick, $address, $target) = @_;
+ $lastmsg->{$nick} = time();
+}
+
+Irssi::signal_add('message public', 'log');
+Irssi::signal_add('message join', 'smartfilter');
+Irssi::signal_add('message part', 'smartfilter');
+Irssi::signal_add('message quit', 'smartfilter');
+
+Irssi::settings_add_int('smartfilter', 'smartfilter_delay', 300);