Advertisement
Guest User

Untitled

a guest
Dec 15th, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. import os
  2. import sys
  3. import time
  4. import traceback
  5. import ac
  6. import socket
  7. import re
  8. from threading import Thread
  9.  
  10. HOST = "irc.chat.twitch.tv" # the Twitch IRC server
  11. PORT = 6667 # always use port 6667!
  12. NICK = "Ligneel" # your Twitch username, lowercase
  13. PASS = "" # your Twitch OAuth token
  14. CHAN = "#ligneel" # the channel you want to join
  15. RATE = (20/30)
  16.  
  17. CHAT_MSG=re.compile(r"^:\w+!\w+@\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
  18. APP_NAME = 'Twitch chat'
  19. PATH_APP = os.path.dirname(__file__)
  20. messageLabel = []
  21. messageList = ['-','-','-','-','-','-','-','-','-','-']
  22.  
  23. #for d in ('third_party', 'stdlib64'):
  24. #sys.path.insert(0, os.path.join(PATH_APP, d))
  25. #os.environ['PATH'] += ';.'
  26. def acMain(ac_version):
  27. global appWindow,messageLabel,messageList,s
  28. appWindow=ac.newApp(APP_NAME)
  29. ac.setSize(appWindow,600,300)
  30. ac.drawBorder(appWindow,0)
  31. ac.setBackgroundOpacity(appWindow,0)
  32. s = socket.socket()
  33. s.connect((HOST, PORT))
  34. s.send("PASS {}\r\n".format(PASS).encode("utf-8"))
  35. s.send("NICK {}\r\n".format(NICK).encode("utf-8"))
  36. s.send("JOIN {}\r\n".format(CHAN).encode("utf-8"))
  37. s.setblocking(False)
  38.  
  39. for i in range(0,10):
  40. ac.console(str(i))
  41. messageLabel.append(ac.addLabel(appWindow,messageList[i]))
  42. ac.setPosition(messageLabel[i],15,(i*20)+30)
  43. input_text = ac.addTextInput(appWindow,"")
  44. ac.setPosition(input_text,15,(11*20)+30)
  45. ac.setSize(input_text,555,20)
  46. ac.addOnValidateListener(input_text,onSendMessage)
  47. return APP_NAME
  48. def onSendMessage(message):
  49. global s
  50. s.send("PRIVMSG {} :{}\r\n".format(CHAN, message).encode("utf-8"))
  51. messageList.append(NICK+": "+message)
  52. messageList.pop(0)
  53. for i in range(0,10):
  54. ac.setText(messageLabel[i], "{}".format(messageList[i]))
  55. def splitMessage(mess,user):
  56. userlen = len(user)+2
  57. splitted = []
  58. length_sup = True
  59. rest_mess = mess
  60. while length_sup == True:
  61. if len(rest_mess) > (64-userlen):
  62. split_mess = rest_mess[0:64]
  63. rest_mess = rest_mess[64:]
  64. splitted.append(user+': '+split_mess)
  65. else:
  66. if rest_mess.strip() != "":
  67. splitted.append(user+': '+rest_mess)
  68. length_sup = False
  69. return splitted
  70.  
  71.  
  72. def acUpdate(deltaT):
  73. global messageList,messageLabel,s
  74. try:
  75. response = s.recv(1024).decode("utf-8")
  76. if response == "PING :tmi.twitch.tv\r\n":
  77. s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
  78. elif response != None:
  79. result = re.search(CHAT_MSG, response)
  80. if result != None:
  81. result = result.group(0)
  82. username = re.search(r"\w+", response).group(0) # return the entire match
  83. message = CHAT_MSG.sub("", response)
  84. message_ready = splitMessage(message,username)
  85. for i in message_ready:
  86. messageList.append(i)
  87. messageList.pop(0)
  88. for i in range(0,10):
  89. ac.setText(messageLabel[i], "{}".format(messageList[i]))
  90. except:
  91. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement