From 6e9291c535db4657eacf2f1236e3919b5fe42e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatrice=20Dellac=C3=A0?= Date: Mon, 21 Nov 2022 11:23:52 +0100 Subject: [PATCH] Implement messages error handling in database Invalid messages will now be purged from database (if bot was kicked from a guild, if a channel was deleted, ...). --- .../hidekobot/utils/ExpiredMessageRunner.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/wtf/beatrice/hidekobot/utils/ExpiredMessageRunner.java b/src/main/java/wtf/beatrice/hidekobot/utils/ExpiredMessageRunner.java index 06f36a6..a0b62f6 100644 --- a/src/main/java/wtf/beatrice/hidekobot/utils/ExpiredMessageRunner.java +++ b/src/main/java/wtf/beatrice/hidekobot/utils/ExpiredMessageRunner.java @@ -47,7 +47,13 @@ public class ExpiredMessageRunner implements Runnable { if(Configuration.isVerbose()) logger.log("expired check: " + messageId); String expiryTimestamp = databaseManager.getQueuedExpiringMessageExpiryDate(messageId); - if(expiryTimestamp == null || expiryTimestamp.equals("")) continue; //todo: idk count it as expired already? + if(expiryTimestamp == null || expiryTimestamp.equals("")) // if missing timestamp + { + // count it as already expired + databaseManager.untrackExpiredMessage(messageId); + // move on to next message + continue; + } LocalDateTime expiryDate = LocalDateTime.parse(expiryTimestamp, formatter); @@ -70,9 +76,21 @@ public class ExpiredMessageRunner implements Runnable { Guild guild = HidekoBot.getAPI().getGuildById(guildId); - if(guild == null) return; //todo count it as done/solved/removed? we probably got kicked + if(guild == null) + { + // if guild is not found, consider it expired + // (server was deleted or bot was kicked) + databaseManager.untrackExpiredMessage(messageId); + return; + } TextChannel textChannel = guild.getTextChannelById(channelId); - if(textChannel == null) return; //todo count it as done/solved/removed? channel was probably deleted + if(textChannel == null) + { + // if channel is not found, count it as expired + // (channel was deleted or bot permissions restricted) + databaseManager.untrackExpiredMessage(messageId); + return; + } RestAction retrieveAction = textChannel.retrieveMessageById(messageId); @@ -82,7 +100,11 @@ public class ExpiredMessageRunner implements Runnable { retrieveAction.queue( message -> { - if(message == null) return; //todo count it as done/solved/removed? message was probably deleted + if(message == null) + { + databaseManager.untrackExpiredMessage(messageId); + return; + } List components = message.getComponents(); List newComponents = new ArrayList<>();