在我的IRC Bot中,有一些命令我只想被我使用,我想检查以确保使用我的名字的任何人都被识别为nickserv(已设想)。但是,我无法找到一种简单的方法来确定这一点,这就是我在这里的原因。
如果重要的话,编辑:我实际上已经知道了为用户提供的各种用户模式(尽管我没有足够的注意力去认识到它们的不同!);很抱歉以前没有提过。但是,我从用户那里获得的原始响应不包括他们的用户模式;它看起来像这样:
:liam_neeson!n=pearson@71-9-55-124.dhcp.snlo.ca.charter.com PRIVMSG #erasmus-testing :foo
然后,我想,我正试图找到一种方法(用各种ircds,grr)来获得那些旗帜。如果像有人提到的那样,Rizon会返回某人是否在WHOIS查询中被提名,那么这就是我正在寻找的东西。
答案 0 :(得分:20)
在freenode上,使用消息ACC <nickname>
向nickserv发送私信将返回一个数字,表示用户的身份状态:
答案的格式为
<nickname> ACC <digit>
:0 - account or user does not exist 1 - account exists but user is not logged in 2 - user is not logged in but recognized (see ACCESS) 3 - user is logged in
STATUS <nickname>
命令在Rizon上给出了类似的结果:
响应的格式为:
<nickname> <digit>
0 - no such user online or nickname not registered 1 - user not recognized as nickname's owner 2 - user recognized as owner via access list only 3 - user recognized as owner via password identification
此方法优于WHOIS的优势:
答案 1 :(得分:6)
在某些网络上,您可以启用名为“identify-msg”的功能。在FreeNode上,您可以在首次连接服务器时发送“CAP REQ identify-msg”和“CAP END”。服务器将回复确认该功能的回复。之后,所有消息(和CTCP ACTION)将以“+”(用户已使用NickServ标识)或“ - ”(用户未使用NickServ标识)开头,例如:
:liam_neeson!n = pearson @ 71-9-55-124.dhcp.snlo.ca.charter.com PRIVMSG#erasmus-testing: + foo
答案 2 :(得分:2)
尼克注册不是IRC标准的一部分。它始终由定制的IRC服务器和/或机器人提供。我不认为你会找到一个真正通用的解决方案,但NickServ是一个常见的可用实现,它可以在许多网络上运行。维基百科有more info。
您可能希望完全回避问题并让您的用户注册您的机器人,而不是使用nickserv。然后,您的机器人将执行密码检查,并在用户注销时使用户的凭据无效。这将是一个通用的解决方案。
答案 3 :(得分:1)
当您的用户名已注册时,在您的僵尸程序登录之前,您执行以下命令:
/ns ghost username password
此命令将删除用户登录的所有用户,请记住我只在Freenode中使用过此功能,我不知道它是否可以在其他服务器上运行。
答案 4 :(得分:1)
使用Freenode,如果用户被识别为NickServ,则其用户具有+e mode set。不确定Rizon是否有类似的东西。
答案 5 :(得分:1)
UnrealIRCd和hybrd将+ r设置为注册用户,我不确定所有IRC服务器是否都这样做,但它非常不标准化。同样在Rizon你可以告诉你,如果用户已经注册,它会告诉你。
答案 6 :(得分:1)