【发布时间】:2015-01-21 02:01:25
【问题描述】:
我正在尝试为我在 freenode 中的一个频道制作一个可以工作的 Python IRC 机器人。 现在我想做的就是避免 ping 超时并用“你好!”回复“!嗨”消息。 我没有将机器人放在服务器中,我只是希望它在我的计算机上运行 10-15 分钟。
代码如下:(我已经替换了原来的频道名称和机器人名称)
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 是我最好的编程组合。
谁能帮忙?
【问题讨论】:
-
这是一种非常、非常糟糕且可笑的低级方式来编写机器人。我从十几个在网上找到它的其他人那里完全认出了这段代码:) 如果您想了解这是如何完成的,请挑选其中一个预先存在的机器人。 IRC 不是一个令人愉快的协议(我说这是从头开始编写a basic bot)。
-
(但你的实际问题是你在 python 3 上运行它,而它是为一些古老的 python 版本(如 2.2)编写的。它可能仍然适用于 2.7,但相信我不是一个好的起点。)
-
@Eevee 我知道。但是我才刚刚开始学习,反正我也不打算让它做任何复杂的事情。