From d349a0cab7d2e9be5de6a2a8e981ff28bcb1e9c9 Mon Sep 17 00:00:00 2001 From: Twentysix Date: Fri, 9 Dec 2016 02:11:14 +0100 Subject: [PATCH] [Audio] Replace settings.json in case of corruption --- cogs/audio.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cogs/audio.py b/cogs/audio.py index 9cc9317f7..f78ccc0bf 100644 --- a/cogs/audio.py +++ b/cogs/audio.py @@ -6,6 +6,7 @@ from random import shuffle, choice from cogs.utils.dataIO import dataIO from cogs.utils import checks from __main__ import send_cmd_help, settings +from json import JSONDecodeError import re import logging import collections @@ -991,7 +992,7 @@ class Audio: self.settings["MAX_CACHE"] = size await self.bot.say("Max cache size set to {} MB.".format(size)) self.save_settings() - + @audioset.command(name="emptydisconnect", pass_context=True) @checks.mod_or_permissions(manage_messages=True) async def audioset_emptydisconnect(self, ctx): @@ -2087,7 +2088,13 @@ def check_files(): print("Creating default audio settings.json...") dataIO.save_json(settings_path, default) else: # consistency check - current = dataIO.load_json(settings_path) + try: + current = dataIO.load_json(settings_path) + except JSONDecodeError: + # settings.json keeps getting corrupted for unknown reasons. Let's + # try to keep it from making the cog load fail. + dataIO.save_json(settings_path, default) + current = dataIO.load_json(settings_path) if current.keys() != default.keys(): for key in default.keys(): if key not in current.keys():