Python IRC bot nicht beitreten
Bekomme ich die Fehlermeldung
:irc.evilzone.org NOTICE AUTH :* Looking up your hostname...
:irc.evilzone.org NOTICE AUTH :*
Finden Sie Ihren Hostnamen ein (Cache -)PING :7091A8FB
:irc.evilzone.org 451 BEITRETEN :Sie haben
nicht registriert:irc.evilzone.org 451 PRIVMSG :Sie
noch nicht registriert haben,
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
Wenn man bedenkt, dass einige der Befehle, die ich verwenden müssen Sie das temp= string.split(readbuffer,"\n") Teil des Codes.Aber mit code wie diesem
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 )
Kann ich erfolgreich eine Verbindung zu dem Kanal etc. Irgendeine Idee?
- Sollte auf Stackoverflow...
- Hmm, funktioniert der channel oder server Total positiv und nicht möchten, dass eine Vorherige Registrierung der nick?
- Wenn Sie verbringen eine einzige Sekunde, um Blick auf den code werfen, würden Sie sehen, dass es keinen Rahmen...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehe ich zwei mögliche Gründe:
Bemerkte ich, dass Sie nicht behandeln PING-Anfragen, einige Server akzeptieren keine anderen Befehle, bis Sie beantwortet die PING-Anforderung (also nicht registriert).
Sie würde eine Verbindung herstellen möchten, dann NICK, überprüfen Sie, ob ein PING, dann BENUTZER, überprüfen Sie die PING wieder, wenn keiner da war, bevor BENUTZER.
Einige Server, wie z.B. senden nach NICK, der andere nach BENUTZER.
Reagieren auf diesen PING, senden Sie einfach:
Zwischen den
:
und'\r\n
wird eine zufällige Zeichenfolge sein, die Sie brauchen, um zurück zu senden mit Ihrem PONG, wie oben gezeigt.Die Zeit zwischen dem senden von "BENUTZER ..." und "VERBINDEN ..." erhöht werden muss. Ich habe das Problem aufgetreten, während Sie den gleichen code in der Bash. Hier ist, wie ich es gemacht habe:
Dies ist das Problem verhindert, dass Sie von der Registrierung auf dem IRC-Server.
Während sollten Sie (technisch) in der Lage sein zu registrieren, im IRC mit einem NICK /USER Kombination, die PING-Sie erhalten bei der Anmeldung ist eine sehr einfache DoS-Schutz-Mechanismus eingesetzt, der von den meisten IRC-Servern in diesen Tagen.
Müssen Sie Antworten auf eine ping-wie folgt:
Sollte die Zeichenfolge ändern sich jedes einzelne mal, wenn Sie erhalten den PING.
Sie werden auch get PING-Anforderungen später um sicherzustellen, dass die Verbindung noch aktiv ist, so schreiben Sie den code, um die Antwort wird sichergestellt, dass der server nicht automatisch AUFHÖREN (ping timeout)
Schließlich sollten Sie warten, bis Sie sich angemeldet haben (Sie wissen, denn Sie erhalten die rohen numerischen 001), bevor Sie Sie senden JOIN /PRIVMSG /andere Befehle.
Dies ist wahrscheinlich ein problem mit Ihrem client. Überprüfen Sie diese
durch die Anbindung an den server mittels telnet und Befehle ähnlich
diese:
(Nach Ausgabe der 'NICK' - Befehl, sollten Sie eine 'PING' aus der
client mit einer Zahl; das ist die Zahl, die Sie sollten Ersatz für
"" oben.)
Diese sollte verbinden Sie mit dem server, und Sie erhalten die
MOTD und anderen connect-Nachrichten sofort nach dieser. Von hier aus, Sie
können versuchen, "JOIN #test-channel" und sicherzustellen, dass Sie beitreten können-Kanäle.
Vorausgesetzt, alles klappt wie ich es beschrieben habe, dein problem ist wahrscheinlich
mit Ihrem IRC-client.
Bitte versuchen PONG :2153560274 hinter BENUTZER Befehl.