From 22af84d82699e1521b8c198f16d8ccaf6a0d637e Mon Sep 17 00:00:00 2001 From: Klemek Date: Sat, 13 Mar 2021 15:47:50 +0100 Subject: [PATCH] fixed empty channel bug --- src/logs/channel_logs.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/logs/channel_logs.py b/src/logs/channel_logs.py index 1e7548a..501cc06 100644 --- a/src/logs/channel_logs.py +++ b/src/logs/channel_logs.py @@ -22,7 +22,7 @@ class ChannelLogs: return self.id = int(channel["id"]) self.name = channel["name"] - self.last_message_id = int(channel["last_message_id"]) + self.last_message_id = int(channel["last_message_id"]) if channel["last_message_id"] is not None else None self.messages = [MessageLog(message) for message in channel["messages"]] def is_format(self): @@ -47,22 +47,24 @@ class ChannelLogs: else: # first load last_message_id = None done = 0 - while done >= CHUNK_SIZE or last_message_id is None: - done = 0 - async for message in channel.history( - limit=CHUNK_SIZE, - before=FakeMessage(last_message_id) - if last_message_id is not None - else None, - oldest_first=False, - ): - done += 1 - last_message_id = message.id - m = MessageLog(message) - await m.load(message) - self.messages += [m] - yield len(self.messages), False - self.last_message_id = channel.last_message_id + sanity_check = len(await channel.history(limit=1).flatten()) + if sanity_check == 1: + while done >= CHUNK_SIZE or last_message_id is None: + done = 0 + async for message in channel.history( + limit=CHUNK_SIZE, + before=FakeMessage(last_message_id) + if last_message_id is not None + else None, + oldest_first=False, + ): + done += 1 + last_message_id = message.id + m = MessageLog(message) + await m.load(message) + self.messages += [m] + yield len(self.messages), False + self.last_message_id = channel.last_message_id except discord.errors.HTTPException: return # When an exception occurs (like Forbidden) yield len(self.messages), True