[V3 Core] Encoding issue fix (#1365)

* Don't let the system encoding screw with things,
specify opens as happening with utf-8 encoding

* And also deal with encoding issues because windows is a special snowflake
(see: #1366)

* let's just use the encoding param in str() rather than encode/decode...
This commit is contained in:
Michael H 2018-03-04 13:02:04 -05:00 committed by Will
parent 3816385228
commit f6903cf582
5 changed files with 15 additions and 12 deletions

View File

@ -43,7 +43,7 @@ class Downloader:
self.LIB_PATH.mkdir(parents=True, exist_ok=True) self.LIB_PATH.mkdir(parents=True, exist_ok=True)
self.SHAREDLIB_PATH.mkdir(parents=True, exist_ok=True) self.SHAREDLIB_PATH.mkdir(parents=True, exist_ok=True)
if not self.SHAREDLIB_INIT.exists(): if not self.SHAREDLIB_INIT.exists():
with self.SHAREDLIB_INIT.open(mode='w') as _: with self.SHAREDLIB_INIT.open(mode='w', encoding='utf-8') as _:
pass pass
if str(self.LIB_PATH) not in syspath: if str(self.LIB_PATH) not in syspath:

View File

@ -322,7 +322,7 @@ class Mod:
except discord.errors.Forbidden: except discord.errors.Forbidden:
await ctx.send(_("I'm not allowed to do that.")) await ctx.send(_("I'm not allowed to do that."))
except Exception as e: except Exception as e:
print(e) print(str(e, encoding='utf-8', errors='replace'))
else: else:
await ctx.send(_("Done. That felt good.")) await ctx.send(_("Done. That felt good."))
@ -379,7 +379,7 @@ class Mod:
await ctx.send(_("I'm not allowed to do that.")) await ctx.send(_("I'm not allowed to do that."))
except Exception as e: except Exception as e:
self.ban_queue.remove(queue_entry) self.ban_queue.remove(queue_entry)
print(e) print(str(e, encoding='utf-8', errors='replace'))
else: else:
await ctx.send(_("Done. It was about time.")) await ctx.send(_("Done. It was about time."))
@ -540,14 +540,14 @@ class Mod:
return return
except discord.HTTPException as e: except discord.HTTPException as e:
self.ban_queue.remove(queue_entry) self.ban_queue.remove(queue_entry)
print(e) print(str(e, encoding='utf-8', errors='replace'))
return return
self.unban_queue.append(queue_entry) self.unban_queue.append(queue_entry)
try: try:
await guild.unban(user) await guild.unban(user)
except discord.HTTPException as e: except discord.HTTPException as e:
self.unban_queue.remove(queue_entry) self.unban_queue.remove(queue_entry)
print(e) print(str(e, encoding='utf-8', errors='replace'))
return return
else: else:
await ctx.send(_("Done. Enough chaos.")) await ctx.send(_("Done. Enough chaos."))
@ -1209,7 +1209,7 @@ class Mod:
"Mention spam (Autoban)", until=None, channel=None "Mention spam (Autoban)", until=None, channel=None
) )
except RuntimeError as e: except RuntimeError as e:
print(e) print(str(e, encoding='utf-8', errors='replace'))
return False return False
return True return True
return False return False
@ -1269,7 +1269,7 @@ class Mod:
"ban", member, mod, "ban", member, mod,
reason if reason else None) reason if reason else None)
except RuntimeError as e: except RuntimeError as e:
print(e) print(str(e, encoding='utf-8', errors='replace'))
async def on_member_unban(self, guild: discord.Guild, user: discord.User): async def on_member_unban(self, guild: discord.Guild, user: discord.User):
if (guild.id, user.id) in self.unban_queue: if (guild.id, user.id) in self.unban_queue:
@ -1287,7 +1287,7 @@ class Mod:
await modlog.create_case(guild, date, "unban", await modlog.create_case(guild, date, "unban",
user, mod, reason) user, mod, reason)
except RuntimeError as e: except RuntimeError as e:
print(e) print(str(e, encoding='utf-8', errors='replace'))
async def get_audit_entry_info(self, async def get_audit_entry_info(self,
guild: discord.Guild, guild: discord.Guild,

View File

@ -465,7 +465,7 @@ class Trivia:
raise FileNotFoundError("Could not find the `{}` category" raise FileNotFoundError("Could not find the `{}` category"
"".format(category)) "".format(category))
with path.open() as file: with path.open(encoding='utf-8') as file:
try: try:
dict_ = yaml.load(file) dict_ = yaml.load(file)
except yaml.error.YAMLError as exc: except yaml.error.YAMLError as exc:

View File

@ -140,7 +140,10 @@ def init_events(bot, cli_flags):
print(Fore.RED + INTRO) print(Fore.RED + INTRO)
print(Style.RESET_ALL) print(Style.RESET_ALL)
print(bordered(INFO, INFO2, ascii_border=ascii_border)) print(
str(bordered(INFO, INFO2, ascii_border=ascii_border),
encoding='utf-8', errors='replace')
)
if invite_url: if invite_url:
print("\nInvite URL: {}\n".format(invite_url)) print("\nInvite URL: {}\n".format(invite_url))

View File

@ -180,9 +180,9 @@ class CogI18n:
try: try:
try: try:
translation_file = locale_path.open('ru') translation_file = locale_path.open('ru', encoding='utf-8')
except ValueError: # We are using Windows except ValueError: # We are using Windows
translation_file = locale_path.open('r') translation_file = locale_path.open('r', encoding='utf-8')
self._parse(translation_file) self._parse(translation_file)
except (IOError, FileNotFoundError): # The translation is unavailable except (IOError, FileNotFoundError): # The translation is unavailable
pass pass