首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Perl中的POE::Component::IRC::State检查用户是否已使用NickServ进行身份验证?

问如何使用Perl中的POE::Component::IRC::State检查用户是否已使用NickServ进行身份验证?
EN

Stack Overflow用户
提问于 2009-12-14 02:52:00
回答 3查看 2.2K关注 0票数 1

我正在尝试测试用户是否已在FreeNode上注册。nick_info()似乎没有返回有关这方面的信息,所以我想使用$irc-> grab ( this => $nick);然后获取irc_whois事件的回复。问题是我想等到这个事件被触发,所以我创建了一个全局变量$whois_result,并编写了一个如下所示的sub:

代码语言:javascript
复制
sub whois {
    my $nick = $_[0];
    $whois_result = 0;
    $irc->yield(whois => $nick);
    while($whois_result == 0) { }
    return $whois_result;
}

irc_whois处理程序如下所示:

代码语言:javascript
复制
sub on_whois {
    $whois_result = $_[ARG0];
    print "DEBUG: irc_whois fired.\n";
}

不幸的是,事件不能在循环运行时触发,因此挂起。我确信有一种更好的方法可以做到这一点,但我对这种编程还不够熟悉。任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-23 13:25:27

以下内容至少适用于FreeNode (或任何支持identify-msg功能的服务器)。

如果您正在响应来自用户的消息(irc_msg、irc_public或irc_ctcp_action),则可以通过查看提供给事件处理程序的第三个参数($_[ARG3])来判断他是否已向NickServ标识。如果用户已经识别,则为true,否则为false。

票数 0
EN

Stack Overflow用户

发布于 2016-01-01 00:40:26

在爱荷华州的潜艇上...你必须放弃或者在另一种状态下调用它。

此外,当您有来自IRC命令的数据时,让位到另一个状态来处理它。

_start -启动计时器等计时器-让出on_whois

on_whois - run who is -设置数据-放弃到下一个计时器

_stop -关闭计时器-刷新数据

票数 2
EN

Stack Overflow用户

发布于 2009-12-14 05:55:49

我在Freenode上运行了一个机器人,并通过向Nickserv询问命令解决了这个问题:ACC nick *

然后,Nickserv将以如下格式回复通知:昵称->注册器昵称ACC级别

其中,级别3意味着用户被识别给了nickserv。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1897335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档