2009-10-16, 21:10
#1
Jag försöker svänga ihop en enkel liten IRC-bot i Python. Servern jag tänker ansluta till stöder endast SSL. Problemet jag har med min kod just nu är att jag aldrig verkar få PING från servern, men ändå timeoutar min bot efter 5 minuter. All data jag får från servern skriver jag ut på skärmen av debug-skäl, och PINGet kommer inte ens upp där. Jag har kollat att servern faktiskt skickar PING genom att "telnetta" med openssl till servern och rad för rad simulera min bot. Vad kan vara fel?
Tilläggas bör att resten av koden fungerar helt problemfritt, dvs den privvar folk som highlightar den. Jag är mer eller mindre nybörjare i Python (fulhackade ihop en spiderbot för ngn tid sedan), så det är säkert ett riktigt simpelt och pinsamt fel.
Kod:
import socket
host = 'graphite' # Servern är en dator i det lokala nätverket
port = 6697
nick = 'vonKarma'
ident = nick
realname = 'Bitmaster von Karma'
owner = 'bitmaster'
channel = '#test'
readbuffer = ''
bs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
bs.connect((host, port))
s = socket.ssl(bs)
s.write('NICK ' + nick + '\n')
s.write('USER ' + ident + ' ' + host + ' bla :' + realname + '\n')
def parsemsg(msg):
complete=msg[1:].split(':',1)
info=complete[0].split(' ')
msgpart=complete[1]
sender=info[0].split('!')
if line.find('vonKarma')!=-1:
s.write('PRIVMSG ' + sender[0] + ' :You highlighted me. I\'m just a bot under construction, never mind me.\n')
while 1:
line=s.read(500)
print line
line=line.rstrip()
linesplit=line.split()
if(linesplit[0]=='PING'):
s.write('PONG '+linesplit[1]+'\n')
print 'PING? PONG!'
if line.find('of message of the day')!=-1:
s.write('JOIN ' + channel + '\n')
if line.find('PRIVMSG')!=-1:
print "Parse!"
parsemsg(line)
Tilläggas bör att resten av koden fungerar helt problemfritt, dvs den privvar folk som highlightar den. Jag är mer eller mindre nybörjare i Python (fulhackade ihop en spiderbot för ngn tid sedan), så det är säkert ett riktigt simpelt och pinsamt fel.