diff --git a/.gitignore b/.gitignore index 4c152d7..e502d8c 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ src/astroidapi/test.py /src/healtcheck_summaries src/astroidapi/test.py src/runtest.py +src/astroidapi/upd_surrealdb_handler.py diff --git a/src/astroidapi/queue_processor.py b/src/astroidapi/queue_processor.py index 1af965e..44da7cf 100644 --- a/src/astroidapi/queue_processor.py +++ b/src/astroidapi/queue_processor.py @@ -115,7 +115,11 @@ async def sendMessage(cls, endpoint): else: raise Exception("Unknown error in sendMessage while processing queue. Queue length is unsupported type or negative.") except: - await surrealdb_handler.QueueHandler.remove_from_queue(endpoint, message) + try: + await surrealdb_handler.QueueHandler.remove_from_queue(endpoint, message) + await cls.clearLoadedMessage(endpoint, message) + except: + await surrealdb_handler.QueueHandler.clear_queue(endpoint) raise Exception("Error in sendMessage while processing queue.") diff --git a/src/astroidapi/sending_handler.py b/src/astroidapi/sending_handler.py index 571b07b..287774c 100644 --- a/src/astroidapi/sending_handler.py +++ b/src/astroidapi/sending_handler.py @@ -117,14 +117,17 @@ async def send_to_discord(cls, updated_json, endpoint, attachments: list = None) try: read_discord = await read_handler.ReadHandler.check_read(endpoint, "discord") if read_discord is False: - if updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["guilded"]: - webhook = updated_json["config"]["webhooks"]["discord"][updated_json["config"]["channels"]["guilded"].index(updated_json["meta"]["sender-channel"])] - elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["nerimity"]: - webhook = updated_json["config"]["webhooks"]["discord"][updated_json["config"]["channels"]["nerimity"].index(updated_json["meta"]["sender-channel"])] - elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["revolt"]: - webhook = updated_json["config"]["webhooks"]["discord"][updated_json["config"]["channels"]["revolt"].index(updated_json["meta"]["sender-channel"])] - else: - raise errors.SendingError.ChannelNotFound(f'The channel {updated_json["meta"]["sender-channel"]} ({updated_json["meta"]["sender"]}) does not seem to be a registered channel on other platforms.') + try: + if updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["guilded"]: + webhook = updated_json["config"]["webhooks"]["discord"][updated_json["config"]["channels"]["guilded"].index(updated_json["meta"]["sender-channel"])] + elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["nerimity"]: + webhook = updated_json["config"]["webhooks"]["discord"][updated_json["config"]["channels"]["nerimity"].index(updated_json["meta"]["sender-channel"])] + elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["revolt"]: + webhook = updated_json["config"]["webhooks"]["discord"][updated_json["config"]["channels"]["revolt"].index(updated_json["meta"]["sender-channel"])] + else: + raise errors.SendingError.ChannelNotFound(f'The channel {updated_json["meta"]["sender-channel"]} ({updated_json["meta"]["sender"]}) does not seem to be a registered channel on other platforms.') + except KeyError: + return True nextcord_files = [] if attachments is not None: for attachment in attachments: @@ -164,14 +167,17 @@ async def send_to_guilded(cls, updated_json, endpoint, attachments: list = None) try: read_guilded = await read_handler.ReadHandler.check_read(endpoint, "guilded") if read_guilded is False: - if updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["discord"]: - webhook = updated_json["config"]["webhooks"]["guilded"][updated_json["config"]["channels"]["discord"].index(updated_json["meta"]["sender-channel"])] - elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["nerimity"]: - webhook = updated_json["config"]["webhooks"]["guilded"][updated_json["config"]["channels"]["nerimity"].index(updated_json["meta"]["sender-channel"])] - elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["revolt"]: - webhook = updated_json["config"]["webhooks"]["guilded"][updated_json["config"]["channels"]["revolt"].index(updated_json["meta"]["sender-channel"])] - else: - raise errors.SendingError.ChannelNotFound(f'The channel {updated_json["meta"]["sender-channel"]} ({updated_json["meta"]["sender"]}) does not seem to be a registered channel on other platforms.') + try: + if updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["discord"]: + webhook = updated_json["config"]["webhooks"]["guilded"][updated_json["config"]["channels"]["discord"].index(updated_json["meta"]["sender-channel"])] + elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["nerimity"]: + webhook = updated_json["config"]["webhooks"]["guilded"][updated_json["config"]["channels"]["nerimity"].index(updated_json["meta"]["sender-channel"])] + elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["revolt"]: + webhook = updated_json["config"]["webhooks"]["guilded"][updated_json["config"]["channels"]["revolt"].index(updated_json["meta"]["sender-channel"])] + else: + raise errors.SendingError.ChannelNotFound(f'The channel {updated_json["meta"]["sender-channel"]} ({updated_json["meta"]["sender"]}) does not seem to be a registered channel on other platforms.') + except KeyError: + return True guilded_files = [] if attachments is not None: for attachment in attachments: @@ -221,14 +227,17 @@ async def send_to_nerimity(cls, updated_json, endpoint, attachments: list = None response_json = updated_json sender_channel = response_json["meta"]["sender-channel"] discord_channels = response_json["config"]["channels"]["discord"] - if sender_channel in discord_channels: - channel_id = response_json["config"]["channels"]["nerimity"][discord_channels.index(sender_channel)] - elif sender_channel in response_json["config"]["channels"]["guilded"]: - channel_id = response_json["config"]["channels"]["nerimity"][response_json["config"]["channels"]["guilded"].index(sender_channel)] - elif sender_channel in response_json["config"]["channels"]["revolt"]: - channel_id = response_json["config"]["channels"]["nerimity"][response_json["config"]["channels"]["revolt"].index(sender_channel)] - else: - raise errors.SendingError.ChannelNotFound(f'The channel {sender_channel} ({updated_json["meta"]["sender"]}) does not seem to be a registered channel on other platforms.') + try: + if sender_channel in discord_channels: + channel_id = response_json["config"]["channels"]["nerimity"][discord_channels.index(sender_channel)] + elif sender_channel in response_json["config"]["channels"]["guilded"]: + channel_id = response_json["config"]["channels"]["nerimity"][response_json["config"]["channels"]["guilded"].index(sender_channel)] + elif sender_channel in response_json["config"]["channels"]["revolt"]: + channel_id = response_json["config"]["channels"]["nerimity"][response_json["config"]["channels"]["revolt"].index(sender_channel)] + else: + raise errors.SendingError.ChannelNotFound(f'The channel {sender_channel} ({updated_json["meta"]["sender"]}) does not seem to be a registered channel on other platforms.') + except KeyError: + return True message_author_name = response_json["meta"]["message"]["author"]["name"] message_content = response_json["meta"]["message"]["content"] message_content = await emoji_handler.convert_message(message_content, updated_json["meta"]["sender"], "nerimity", endpoint) @@ -290,15 +299,17 @@ async def send_to_nerimity(cls, updated_json, endpoint, attachments: list = None @classmethod async def send_to_revolt(cls, updated_json, endpoint, attachments: list = None): if updated_json["meta"]["read"]["revolt"] is False: - if updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["discord"]: - channel_id = updated_json["config"]["channels"]["revolt"][updated_json["config"]["channels"]["discord"].index(updated_json["meta"]["sender-channel"])] - elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["guilded"]: - channel_id = updated_json["config"]["channels"]["revolt"][updated_json["config"]["channels"]["guilded"].index(updated_json["meta"]["sender-channel"])] - elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["nerimity"]: - channel_id = updated_json["config"]["channels"]["revolt"][updated_json["config"]["channels"]["nerimity"].index(updated_json["meta"]["sender-channel"])] - else: - raise errors.SendingError.ChannelNotFound(f"The channel {updated_json["meta"]["sender-channel"]} ({updated_json["meta"]["sender"]}) does not seem to be a registered channel on other platforms.") - + try: + if updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["discord"]: + channel_id = updated_json["config"]["channels"]["revolt"][updated_json["config"]["channels"]["discord"].index(updated_json["meta"]["sender-channel"])] + elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["guilded"]: + channel_id = updated_json["config"]["channels"]["revolt"][updated_json["config"]["channels"]["guilded"].index(updated_json["meta"]["sender-channel"])] + elif updated_json["meta"]["sender-channel"] in updated_json["config"]["channels"]["nerimity"]: + channel_id = updated_json["config"]["channels"]["revolt"][updated_json["config"]["channels"]["nerimity"].index(updated_json["meta"]["sender-channel"])] + else: + raise errors.SendingError.ChannelNotFound(f"The channel {updated_json["meta"]["sender-channel"]} ({updated_json["meta"]["sender"]}) does not seem to be a registered channel on other platforms.") + except KeyError: + return True headers = { "X-Bot-Token": f"{config.REVOLT_TOKEN}" } diff --git a/src/astroidapi/surrealdb_handler.py b/src/astroidapi/surrealdb_handler.py index 5f227ee..6034a46 100644 --- a/src/astroidapi/surrealdb_handler.py +++ b/src/astroidapi/surrealdb_handler.py @@ -243,7 +243,10 @@ async def remove_from_queue(cls, endpoint: int, message: dict): await db.signin({"user": config.SDB_USER, "pass": config.SDB_PASS}) await db.use(config.SDB_NAMESPACE, config.SDB_DATABASE) data = await db.select(f"endpoints:`{endpoint}`") - data["meta"]["_message_cache"].remove(message) + try: + data["meta"]["_message_cache"].remove(message) + except ValueError: + return await db.select(f"endpoints:`{endpoint}`") if data["meta"]["_message_cache"] is None: await db.query(f"UPDATE endpoints:`{endpoint}` SET meta._message_cache = []") return await db.select(f"endpoints:`{endpoint}`")