From 8770fcea4709adcf53ebe0286aa37288728d659e Mon Sep 17 00:00:00 2001 From: Frisk Date: Wed, 6 May 2020 11:13:51 +0200 Subject: [PATCH] Fixed #122 --- discussions.py | 3 ++- misc.py | 20 ++++++++++++++++++++ rcgcdw.py | 20 +------------------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/discussions.py b/discussions.py index 63cdc4e..8d0d682 100644 --- a/discussions.py +++ b/discussions.py @@ -19,7 +19,7 @@ import logging, gettext, schedule, requests, json, datetime from collections import defaultdict from configloader import settings -from misc import datafile, send_to_discord, DiscordMessage, WIKI_SCRIPT_PATH, escape_formatting +from misc import datafile, send_to_discord, DiscordMessage, WIKI_SCRIPT_PATH, escape_formatting, messagequeue from session import session # Initialize translation @@ -104,6 +104,7 @@ def compact_formatter(post, post_type): def fetch_discussions(): + messagequeue.resend_msgs() request = safe_request(fetch_url) if request: try: diff --git a/misc.py b/misc.py index f250b02..48006a3 100644 --- a/misc.py +++ b/misc.py @@ -102,6 +102,26 @@ class MessageQueue: def cut_messages(self, item_num): self._queue = self._queue[item_num:] + def resend_msgs(self): + if self._queue: + misc_logger.info( + "{} messages waiting to be delivered to Discord due to Discord throwing errors/no connection to Discord servers.".format( + len(self._queue))) + for num, item in enumerate(self._queue): + misc_logger.debug( + "Trying to send a message to Discord from the queue with id of {} and content {}".format(str(num), + str(item))) + if send_to_discord_webhook(item) < 2: + misc_logger.debug("Sending message succeeded") + time.sleep(2.5) + else: + misc_logger.debug("Sending message failed") + break + else: + self.clear() + misc_logger.debug("Queue emptied, all messages delivered") + self.cut_messages(num) + misc_logger.debug(self._queue) messagequeue = MessageQueue() datafile = DataFile() diff --git a/rcgcdw.py b/rcgcdw.py index 29b7d09..af46b5a 100644 --- a/rcgcdw.py +++ b/rcgcdw.py @@ -1133,25 +1133,7 @@ class Recent_Changes_Class(object): self.ids.pop(0) def fetch(self, amount=settings["limit"]): - if messagequeue: - logger.info( - "{} messages waiting to be delivered to Discord due to Discord throwing errors/no connection to Discord servers.".format( - len(messagequeue))) - for num, item in enumerate(messagequeue): - logger.debug( - "Trying to send a message to Discord from the queue with id of {} and content {}".format(str(num), - str(item))) - if send_to_discord_webhook(item) < 2: - logger.debug("Sending message succeeded") - time.sleep(2.5) - else: - logger.debug("Sending message failed") - break - else: - messagequeue.clear() - logger.debug("Queue emptied, all messages delivered") - messagequeue.cut_messages(num) - logger.debug(messagequeue) + messagequeue.resend_msgs() last_check = self.fetch_changes(amount=amount) # If the request succeeds the last_check will be the last rcid from recentchanges query if last_check is not None: