如何在我的Python IRC Bot中修复“Nickname已经在使用中”?

时间:2017-03-12 06:26:39

标签: python bots irc

错误:

NOTICE Auth :*** Looking up your hostname...
433 * testbot:Nickname is already in use.
NOTICE Auth :*** Could not resolve your hostname: Request timed out; using your IP address () instead.
451 837AAAABB JOIN :You have not registered

脚本运行正常,我遇到的唯一问题是当另一个用户具有相同的名称,因此机器人不会加入时,我该如何解决这个问题?

#IRC Info, Where the bot connects too
server="Server"
botnick="testbot"
channel="#test"

我尝试过:

Google,YouTube,查看其他github IRC bot和stackoverflow。

我的一个想法是使用随机字符串生成器,因此如果采用名称“testbot”,则脚本将生成随机的内容并再次尝试。我不确定如何添加它。

Python 2.x

谢谢!

2 个答案:

答案 0 :(得分:0)

如果没有看到您尝试的某些代码,很难帮助您。或任何代码。

总的想法是检测传入消息何时是433(又名ERR_NICKNAMEINUSE),然后发送带有新昵称的新NICK命令;然后再试一次,直到找到一个免费的昵称。

伪代码:

MAINNICK = 'testbot'
nick_suffix = 1
send_msg('NICK {}'.format(MAINNICK))
while True:
    msg = recv_msg()
    if msg.split(' ')[1] == '433':
        send_msg('NICK {}{}'.format(MAINNICK, nick_suffix))
        nick_suffix += 1

答案 1 :(得分:0)

这个回答假设昵称是你注册的。

收到ERR_NICKNAMEINUSE (433)时,将REGAIN发送给nickserv。我个人也注意不要在 30 秒内发送 REGAIN 超过 3 次,否则我会因为其他问题而断开连接并重新连接。

REGAIN YourRegisteredNick YourPassword

偶尔会收到带有包含 NOTICE 的第二个参数的 can not regain your nickname。这表示 REGAIN 失败。我知道处理此错误的唯一方法是断开、重新连接和重新加入频道。