Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import sys
- import time
- import traceback
- import ac
- import socket
- import re
- from threading import Thread
- HOST = "irc.chat.twitch.tv" # the Twitch IRC server
- PORT = 6667 # always use port 6667!
- NICK = "Ligneel" # your Twitch username, lowercase
- PASS = "" # your Twitch OAuth token
- CHAN = "#ligneel" # the channel you want to join
- RATE = (20/30)
- CHAT_MSG=re.compile(r"^:\w+!\w+@\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
- APP_NAME = 'Twitch chat'
- PATH_APP = os.path.dirname(__file__)
- messageLabel = []
- messageList = ['-','-','-','-','-','-','-','-','-','-']
- #for d in ('third_party', 'stdlib64'):
- #sys.path.insert(0, os.path.join(PATH_APP, d))
- #os.environ['PATH'] += ';.'
- def acMain(ac_version):
- global appWindow,messageLabel,messageList,s
- appWindow=ac.newApp(APP_NAME)
- ac.setSize(appWindow,600,300)
- ac.drawBorder(appWindow,0)
- ac.setBackgroundOpacity(appWindow,0)
- s = socket.socket()
- s.connect((HOST, PORT))
- s.send("PASS {}\r\n".format(PASS).encode("utf-8"))
- s.send("NICK {}\r\n".format(NICK).encode("utf-8"))
- s.send("JOIN {}\r\n".format(CHAN).encode("utf-8"))
- s.setblocking(False)
- for i in range(0,10):
- ac.console(str(i))
- messageLabel.append(ac.addLabel(appWindow,messageList[i]))
- ac.setPosition(messageLabel[i],15,(i*20)+30)
- input_text = ac.addTextInput(appWindow,"")
- ac.setPosition(input_text,15,(11*20)+30)
- ac.setSize(input_text,555,20)
- ac.addOnValidateListener(input_text,onSendMessage)
- return APP_NAME
- def onSendMessage(message):
- global s
- s.send("PRIVMSG {} :{}\r\n".format(CHAN, message).encode("utf-8"))
- messageList.append(NICK+": "+message)
- messageList.pop(0)
- for i in range(0,10):
- ac.setText(messageLabel[i], "{}".format(messageList[i]))
- def splitMessage(mess,user):
- userlen = len(user)+2
- splitted = []
- length_sup = True
- rest_mess = mess
- while length_sup == True:
- if len(rest_mess) > (64-userlen):
- split_mess = rest_mess[0:64]
- rest_mess = rest_mess[64:]
- splitted.append(user+': '+split_mess)
- else:
- if rest_mess.strip() != "":
- splitted.append(user+': '+rest_mess)
- length_sup = False
- return splitted
- def acUpdate(deltaT):
- global messageList,messageLabel,s
- try:
- response = s.recv(1024).decode("utf-8")
- if response == "PING :tmi.twitch.tv\r\n":
- s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
- elif response != None:
- result = re.search(CHAT_MSG, response)
- if result != None:
- result = result.group(0)
- username = re.search(r"\w+", response).group(0) # return the entire match
- message = CHAT_MSG.sub("", response)
- message_ready = splitMessage(message,username)
- for i in message_ready:
- messageList.append(i)
- messageList.pop(0)
- for i in range(0,10):
- ac.setText(messageLabel[i], "{}".format(messageList[i]))
- except:
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement