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

HexChat Perl get network context instead of channel context

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

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

如果我已经打开服务器 window 或其他服务器上的频道,它会起作用,但如果当前 window 是服务器上的频道,我会请求上下文以获得当前通道的上下文而不是服务器。有什么方法可以强制 find_context 始终获取服务器上下文,以便在服务器 window 中打印 'test' 而不是当前频道的 window

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

这是我最终使用的 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"};
        }
    }
}