2014-11-23 49 views
0

我正在尝试为freenode中的一个频道制作一个可用的Python IRC bot。 现在我想要做的就是避免ping超时,并用'hello!'回复'!hi'消息。 我不把bot放在服务器上,我只是希望它能从我的电脑运行10-15分钟。如何制作Python IRC机器人?

的代码如下所示:(我已经取代了原来的频道名称和BOT名)

import socket 
import sys 

server="irc.freenode.net" 
channel="##mychannel" 
botnick="testbot" 
irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
irc.connect((server,6667)) 
irc.send("USER "+botnick+" "+botnick+" "+botnick+" :TestBot\n") 
irc.send("NICK "+botnick+"\n") 
irc.send("PRIVMSG nickserv :iNOOPE\r\n") #I don't know what this line does.... 
irc.send("JOIN "+channel+"\n") 

while 1: 
    text=irc.recv(2040) 
    print (text) 
    if text.find("PING")!=-1: 
     irc.send("PONG "+text.split("PING ")[1]+"\r\n") 
    if text.find(":!hi")!=-1: 
     irc.send("PRIVMSG "+channel+" :Hello!\r\n") 

现在,当我运行它说,这项计划“看不出来你的用户名”。然后几秒钟后,它显示一些文本太快,我无法捕捉并关闭控制台。并且它不连接到频道。当我在IDLE中运行时,它说“'str'不支持缓冲区接口”。

我想学会这样做,这就是为什么我避免了所有预先存在的机器人。 我不是Python的专家。 Javascript-HTML-CSS是我最好的编程组合。

任何人都可以帮忙吗?

+1

这是一个真正的,非常糟糕的,低级别的编写机器人的方法。我确切地认识到这个代码,来自十几个其他人在网上找到它:)如果你想了解如何做到这一点,挑选其中一个预先存在的机器人。 IRC不是一个令人愉快的协议(我说这是从头开始编写[一个基本的机器人](https://github.com/eevee/dywypi/blob/master/dywypi/dialect/irc/client.py) )。 – Eevee 2014-11-23 07:20:47

+1

(但是你的实际问题是你正在使用python 3运行它,而它是为2.2的一些古代Python版本编写的,它可能仍然对2.7,但相信我这不是一个好的起点。 ) – Eevee 2014-11-23 07:21:47

+0

@Eevee我知道。但我刚刚开始学习,而且我不打算做任何复杂的事情。 – aswathy 2014-11-23 07:46:18

回答

0

我自己解决了这个问题.... “text.split(”PING“)”出错了。我将它更改为“text.split()”,以便它在第一个空白处分裂并且它没有问题。