From ce280f8771032a9608b04845ed531ed20366679d Mon Sep 17 00:00:00 2001 From: khuxkm fbexl Date: Fri, 4 Jun 2021 16:48:11 +0000 Subject: [PATCH] Fix crashes --- bot.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/bot.py b/bot.py index fad722d..27973ff 100644 --- a/bot.py +++ b/bot.py @@ -17,9 +17,25 @@ class Socket: if lines[-1]: self._read_buffer=lines[-1] lines.pop(-1) - lines = [line.decode("utf-8") for line in lines] + out = [] + for line in lines: + # try to decode as UTF-8, then CP1252, then ISO-8859-1 + # if none of them work then just ignore the line + try: + line = line.decode("utf-8") + out.append(line) + except: + try: + line = line.decode("cp1252") + out.append(line) + except: + try: + line = line.decode("iso-8859-1") + out.append(line) + except: + continue # for line in lines: print(" < "+line) - return lines + return out def send(self,line): # print(" > "+line) self.sock.send(line.encode("utf-8")) @@ -164,9 +180,11 @@ class IRCBot: self.running=True while self.running: lines = self.socket.read() - if lines: - for line in lines: - self.handle_line(line) + if lines is None: # socket dead for some reason + self.running = False + continue # exit loop + for line in lines: + self.handle_line(line) self.socket.close() del self.socket def stop(self):