Python bot IRC de ne pas adhérer
Je reçois le message d'erreur
:irc.evilzone.org AVIS AUTH :* à la Recherche de votre nom d'hôte...
:irc.evilzone.org AVIS AUTH :*
Trouvé votre nom d'hôte (en cache)PING :7091A8FB
:irc.evilzone.org 451 REJOINDRE :Vous avez
pas inscrit:irc.evilzone.org 451 PRIVMSG :Vous
n'ont pas enregistré
server = "irc.evilzone.org" # Server
port = 6667 #port connect through IRC standard is :(6667 or 9999)
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( server, port ) )
print irc.recv ( 4096 )
nick = 'Piebot' #bots name
chan = 'test' #channel
version= "1.0" #current version
irc.send ( 'NICK Pizebot\r\n' )
irc.send ( 'USER Pizebot Pibot Pibot :Python IRC\r\n' )
irc.send ( 'JOIN #test\r\n' ) # YOU MUST CHANGE THE CHANNEL HERE AND BELOW!!
irc.send ( 'PRIVMSG #test :Hello World.\r\n' )
while True:
readbuffer= irc.recv(4096)
temp=string.split(readbuffer, "\n")
Check = readbuffer.split(':')
print readbuffer
En gardant à l'esprit que certaines des commandes que j'ai besoin d'utiliser la temp= string.split(readbuffer,"\n") portion de code.Mais avec ce code
network = 'irc.evilzone.org'
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
print irc.recv ( 4096 )
irc.send ( 'NICK ipbot\r\n' )
irc.send ( 'USER ipbot completely real :Jxxx\r\n' )
irc.send ( 'JOIN #test\r\n' )
irc.send ( 'PRIVMSG #test:Oh Hai.\r\n' )
while True:
data = irc.recv ( 4096 )
J'pouvez vous connecter au canal etc. Une idée?
- Devrait être sur Stackoverflow...
- Hmm, le canal ou le serveur totalement positive voulez pas d'inscription préalable de l'nick?
- Si vous voulez passer une seule seconde à regarder le code, vous verriez qu'il n'y a pas de cadre...
Vous devez vous connecter pour publier un commentaire.
Je vois deux raisons possibles à cela:
J'ai remarqué que vous n'avez pas à gérer des requêtes PING, certains serveurs n'acceptent pas toutes les autres commandes jusqu'à ce que vous avez répondu à la requête PING (donc pas enregistré).
Vous voulez vous connecter, puis NICK, vérifier une table de PING, alors l'UTILISATEUR, vérifiez pour les de PING à nouveau si il n'y avait rien avant d'UTILISATEUR.
Certains serveurs comme de l'envoyer après NICK, d'autres au bout de l'UTILISATEUR.
Pour répondre à cette intervention, il suffit d'envoyer:
Entre les
:
et'\r\n
sera une chaîne de caractères aléatoires que vous avez besoin de le renvoyer avec votre PONG comme indiqué ci-dessus.Le temps entre l'envoi de l'UTILISATEUR " ... " et "JOINDRE ..." doit être augmenté. J'ai rencontré ce problème tout en faisant le même code dans Bash. Voici comment je l'ai fait:
C'est le problème qui vous empêchent de vous inscrire sur le Serveur IRC.
Pendant que vous devrait (théoriquement) être en mesure de s'inscrire sur IRC avec un PSEUDO /combinaison UTILISATEUR, le PING vous recevez sur l'ouverture de session est très simple DoS mécanisme de protection utilisés par la plupart des serveurs IRC de ces jours.
Vous avez besoin pour répondre à un ping comme suit:
La chaîne devrait changer chaque fois que vous recevez la commande PING.
Vous obtiendrez également des requêtes PING plus tard pour s'assurer que la connexion est toujours en vie, donc écrire le code de réponse sera de s'assurer que le serveur ne fait pas automatiquement de vous QUITTER (ping timeout)
Enfin, vous devriez être en attente jusqu'à ce que vous vous êtes connecté (vous savez, car vous recevrez les numériques brutes 001) avant de l'envoyer REJOINDRE /PRIVMSG /autres commandes.
C'est probablement un problème avec votre client. Vous pouvez double-vérifier ce
en se connectant au serveur à l'aide de telnet et d'émettre des commandes similaires à
ce:
(Après l'émission de la "PSEUDO" de commande, vous devriez obtenir un "PING" à partir de la
client avec un nombre; c'est le numéro que vous devriez remplacer
"" ci-dessus).
Ce devrait vous connecter avec le serveur, et vous devriez recevoir le
MOTD et d'autres messages connect tout de suite après. À partir d'ici, vous
pouvez essayer "JOIN #test-canal" et assurez-vous que vous pouvez rejoindre des canaux.
En supposant que tout cela fonctionne comme je l'ai décrit, votre problème est probablement
avec votre client IRC.
S'il vous plaît essayer PONG :2153560274 derrière UTILISATEUR de commande.