我正在尝试测试用户是否已在FreeNode上注册。nick_info()似乎没有返回有关这方面的信息,所以我想使用$irc-> grab ( this => $nick);然后获取irc_whois事件的回复。问题是我想等到这个事件被触发,所以我创建了一个全局变量$whois_result,并编写了一个如下所示的sub:
sub whois {
my $nick = $_[0];
$whois_result = 0;
$irc->yield(whois => $nick);
while($whois_result == 0) { }
return $whois_result;
}irc_whois处理程序如下所示:
sub on_whois {
$whois_result = $_[ARG0];
print "DEBUG: irc_whois fired.\n";
}不幸的是,事件不能在循环运行时触发,因此挂起。我确信有一种更好的方法可以做到这一点,但我对这种编程还不够熟悉。任何帮助都将不胜感激。
发布于 2010-05-23 13:25:27
以下内容至少适用于FreeNode (或任何支持identify-msg功能的服务器)。
如果您正在响应来自用户的消息(irc_msg、irc_public或irc_ctcp_action),则可以通过查看提供给事件处理程序的第三个参数($_[ARG3])来判断他是否已向NickServ标识。如果用户已经识别,则为true,否则为false。
发布于 2016-01-01 00:40:26
在爱荷华州的潜艇上...你必须放弃或者在另一种状态下调用它。
此外,当您有来自IRC命令的数据时,让位到另一个状态来处理它。
_start -启动计时器等计时器-让出on_whois
on_whois - run who is -设置数据-放弃到下一个计时器
_stop -关闭计时器-刷新数据
发布于 2009-12-14 05:55:49
我在Freenode上运行了一个机器人,并通过向Nickserv询问命令解决了这个问题:ACC nick *
然后,Nickserv将以如下格式回复通知:昵称->注册器昵称ACC级别
其中,级别3意味着用户被识别给了nickserv。
https://stackoverflow.com/questions/1897335
复制相似问题