我正在尝试为我朋友的直播制作一个 Twitch 机器人,但在让它发送消息(或识别命令)时遇到了一些问题。
我的代码:
import socket,string
HOST = "irc.twitch.tv"
PORT = 6667
NICK = "Axiom"
IDENT = "Axiom"
REALNAME = "Axiom"
CHANNEL = "#itwreckz"
PASSWORD = "oauth:PASSHERE"
readbuffer = ""
print "Connecting.."
t = socket.socket()
t.connect((HOST, PORT))
print "Connected! Logging in"
t.send("PASS %s\r\n" % PASSWORD)
t.send("NICK %s\r\n" % NICK)
t.send("USER %s %s BOT :%s\r\n" % (IDENT, HOST, REALNAME))
print "Logged in. Joining Channel"
t.send("JOIN %s\r\n" % CHANNEL)
print "JOINED!"
while 2>1:
readbuffer = readbuffer+t.recv(1024)
taco = string.split(readbuffer, "\n")
readbuffer = taco.pop()
for line in taco:
line=string.rstrip(line)
line=string.split(line)
if len(line) > 3:
print line
command = line
if "!test" in command:
print "If you see this, it recognizes command." #Doesn't show
t.send("PRIVMSG %s :IT WORKS!\r\n" % CHANNEL) #This either
if(line[0]=="PING"):
t.send("PONG %s\r\n" % line[1])
有谁知道我在哪里搞砸了?
有效,因为它显示了在聊天中发送的if len(line) >3:
消息(仅当它们长于 3 个字符时)。所以我猜我已经把这些东西设置好了。它打印消息等。
我似乎无法让命令工作。
编辑:这是一个非常古老的帖子,但我想指出我最终重新制作了整个 IRC 机器人以更好地工作。
对于任何可能感兴趣的人:
import socket,time
network = 'irc.example.net'
port = 6667
channels = ['#Channel1','#Channel2'] #Add as many as you want
nick = 'myIRCBot'
identify = True
password = 'superAwesomePassword'
irc = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
print "Connecting to "+network+" ..."
irc.connect ((network, port))
print "Changing nick to "+nick+"..."
irc.send ('NICK '+nick+'\r\n')
if identify == True:
print "Verifying password..."
irc.send("PASS %s\n" % (password))
print "Setting login data..."
irc.send ('USER '+nick+' '+nick+' '+nick+' :'+nick+' IRC\r\n')
time.sleep(1)
for channel in channels:
print "Joining "+channel+"..."
irc.send ('JOIN '+channel+'\r\n')
irc.send ('PRIVMSG '+channel+' :'+nick+' Started! Type .help for more\r\n')
time.sleep(1)
print nick+" bot started."
while True:
data = irc.recv(4096)
if data.find('PING') != -1:
irc.send('PONG '+data.split()[1]+'\r\n')
try:
user = data.split("!",1)[0].replace(":","",1)
vhost = data.split(" ",1)[0].split("!",1)[1]
dType = data.split(" ",1)[1].split(" ",1)[0]
chan = data.split(" ",1)[1].split(" ",1)[1].split(" ",1)[0]
msg = data.split(" ",1)[1].split(" ",1)[1].split(" ",1)[1].replace(":","",1).replace("\n","",1).replace("\r","",1)
if msg == '.help':
irc.send ('PRIVMSG '+chan+' :This is the only command!\r\n')
print user+" ("+vhost+") "+dType+" to "+chan+": "+msg
except:
pass