Skip to content

Commit 800f939

Browse files
crazycatdevsflashcode
authored andcommitted
mnick.pl 0.4: add an optional away reason in /mnick, each network can be configured to enable/disable the away status
1 parent e5eb658 commit 800f939

File tree

1 file changed

+51
-10
lines changed

1 file changed

+51
-10
lines changed

perl/mnick.pl

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# This script allows to change your nick on the different networks you are
1919
# connected, by appending or removing a suffix to your current nick on the
2020
# network, based on the defined mask
21-
# Command: /mnick [suffix]
21+
# Command: /mnick [suffix] [away reason]
2222
# * if suffix is set and script enabled on network, will do a
2323
# /nick <current_nick><formatted_suffix>
2424
# * if suffix is not set, will do a
@@ -27,21 +27,35 @@
2727
# Settings:
2828
# * plugins.var.perl.mnick.<network>_enabled : on/off
2929
# * plugins.var.perl.mnick.<network>_mask : default [%s]
30+
# * plugins.var.perl.mnick.<network>_away : on/off
3031
#
3132
# Example
3233
# I'm CrazyCat on net1 and net3, GatoLoco on net2
3334
# * plugins.var.perl.mnick.net1_enabled : on
3435
# * plugins.var.perl.mnick.net1_mask : [%s]
36+
# * plugins.var.perl.mnick.net1_away : off
3537
# * plugins.var.perl.mnick.net2_enabled : on
3638
# * plugins.var.perl.mnick.net2_mask : |%s
37-
# * plugins.var.perl.mnick.net3_enabled : off
39+
# * plugins.var.perl.mnick.net1_away : off
40+
# * plugins.var.perl.mnick.net3_enabled : on
3841
# * plugins.var.perl.mnick.net3_mask : [%s]
39-
# /mnick AFK
42+
# * plugins.var.perl.mnick.net1_away : on
43+
# /mnick Test
44+
# => CrazyCat[Test] on net1, GatoLoco|Test on net2, CrazyCat on net3
45+
# => Away status won't change
46+
# /mnick AFK I'm no more here
4047
# => CrazyCat[AFK] on net1, GatoLoco|AFK on net2, CrazyCat on net3
48+
# => I'll be turned away on net2 and net3 with "I'm no more here" reason
49+
# /mnick Test
50+
# => CrazyCat[Test] on net1, GatoLoco|Test on net2, CrazyCat on net3
51+
# => Away status won't change (keep the previous one)
4152
# /mnick
4253
# => CrazyCat on net1 and net3, GatoLoco on net2
54+
# => away status is removed on net2 and net3
4355
#
4456
# History:
57+
# 2019-09-12, CrazyCat <crazycat@c-p-f.org>
58+
# version 0.4 : add an optionnal away reason
4559
# 2016-05-23, CrazyCat <crazycat@c-p-f.org>:
4660
# version 0.3 : now, you can use alternate nick without doing
4761
# a /mnick before
@@ -51,11 +65,12 @@
5165
# 2014-04-01, CrazyCat <crazycat@c-p-f.org>:
5266
# version 0.1 : first official version
5367

54-
weechat::register("mnick", "CrazyCat", "0.3", "GPL", "Multi Nick Changer", "", "");
68+
weechat::register("mnick", "CrazyCat", "0.4", "GPL", "Multi Nick Changer", "", "");
69+
5570
weechat::hook_command(
5671
"mnick",
5772
"Multi Nick Changer",
58-
"mnick [extension]",
73+
"mnick [extension] [away reason]",
5974
"",
6075
"",
6176
"mnick_change",
@@ -76,21 +91,33 @@ sub mnick_setup
7691
{
7792
weechat::config_set_plugin($name."_enabled", "off");
7893
}
94+
if (!weechat::config_is_set_plugin($name."_away"))
95+
{
96+
weechat::config_set_plugin($name."_away", "off");
97+
}
7998
}
8099
weechat::infolist_free($infolist);
81100
}
82101

83102
sub mnick_change
84103
{
85-
my ($data, $buffer, $text) = @_;
104+
my ($data, $buffer, $args) = @_;
105+
my $ext;
106+
my @reason;
107+
if ($args ne "") {
108+
($ext, @reason) = split(" ", $args);
109+
}
86110
my $newnick;
87111
my $nick;
112+
my @nicks;
113+
my $name;
114+
my $hasreason = @reason;
88115
$infolist = weechat::infolist_get("irc_server", "", "");
89-
if ($text)
116+
if ($ext)
90117
{
91118
while (weechat::infolist_next($infolist))
92119
{
93-
my $name = weechat::infolist_string($infolist, "name");
120+
$name = weechat::infolist_string($infolist, "name");
94121
if (weechat::config_is_set_plugin($name."_enabled")
95122
&& weechat::config_get_plugin($name."_enabled") eq "on"
96123
&& weechat::infolist_integer($infolist, "is_connected")==1)
@@ -100,17 +127,25 @@ sub mnick_change
100127
{
101128
$nick = weechat::info_get('irc_nick', $name);
102129
weechat::config_set_plugin($name."_backnick", $nick);
130+
103131
} else {
104132
$nick = weechat::config_get_plugin($name."_backnick");
105133
}
106-
$newnick = sprintf($nick . weechat::config_get_plugin($name."_mask"), $text);
134+
$newnick = sprintf($nick . weechat::config_get_plugin($name."_mask"), $ext);
107135
weechat::command($name, "/quote -server ".$name." nick ".$newnick);
108136
}
137+
if ( $hasreason != 0
138+
&& weechat::infolist_integer($infolist, "is_connected")==1
139+
&& weechat::config_is_set_plugin($name."_away")
140+
&& weechat::config_get_plugin($name."_away") eq "on")
141+
{
142+
weechat::command($name, "/quote -server ".$name. " away :".join(" ", @reason));
143+
}
109144
}
110145
} else {
111146
while (weechat::infolist_next($infolist))
112147
{
113-
my $name = weechat::infolist_string($infolist, "name");
148+
$name = weechat::infolist_string($infolist, "name");
114149
$nick = weechat::info_get('irc_nick', $name);
115150
if (weechat::config_is_set_plugin($name."_enabled")
116151
&& weechat::config_get_plugin($name."_enabled") eq "on"
@@ -126,6 +161,12 @@ sub mnick_change
126161
weechat::command($name, "/quote -server ".$name." nick ".$newnick);
127162
weechat::config_set_plugin($name."_backnick", "");
128163
}
164+
if ( weechat::infolist_integer($infolist, "is_connected")==1
165+
&& weechat::config_is_set_plugin($name."_away")
166+
&& weechat::config_get_plugin($name."_away") eq "on")
167+
{
168+
weechat::command($name, "/quote -server ".$name. " away");
169+
}
129170
}
130171
}
131172
weechat::infolist_free($infolist);

0 commit comments

Comments
 (0)