To create new wiki account, please join us on #znc at Libera.Chat and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.
Privmsg/XChat: Difference between revisions
< Privmsg
>Genec updated |
m Add category |
||
Line 72: | Line 72: | ||
} | } | ||
</pre> | </pre> | ||
[[Category:Modules/Code]] |
Latest revision as of 20:08, 23 July 2013
This Perl script will take care of moving PRIVMSGs from the module provmsg to the proper window
#!/usr/bin/perl # Copyright 2012 Gene Cumm ## Permission is hereby granted, free of charge, to any person ## obtaining a copy of this software and associated documentation ## files (the "Software"), to deal in the Software without ## restriction, including without limitation the rights to use, ## copy, modify, merge, publish, distribute, sublicense, and/or ## sell copies of the Software, and to permit persons to whom ## the Software is furnished to do so, subject to the following ## conditions: ## ## The above copyright notice and this permission notice shall ## be included in all copies or substantial portions of the Software. ## ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ## OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ## HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ## WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ## FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ## OTHER DEALINGS IN THE SOFTWARE. Xchat::register('privmsg2rcvr','0.06','Move Privmsg messages to the reciever\'s window'); # Don't eat the message UNLESS we need to move it and minimize how much logic # is processed before aborting. Xchat::hook_server('PRIVMSG',\&PrivMsgToReceiverWin); # DO try to pop open the desired context window when not found use constant PrivMsgToReceiverWinPOP => 1; sub PrefixToNick { if (($_[0] =~ s/:([^!@]+)([!@].*)?/$1/) >= 1) { return $_[0]; } else { # non-prefix arg return ""; } } sub PrivMsgToReceiverWin { my @msg = @{$_[0]}; my @msge = @{$_[1]}; my $p1; if ( (substr($msg[0], 0, 1)) ne ":") { $p1 = $msg[1]; } else { $p1 = $msg[2]; } if ( (substr($p1, 0, 1)) ne "#") { my $nick = Xchat::get_info("nick"); my $snick = PrefixToNick($msg[0]); if ($snick eq $nick) { my $srv = Xchat::get_info("server"); my $cxt = Xchat::get_context(); if (!(Xchat::find_context($p1, $srv)) && (PrivMsgToReceiverWinPOP)) { # Attempt to open the message window first Xchat::command("QUERY ".$p1); } if (Xchat::set_context($p1, $srv)) { Xchat::emit_print("Channel Message", $nick, substr($msge[3], 1)); Xchat::set_context($cxt); return Xchat::EAT_ALL; } } } return Xchat::EAT_NONE; }