Skip to content

Commit c43c479

Browse files
committed
better error handling
1 parent fbc2d15 commit c43c479

File tree

5 files changed

+16
-5
lines changed

5 files changed

+16
-5
lines changed

sizebot/cogs/edge.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ async def clearlargest(self, ctx: GuildContext):
137137
async def edgedebug(self, ctx: GuildContext):
138138
userdata = userdb.load(ctx.guild.id, ctx.author.id)
139139
usersizes = getUserSizes(ctx.guild)
140-
guilddata = guilddb.load(ctx.guild.id)
140+
guilddata = guilddb.load_or_create(ctx.guild.id)
141141
sm = guilddata.small_edge
142142
lg = guilddata.large_edge
143143

@@ -159,7 +159,7 @@ async def on_message(self, m: discord.Message):
159159
return
160160

161161
try:
162-
guilddata = guilddb.load(m.guild.id)
162+
guilddata = guilddb.load_or_create(m.guild.id)
163163
except GuildNotFoundException:
164164
return # Guild does not have edges set
165165

sizebot/cogs/limits.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ async def on_message(self, m: discord.Message):
160160
except UserNotFoundException:
161161
return
162162
try:
163-
guilddata = guilddb.load(m.guild.id)
163+
guilddata = guilddb.load_or_create(m.guild.id)
164164
except GuildNotFoundException:
165165
return
166166

sizebot/lib/changes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ async def apply(self, bot: commands.Bot) -> bool:
7575
addPerTick = cast(SV, self.addPerSec * seconds)
7676
mulPerTick = cast(Decimal, self.mulPerSec ** seconds)
7777
powPerTick = cast(Decimal, self.powPerSec ** seconds)
78-
guilddata = guilddb.load(self.guildid)
78+
guilddata = guilddb.load_or_create(self.guildid)
7979
userdata = userdb.load(self.guildid, self.userid)
8080
newheight = cast(SV, ((userdata.height ** powPerTick) * mulPerTick) + addPerTick)
8181

sizebot/lib/errors.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,14 @@ def formatMessage(self) -> str:
287287
def formatUserMessage(self) -> str:
288288
return f"Could not calculate the {self.s} stat(s)."
289289

290+
class DatabaseLoadException(DigiException):
291+
def __init__(self, f: str):
292+
self.f = f
293+
294+
# TODO: CamelCase
295+
def formatUserMessage(self) -> str:
296+
return f"The database file {self.f} failed to load."
297+
290298

291299
def sentence_join(items: Iterable[str], *, joiner: str | None = None, oxford: bool = False) -> str:
292300
"""Join a list of strings like a sentence.

sizebot/lib/userdb.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,10 @@ def load(guildid: int, userid: int, *, member: discord.Member = None, allow_unre
432432
path = get_user_path(guildid, userid)
433433
try:
434434
with open(path, "r") as f:
435-
jsondata = json.load(f)
435+
try:
436+
jsondata = json.load(f)
437+
except json.JSONDecodeError as e:
438+
raise errors.DatabaseLoadException(str(path.absolute())) from e
436439
except FileNotFoundError:
437440
raise errors.UserNotFoundException(guildid, userid)
438441
user = User.fromJSON(jsondata)

0 commit comments

Comments
 (0)