IRC Twitch以某种方式开始忽略消息

2024-10-01 13:44:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是想做一个“Twitch Plays”游戏。我用了一个教程来制作Twitch游戏。我需要每隔五分钟重新运行此代码,因为它会忽略这些消息。我在白手起家打三局。我检查了所有可能的bug,效果很好。这个游戏是基于移动包含数字的瓷砖。任何关于IRC twitch忽略所有消息的建议都将不胜感激

代码如下所示

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()

Tags: messageifdefirclinechannelsplittwitch
1条回答
网友
1楼 · 发布于 2024-10-01 13:44:59
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)

相关问题 更多 >