HexChat Perl获取网络上下文而不是通道上下文

时间:2015-04-19 23:06:12

标签: perl hexchat

我在通道消息挂钩中有以下代码来获取服务器上下文并打印到服务器窗口:

my $network = HexChat::get_info('network');
my $networkContext = HexChat::find_context(undef, $network);
HexChat::set_context($networkContext);
HexChat::print('test');

如果我已经打开了服务器窗口,或者在另一台服务器上有一个频道,那么它是有效的,但是如果当前窗口是服务器上的一个频道我请求上下文我获取当前频道而不是服务器的上下文。有没有办法强制find_context总是获取服务器上下文,所以'test'打印在服务器窗口而不是当前频道的窗口

2 个答案:

答案 0 :(得分:1)

将此代码段从one of my scripts翻译为perl基本上:

for chan in hexchat.get_list('channels'):
    if chan.type == 1 and chan.id == hexchat.get_prefs('id'):
        SERVER_CONTEXT = chan.context

find_context()脱离了不太聪明的字符串,因为它们不是唯一的。获取网络的唯一ID始终是正确的,并且使用上下文类型始终获取服务器选项卡(尽管注意用户可以禁用它)。

答案 1 :(得分:0)

以下是我最终使用的perl:

sub get_server_context() {
    foreach my $chan (HexChat::get_list("channels")) {
        if ($chan->{"type"} == 1 && $chan->{"id"} == HexChat::get_prefs("id")) {
            return $chan->{"context"};
        }
    }
}