나는 서서히 파이썬을 배우고 튜토리얼을 통해 익숙해집니다. 나는 그것이 어떻게 작동하는지에 대한 기본적인 이해를 가지고 있다고 느낍니다.Python IRC bot이 끊임없이 응답하고 있습니다.
창조적 인 프로젝트로서 나는 IRC 봇을 만들고 싶습니다. 나는 미리 설정된 프레임 워크를 사용하고 싶지 않다. 나는 바퀴를 재발 명할 의도는 없으며 단순히 학습 프로젝트와 창작 아울렛으로서 처음부터 봇을 구성하기를 원합니다. 이 작업을 수행하는 방법에 대한 나의 지식에 일관되게 직면하고있는 한 가지 문제는 내 봇이 내 명령에 무한대로 응답하는 것 같습니다. 코드는 다음과 같습니다.
HOST="irc.durd.net"
PORT=6667
NICK="Data"
IDENT="data"
REALNAME="databot"
HOME='#zela'
feedback=""
s=socket.socket()
s.connect((HOST, PORT))
s.send("NICK %s\r\n" % NICK)
s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME))
s.send("JOIN #zela" + "\r\n")
s.send("PRIVMSG nickserv identify ac}pcut]eobosbec" + "\r\n")
def sendmsg(chan, msg):
s.send("PRIVMSG "+ chan +" :"+ msg +"\n")
def ping():
s.send("PONG :pingis\n")
while 1:
feedback=feedback+s.recv(1024)
print (feedback)
if feedback.find("PING :") != -1:
ping()
if feedback.find("say hello Data") != -1:
sendmsg("#zela", "Hello Data!")
if feedback.find("tell us a joke Data") != -1:
sendmsg("#zela", "but Captain, I don't know how.")
if feedback.find("terminate Data") != -1:
s.send("QUIT\r\n")
이제 모든 것이 정상적으로 작동하고 데이터가 명령에 올바르게 응답합니다. 그는 내가 그에게 말할 때 그만두기도한다. 불행히도 이러한 명령 중 하나가 실행되면, 나는 새로운 것을 말할 때마다 자신을 반복하고, 내가 그를 끌 때까지 자신을 영원히 반복 할 것입니다.
<~Jordan> say hello Data
<Data> Hello Data!
<~Jordan> a
<Data> Hello Data!
<~Jordan> a
<~Jordan> a
<Data> Hello Data!
<Data> Hello Data!
<Data> Hello Data!
<Data> Hello Data!
나는 서버가 봇에 메시지를 재전송되어 있는지 테스트 한, 그것은하지, 그래서 내 잘못이고 내가 여기에 놓친 거지 아주 간단한 일이 아마이 그림.
내 생각에 메시지를 보낸 후에 의견을 지우고 싶다면 그 메시지에서 동일한 텍스트를 반복해서 찾아야합니다. – Gabe
우 블레 : 나는 하늘에서 껌을 떨어 뜨릴 것으로 예상했다. – Jordan
@Wooble - 새로운 프로그래머는 아주 쉽게 이런 것들을 놓칠 수 있습니다. 그렇게 생각할 필요가 없습니다. 앞으로 조금 더 예절 바꿔보십시오. – Polynomial