home · contact · privacy
Add idna Unicode decoding error handler to URL follower.
[plomlombot-irc.git] / plomlombot.py
index c6a3777407c6dbceaffaf36c3d034bc400667a6a..ed0279279076217fb192ce3f49a76c570d90c111 100755 (executable)
@@ -226,7 +226,7 @@ def handle_command(command, argument, notice, target, session):
         msg = ""
         while 1:
             new_end = markov(snippet)
-            for name in session.uses_in_chan:
+            for name in session.users_in_chan:
                 if new_end[:len(name)] == name.lower():
                     new_end = "malkovich" + new_end[len(name):]
                     break
@@ -246,14 +246,14 @@ def handle_command(command, argument, notice, target, session):
     def twt():
         def try_open(mode):
             try:
-                twtfile = open(session.twtfile, "w")
-            except PermissionError, FileNotFoundError:
-                notice("CAN'T ACCESS OR CREATE TWT FILE.")
+                twtfile = open(session.twtfile, mode)
+            except (PermissionError, FileNotFoundError) as err:
+                notice("CAN'T ACCESS OR CREATE TWT FILE: " + str(err))
                 return None
             return twtfile
 
         from datetime import datetime
-        if not os.access(path, os.F_OK):
+        if not os.access(session.twtfile, os.F_OK):
             twtfile = try_open("w")
             if None == twtfile:
                 return
@@ -293,6 +293,7 @@ def handle_url(url, notice, show_url=False):
     except (requests.exceptions.TooManyRedirects,
             requests.exceptions.ConnectionError,
             requests.exceptions.InvalidURL,
+            UnicodeError,
             requests.exceptions.InvalidSchema) as error:
         notice("TROUBLE FOLLOWING URL: " + str(error))
         return
@@ -314,7 +315,7 @@ class Session:
         self.io = io
         self.nickname = nickname
         self.channel = channel
-        self.uses_in_chan = []
+        self.users_in_chan = []
         self.twtfile = twtfile
         self.io.send_line("NICK " + self.nickname)
         self.io.send_line("USER " + username + " 0 * : ")
@@ -382,14 +383,14 @@ class Session:
                 elif tokens[1] == "353":
                     names = tokens[5:]
                     names[0] = names[0][1:]
-                    self.uses_in_chan += names
+                    self.users_in_chan += names
                 elif tokens[1] == "JOIN":
                     name = name_from_join_or_part(tokens)
                     if name != self.nickname:
-                        self.uses_in_chan += [name]
+                        self.users_in_chan += [name]
                 elif tokens[1] == "PART":
                     name = name_from_join_or_part(tokens)
-                    del(self.uses_in_chan[self.uses_in_chan.index(name)])
+                    del(self.users_in_chan[self.users_in_chan.index(name)])
 
 def parse_command_line_arguments():
     parser = argparse.ArgumentParser()