1

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

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

如果我已经打开了服务器窗口,或者另一个服务器上的频道,它可以工作,但是如果当前窗口是服务器上的频道,我请求上下文,因为我得到了当前频道而不是服务器的上下文。有什么方法可以强制 find_context 始终获取服务器上下文,以便在服务器窗口而不是当前频道的窗口中打印“测试”

4

2 回答 2

1

基本上将这个片段从我的一个脚本翻译成 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 始终是正确的,并且使用上下文类型始终会获取服务器选项卡(尽管请注意用户可以禁用它)。

于 2015-04-20T20:33:16.510 回答
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"};
        }
    }
}
于 2015-04-22T17:07:53.983 回答