Jul-10-2020, 06:35 PM
I'm defining a variable in a if statement which to my knowledge should be a global variable.
Here is the full code in case it matters. (sensitive information masked)
try: for i in parts: print(i) if len(parts) == 3 and "PRIVMSG" in line: message = parts[2][:len(parts[2]) - 1] usernamesplit = string.split(parts[1], "!") else: if len(parts) == 4 and "PRIVMSG" in line: message = parts[3][:len(parts[3]) - 1] usernamesplit = sting.split(parts[2], "!") else: print(line) except: message = "" username = usernamesplit[0]it tells me usernamesplit is not defined on the last line. Even though I defined it a few lines above.
Here is the full code in case it matters. (sensitive information masked)
import socket, string, time #connection variables HOST = "irc.twitch.tv" PORT = 6667 ID = "****" AUTH = "oauth:****" ROOM = "****" readbuffer = "" #function variables MOTD = True print("connecting") s = socket.socket() s.connect((HOST, PORT)) s.send("PASS " + AUTH + "\r\n") s.send("NICK " + ID + "\r\n") s.send("CAP REQ :twitch.tv/membership\r\n") s.send("CAP REQ :twitch.tv/commands\r\n") s.send("CAP REQ :twitch.tv/tags\r\n") s.send("JOIN #" + ROOM + "\r\n") def sendMessage(message): s.send("PRIVMSG #" + ROOM + " :" + message + "\r\n") print("Sent: " + message) #bot announces itself print("HOST = " + HOST + ", PORT = " + str(PORT) + ", Account = " + ID + ", Channel = " + ROOM + ", STATUS : ONLINE") while True: readbuffer = readbuffer + s.recv(1024) temp = string.split(readbuffer, "\n") readbuffer = temp.pop() for line in temp: #print(line) if "PING" in line: #print(line) sendMessage("/PONG") else: if "stopbot" in line: break else: parts = string.split(line, ":") if "QUIT" not in parts[1] and "JOIN" not in parts[1] and "PART" not in parts[1] and "USERSTATE" not in parts[1] and "ROOMSTATE" not in parts[1]: try: for i in parts: print(i) if len(parts) == 3 and "PRIVMSG" in line: message = parts[2][:len(parts[2]) - 1] usernamesplit = string.split(parts[1], "!") else: if len(parts) == 4 and "PRIVMSG" in line: message = parts[3][:len(parts[3]) - 1] usernamesplit = sting.split(parts[2], "!") else: print(line) except: message = "" username = usernamesplit[0] for l in parts: if "End of /NAMES list" in l: MOTD = False print("MOTD ENDED")