2017-03-12 2 views
0

Erreur:Comment puis-je réparer "Surnom est déjà utilisé" dans mon Bot Python 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 

Le script fonctionne très bien, le seul problème que je vais avoir est quand un autre utilisateur a le même nom et de sorte que le bot ne rejoindra pas, comment puis-je résoudre ce problème?

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

Ce que j'ai essayé:

Google, YouTube, Regarder autre de bot IRC github et stackoverflow. Une idée que j'avais était d'utiliser un générateur de chaînes aléatoires, donc si le nom "testbot" était utilisé, le script génèrerait quelque chose de aléatoire et réessayerait. Je ne sais pas comment j'ajouterais ceci.

Python 2.x

Merci!

+0

Peut-être que vous vous connectez deux fois, ou vous êtes peut-être en utilisant un nom réservé. – tadman

+0

Généralement, vous essayez un autre pseudo pour vous connecter. Le robot doit également être enregistré auprès de NickServ (disponible sur la plupart des réseaux) afin qu'il puisse récupérer le surnom et y basculer. –

+0

Bonjour, Vous êtes tous les deux corrects, cependant, je ne veux pas le changer manuellement, je veux que le script le fasse automatiquement. C'est pourquoi je pensais utiliser une chaîne aléatoire afin que les noms soient toujours aléatoires et ne soient pas un problème? – Bac0n

Répondre

0

Il est difficile de vous aider sans voir code que vous avez essayé. Ou tout code du tout.

L'idée générale serait de détecter lorsqu'un message entrant est un 433 (alias ERR_NICKNAMEINUSE), puis envoyer une nouvelle commande NICK avec un nouveau surnom; et réessayez jusqu'à ce que vous trouviez un surnom gratuit.

pseudocode:

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