python - IRC Twitch 不知何故开始忽略消息
问题描述
我只是想制作一款“Twitch Plays”游戏。我使用了制作 Twitch Plays 游戏的教程。我需要每五分钟重新运行一次此代码,因为它会忽略消息。我正在 Scratch 上制作 Threes 游戏。我检查了所有可能的错误,它工作得很好。该游戏基于包含数字的移动瓷砖。任何有关 IRC 抽搐忽略所有消息的建议将不胜感激。
代码如下所示。
import socket
import pyautogui
import time
SERVER = "irc.twitch.tv"
PORT = 6667
PASS = "oauth:fz5kp09su0lz46vnos78sklvpjnu6l"
BOT = "TwitchBot"
CHANNEL = "olejika2016"
OWNER = "olejika2016"
message = ""
irc = socket.socket()
irc.connect((SERVER,PORT))
irc.send(( "PASS "+PASS+"\n"+
"NICK "+BOT+"\n"+
"JOIN #"+CHANNEL+"\n").encode())
def twitch():
def joinchat():
loading = True
while loading:
readbuffer_join = irc.recv(1024)
readbuffer_join = readbuffer_join.decode()
for line in readbuffer_join.split("\n")[0:-1]:
# print(line)
loading = loadingComplete(line)
def loadingComplete(line):
if ("End of /NAMES list" in line):
print("Bot has joined "+CHANNEL+"'s channel")
sendMessage(irc, "Chat Room Joined")
return False
else:
return True
def sendMessage(irc, message):
messageTemp = "PRIVMSG #" + CHANNEL + " :" + message
irc.send((messageTemp+"\n").encode())
def getUser(line):
separate = line.split(":", 2)
user = separate[1].split("!",1)[0]
return user
def getMessage(line):
global message
try:
message = (line.split(":",2))[2]
except:
message = ""
return message
joinchat()
while True:
try:
readbuffer = irc.recv(1024).decode()
except:
readbuffer = ""
for line in readbuffer.split("\r\n"):
if line == "":
continue
else:
# print("2;"+line)
user = getUser(line)
message = getMessage(line)
print(user+":"+message)
def writeUser():
time.sleep(0.1)
pyautogui.typewrite(user)
pyautogui.press('enter')
if message.lower() == "w":
pyautogui.press('up')
writeUser()
if message.lower() == "s":
pyautogui.press('down')
writeUser()
if message.lower() == "a":
pyautogui.press('left')
writeUser()
if message.lower() == "d":
pyautogui.press('right')
writeUser()
else:
pass
user = ''
message = ''
twitch()
解决方案
for line in readbuffer.split("\r\n"):
if line == "":
continue
elif "PING" is line and Console(line):
msgg = "PONG tml.twitch.tv\r\n".encode()
irc.send(msgg)
print(msgg)
continue
else:
user = getUser(line)
message = getMessage(line)
print(user+":"+message)
推荐阅读
- c# - 由于文件格式或文件扩展名无效而无法打开文件的 C# Web API 导出 excel 文件的问题
- algorithm - 如何使用powershell从文件夹>子文件夹打印文件
- python - 如何为每个学生插入正确的价值,为每个核心价值选择每个分数
- hadoop - 计算键和数字格式的出现次数
- r - 如何在 R Shiny 中将反应值设置为默认值?
- django - django:ManyToMany:更新和插入业务规则
- azure - ARM 模板,服务器名称已存在但实际上不存在
- java - 后台服务不停止 Android
- amazon-web-services - AWS Glue Crawler 更新现有目录表非常慢
- java - 我有一个构造函数,它应该以一个字符串为例,一个地址并用“|”分割