Skip to content

Instantly share code, notes, and snippets.

@TRSGuy
Created March 4, 2017 13:59
Show Gist options
  • Save TRSGuy/26d49b50df7e13d90f128848141b5283 to your computer and use it in GitHub Desktop.
Save TRSGuy/26d49b50df7e13d90f128848141b5283 to your computer and use it in GitHub Desktop.
import socket, threading
class irc(object):
def __init__(self, nick):
super(irc, self).__init__()
self.s = socket.socket()
self.nick = nick
self.channel = '##tinyvoxel'
self.server = 'irc.freenode.net'
self.oauth = 'ThisIsAPassIPromise'
self.main()
def main(self):
self.connect()
self.main_loop_thread = threading.Thread(target=self.main_loop)
self.main_loop_thread.start()
def encode(self, message):
return message.encode('utf-8')
def decode(self, message):
return message.decode('utf-8')
def send_message(self, message, to="server"):
if (to == 'server'):
msg = self.encode(message + '\r\n')
elif(to == 'channel'):
msg = self.encode('PRIVMSG ' + self.channel + ' ' + message + '\r\n')
self.s.send(msg)
def get_message(self, raw):
decoded = self.decode(raw)
return decoded[decoded.find(self.channel)+len(self.channel) + 2:len(decoded)-2]
def get_nick(self, raw):
decoded = self.decode(raw)
return decoded[1:decoded.find('!')]
def connect(self):
self.s.connect((self.server, 6667))
self.send_message('PASS ' + self.oauth)
self.send_message('USER ' + self.nick + ' ' + self.nick + ' ' + self.nick + ' :' + self.nick )
self.send_message('NICK ' + self.nick)
self.send_message('JOIN ' + self.channel)
print('connected')
def main_loop(self):
while 1:
self.raw = self.s.recv(1024)
self.message = self.get_message(self.raw)
self.author = self.get_nick(self.raw)
self.message_length = len(self.message)
self.tmp_msg = {
'author': self.author,
'message': self.message
}
self.friendly_msg = self.author + '> ' + self.message
if(b'PING: ' in self.raw):
self.send_message('PONG: irc.chat.twitch.tv') #Fix this to make it the proper response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment