2014-12-26 4 views
1

저는 재미있는 이유로 freenode의 채널에 대한 간단한 python IRC 봇을 만들었습니다.Python IRC 로봇에서 오류가 발생했습니다.

irc.connect((server,6667)) 
irc.send("USER "+botnick+" "+botnick+" "+botnick+" :Howdy mate!\n") 
irc.send("NICK "+botnick+"\n") 
irc.send("PRIVMSG nickserv :iNOOPE\r\n") #I don't know what this does 
irc.send("JOIN "+channel+"\n") 

(하위 질문 :? 무엇을 4 선 수행하는 것이)는 서버에 연결하기 위해 다음 코드를 사용하여 모든 권리를 일하는

그러나 while 루프는 IRC를 유발했다. recv (2040) 뭔가를 반환했습니다. 그래서 온라인 예제를 따라하고 while 루프의 시작 부분에

irc.setblocking(False) 

irc.connect((server,6667)) 

time.sleep(1) 

을 추가했다.

그래서 지금은 연결 부분이 닮은 :

irc.send("USER "+botnick+" "+botnick+" "+botnick+" :Howdy mate!\n") 
TypeError: 'str' does not support the buffer interface 

나는이 오류를 해결 할 수 없습니다

irc.connect((server,6667)) 
irc.setblocking(False) 
irc.send("USER "+botnick+" "+botnick+" "+botnick+" :Howdy mate!\n") 
irc.send("NICK "+botnick+"\n") 
irc.send("PRIVMSG nickserv :iNOOPE\r\n") 
irc.send("JOIN "+channel+"\n") 

하지만 지금은 프로그램을 실행하려고 할 때, 그것은 오류를 보여줍니다 irc.setblocking (False)을 제거하면 사라집니다. 하지만 실제로 루프를 수행 할 필요가 irc.recv (2040) 뭔가를 반환하거나 그렇지 않으면 ... 그래서 오류를 알아낼 수 있습니까?

EDIT : 위의 오류는 python 셸에서 실행했을 때 나타납니다 (CMD가 오류를 읽는 데 너무 빨리 닫히기 때문에). 이제는 CMD에서 오류를 기록하고보고 관리했습니다. 다음과 같이 말합니다 :

text=irc.recv(2040) 
A non blocking socket operation could not be completed immediatly. 

Help?

+1

[Nickserv] (http://archive.oreilly.com/pub/h/1940)는 세션 전체에서 닉을 유지하는 서비스입니다. 당신은 그것과 대화하여 그것을 조작합니다. 'NOOPE'는 전혀 아무것도하지 않는 것처럼 들리지만 명령 세트에 대한 자세한 내용은 자신의 nickserv 설명서를 참조하십시오. – tripleee

답변

0

좋아, 직접 해결했습니다. 텍스트 = irc.recv (2040)이 문제였습니다. 내가 시도에 넣어 ... 블록을 제외하고 문제를 해결.

관련 문제