Advertisement
Guest User

Untitled

a guest
May 12th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. import socket
  2. import time
  3.  
  4. class TwitchSocket():
  5.  
  6. def __init__(self, pw, user, channel):
  7. self.host = 'irc.chat.twitch.tv'
  8. self.port = 6667
  9. self.pw = pw
  10. self.user = user
  11. self.channel = channel
  12. self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  13.  
  14. self.join_room()
  15.  
  16. def send_message(self, message):
  17. message_temp = "PRIVMSG #" + self.channel + " :" + message
  18. self.sock.send("{}\r\n".format(message_temp).encode('utf-8'))
  19.  
  20. def send_whisper(self, user, message):
  21. message_temp = "PRIVMSG #jtv :/w " + user + " " + message
  22. self.sock.send("{}\r\n".format(message_temp).encode('utf-8'))
  23.  
  24. def join_room(self):
  25. self.sock.connect((self.host, self.port))
  26. self.sock.send("PASS {PASS}\r\n".format(PASS=self.pw).encode('utf-8'))
  27. self.sock.send("NICK {USER}\r\n".format(USER=self.user).encode('utf-8'))
  28. self.sock.send("JOIN #{CHANNEL}\r\n".format(CHANNEL=self.channel).encode('utf-8'))
  29.  
  30. messages = ""
  31. loading = True
  32. while loading:
  33. try:
  34. read_buffer = self.sock.recv(1024)
  35. messages = messages + read_buffer.decode('utf-8')
  36. last_message = messages.split('\r\n')[-2]
  37. messages = ""
  38. if "End of /NAMES list" in last_message:
  39. loading = False
  40. else:
  41. loading = True
  42. except:
  43. continue
  44. self.send_message("{USER} is now online".format(USER=self.user))
  45. self.sock.send("CAP REQ :twitch.tv/commands\r\n".encode('utf-8'))
  46. self.sock.send("CAP REQ :twitch.tv/tags\r\n".encode('utf-8'))
  47.  
  48. def get_user(self, line):
  49. line_list = line.split(':')
  50. user = line_list[-2].split('!')[0]
  51. return user
  52.  
  53. def get_human_readable_message(self, line):
  54. if 'PRIVMSG' in line:
  55. line_list = line.split(':')
  56. hr_message = line_list[-1]
  57. return hr_message
  58. else:
  59. return ''
  60.  
  61.  
  62. SOCKET_ARGS = {
  63. 'pw': "oauth:biglongstringofstuff",
  64. 'user': "exampleuser",
  65. 'channel': "examplechannel"
  66. }
  67.  
  68. TS = TwitchSocket(**SOCKET_ARGS)
  69. messages = ""
  70.  
  71. while True:
  72. read_buffer = TS.sock.recv(1024)
  73.  
  74. messages = messages + read_buffer.decode('utf-8')
  75. last_message = messages.split('\r\n')[-2]
  76. human_readable_message = TS.get_human_readable_message(last_message)
  77. user = TS.get_user(last_message)
  78. print('{}: {}'.format(user, human_readable_message))
  79. messages = ""
  80. if last_message == 'PING :tmi.twitch.tv':
  81. resp = last_message.replace("PING", "PONG") + "\r\n"
  82. TS.sock.send(resp.encode('utf-8'))
  83. time.sleep(.02)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement