Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import time
- class TwitchSocket():
- def __init__(self, pw, user, channel):
- self.host = 'irc.chat.twitch.tv'
- self.port = 6667
- self.pw = pw
- self.user = user
- self.channel = channel
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.join_room()
- def send_message(self, message):
- message_temp = "PRIVMSG #" + self.channel + " :" + message
- self.sock.send("{}\r\n".format(message_temp).encode('utf-8'))
- def send_whisper(self, user, message):
- message_temp = "PRIVMSG #jtv :/w " + user + " " + message
- self.sock.send("{}\r\n".format(message_temp).encode('utf-8'))
- def join_room(self):
- self.sock.connect((self.host, self.port))
- self.sock.send("PASS {PASS}\r\n".format(PASS=self.pw).encode('utf-8'))
- self.sock.send("NICK {USER}\r\n".format(USER=self.user).encode('utf-8'))
- self.sock.send("JOIN #{CHANNEL}\r\n".format(CHANNEL=self.channel).encode('utf-8'))
- messages = ""
- loading = True
- while loading:
- try:
- read_buffer = self.sock.recv(1024)
- messages = messages + read_buffer.decode('utf-8')
- last_message = messages.split('\r\n')[-2]
- messages = ""
- if "End of /NAMES list" in last_message:
- loading = False
- else:
- loading = True
- except:
- continue
- self.send_message("{USER} is now online".format(USER=self.user))
- self.sock.send("CAP REQ :twitch.tv/commands\r\n".encode('utf-8'))
- self.sock.send("CAP REQ :twitch.tv/tags\r\n".encode('utf-8'))
- def get_user(self, line):
- line_list = line.split(':')
- user = line_list[-2].split('!')[0]
- return user
- def get_human_readable_message(self, line):
- if 'PRIVMSG' in line:
- line_list = line.split(':')
- hr_message = line_list[-1]
- return hr_message
- else:
- return ''
- SOCKET_ARGS = {
- 'pw': "oauth:biglongstringofstuff",
- 'user': "exampleuser",
- 'channel': "examplechannel"
- }
- TS = TwitchSocket(**SOCKET_ARGS)
- messages = ""
- while True:
- read_buffer = TS.sock.recv(1024)
- messages = messages + read_buffer.decode('utf-8')
- last_message = messages.split('\r\n')[-2]
- human_readable_message = TS.get_human_readable_message(last_message)
- user = TS.get_user(last_message)
- print('{}: {}'.format(user, human_readable_message))
- messages = ""
- if last_message == 'PING :tmi.twitch.tv':
- resp = last_message.replace("PING", "PONG") + "\r\n"
- TS.sock.send(resp.encode('utf-8'))
- time.sleep(.02)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement