我在通道消息钩子中有以下代码以获取服务器上下文并打印到服务器窗口:
my $network = HexChat::get_info('network');
my $networkContext = HexChat::find_context(undef, $network);
HexChat::set_context($networkContext);
HexChat::print('test');如果我已经打开了服务器窗口,或者在另一个服务器上打开了一个通道,但是如果当前窗口是服务器上的一个通道,我就请求上下文,因为我得到的是当前通道的上下文,而不是服务器。是否有任何方法强迫find_context始终获取服务器上下文,以便在服务器窗口而不是当前通道的窗口中打印“test”
发布于 2015-04-20 20:33:16
将此片段从我的剧本之一转换为perl基本如下:
for chan in hexchat.get_list('channels'):
if chan.type == 1 and chan.id == hexchat.get_prefs('id'):
SERVER_CONTEXT = chan.contextfind_context()脱离了字符串,因为它们并不是唯一的,所以它们并不很聪明。使用网络的唯一id总是正确的,使用上下文类型总是会获得服务器选项卡(尽管注意到用户可以禁用该选项卡)。
发布于 2015-04-22 17:07:53
下面是我最后使用的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"};
}
}
}https://stackoverflow.com/questions/29736928
复制相似问题