Python IRC Bot не отвечает - PullRequest
       26

Python IRC Bot не отвечает

1 голос
/ 20 сентября 2011

Сначала немного кода.

#!/usr/bin/env python
import sys
import socket
import string

HOST='irc.ircnetworkbotison.net' #The server we want to connect to
PORT=6666 #The connection port which is usually 6667
NICK='RandomBot' #The bot's nickname
IDENT='RandomBot'
REALNAME='Random Bot'
OWNER='RandomBot' #The bot owner's nick
CHAN='#botchannel' #The default channel for the bot
readbuffer='' #Here we store all the messages from server

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Create the socket
s.connect((HOST, PORT)) #Connect to server
s.send('USER '+IDENT+' 0 * :'+REALNAME+'\r\n') #Identify to server 
s.send('NICK '+NICK+'\r\n') #Send the nick to server
s.send('JOIN '+CHAN+'\r\n')
s.send('PRIVMSG '+CHAN+' :The Tutor is here. Lesson\'s may begin.'+'\r\n')

У меня есть две функции. Тот, который анализирует PRIVMSG, и тот, который приветствует новых пользователей. Проблема здесь:

while True:
    try:
        line=s.recv(4096)
    except:
        break
    #Yes, I'm aware I'm not buffering input
    #readbuffer=readbuffer+s.recv(4096)
    #temp=string.split(readbuffer, "\n")
    #readbuffer=temp.pop( )
    #for line in temp:
    if not line:
        break
    line=string.rstrip(line)
    print line+'\r\n'
    if line.find('PRIVMSG')!=-1: #Call a parsing function
        parsemsg(line)
        continue
    if line.find('JOIN')!=-1: #Call a parsing function
        greetmsg(line)
        continue
    if line.find('PING') !=-1: #If server pings then pong
        line=string.split(line," ")
        s.send('PONG '+line[1]+'\r\n')
        print "PONG "+line[1]+'\r\n'
    #line=None

s.close()

По какой-либо причине через час или около того в IRC бот перестанет отвечать или регистрировать любые сообщения. Единственная работа, которую я нашел до сих пор, - это открыть приватный диалог с ботом, отправить ему команду и вернуться в основной чат. В этот момент он снова будет нормально функционировать еще около часа.

Вопрос (ы):

  1. Почему время истекает, как это происходит?

  2. Как мне остановить это?

...