aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--weechat/perl/stalker.pl38
1 files changed, 28 insertions, 10 deletions
diff --git a/weechat/perl/stalker.pl b/weechat/perl/stalker.pl
index 813ef42..b418fad 100644
--- a/weechat/perl/stalker.pl
+++ b/weechat/perl/stalker.pl
@@ -1,6 +1,6 @@
#
-# Copyright (c) 2013 by Nils Görs <weechatter@arcor.de>
-# Copyright (c) 2013 by Stefan Wold <ratler@stderr.eu>
+# Copyright (c) 2013-2014 by Nils Görs <weechatter@arcor.de>
+# Copyright (c) 2013-2014 by Stefan Wold <ratler@stderr.eu>
# based on irssi script stalker.pl from Kaitlyn Parkhurst (SymKat) <symkat@symkat.com>
# https://github.com/symkat/Stalker
#
@@ -20,6 +20,14 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# History:
+# version 1.4:nils_2@freenode.#weechat
+# 2014-05-14: fix: perl error under some circumstances (thanks Piotrek)
+#
+# version 1.3:nils_2@freenode.#weechat
+# 2014-04-28: fix: output when loading script twice
+#
+# version 1.2:nils_2@freenode.#weechat
+# 2014-04-13: add: support of customise irc_join messages (weechat >= 0.4.4)
#
# version 1.1:nils_2@freenode.#weechat
# 2013-10-31: add: flood-protection on JOINs
@@ -70,7 +78,7 @@
# thanks to firebird and mave_ for testing...
#
# Development is currently hosted at
-# https://github.com/weechatter/weechat-scripts
+# https://github.com/weechat/scripts
#
# Requires:
# DBI
@@ -90,7 +98,7 @@ use File::Spec;
use DBI;
my $SCRIPT_NAME = "stalker";
-my $SCRIPT_VERSION = "1.1";
+my $SCRIPT_VERSION = "1.4";
my $SCRIPT_AUTHOR = "Nils Görs <weechatter\@arcor.de>";
my $SCRIPT_LICENCE = "GPL3";
my $SCRIPT_DESC = "Records and correlates nick!user\@host information";
@@ -1150,14 +1158,24 @@ sub irc_in2_whois_cb
return weechat::WEECHAT_RC_OK;
}
-# callback_data: :nick!~user_2@host JOIN #channel
sub irc_in2_join_cb
{
my ($data, $buffer, $date, $tags, $displayed, $highlight, $prefix, $message) = @_;
+ my ($nick,$user,$host);
+ # get nick, user and host.
+ if ($weechat_version >= 0x00040400)
+ {
+ # use tags to avoid problems with customised JOIN messages (v0.4.4)
+ $nick = ($tags =~ m/(^|,)nick_([^,]*)/) ? $2 : "";
+ ($user,$host) = ($tags =~ m/(^|,)host_(.*)\@([^,]*)/) ? ($2,$3) : ("","");
+ }
+ else
+ {
+ # message: :nick!~user_2@host JOIN #channel
+ ($nick,$user,$host) = ($message =~ /(.*) \((.*)\@(.*)\)/);
+ }
- # get nick, user and host. format: nick (user@host) translated join message
- my ($nick,$user,$host) = ($message =~ /(.*) \((.*)\@(.*)\)/);
return weechat::WEECHAT_RC_OK if (not defined $nick or $nick eq ""
or not defined $user or $user eq ""
or not defined $host or $host eq "");
@@ -1324,15 +1342,15 @@ sub toggle_config_by_set
sub shutdown_cb
{
# close database
- $DBH->disconnect();
- $DBH_child->disconnect();
+ $DBH->disconnect() if ($DBH);
+ $DBH_child->disconnect() if ($DBH_child);
return weechat::WEECHAT_RC_OK;
}
# -------------------------------[ init ]-------------------------------------
# first function called by a WeeChat-script.
weechat::register($SCRIPT_NAME, $SCRIPT_AUTHOR, $SCRIPT_VERSION,
- $SCRIPT_LICENCE, $SCRIPT_DESC, 'shutdown_cb', '');
+ $SCRIPT_LICENCE, $SCRIPT_DESC, 'shutdown_cb', '') || return;
$weechat_version = weechat::info_get('version_number', '');