mirror of
https://gitlab.com/chicken-riders/RcGcDb.git
synced 2025-02-24 01:04:09 +00:00
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
![]() |
import asyncio, logging
|
||
|
logger = logging.getLogger("rcgcdw.msgqueue")
|
||
|
|
||
|
class MessageQueue:
|
||
|
"""Message queue class for undelivered messages"""
|
||
|
def __init__(self):
|
||
|
self._queue = []
|
||
|
|
||
|
def __repr__(self):
|
||
|
return self._queue
|
||
|
|
||
|
def __len__(self):
|
||
|
return len(self._queue)
|
||
|
|
||
|
def __iter__(self):
|
||
|
return iter(self._queue)
|
||
|
|
||
|
def clear(self):
|
||
|
self._queue.clear()
|
||
|
|
||
|
def add_message(self, message):
|
||
|
self._queue.append(message)
|
||
|
|
||
|
def cut_messages(self, item_num):
|
||
|
self._queue = self._queue[item_num:]
|
||
|
|
||
|
async def resend_msgs(self):
|
||
|
if self._queue:
|
||
|
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):
|
||
|
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")
|
||
|
await asyncio.sleep(2.5)
|
||
|
else:
|
||
|
logger.debug("Sending message failed")
|
||
|
break
|
||
|
else:
|
||
|
self.clear()
|
||
|
logger.debug("Queue emptied, all messages delivered")
|
||
|
self.cut_messages(num)
|
||
|
logger.debug(self._queue)
|
||
|
|
||
|
|
||
|
messagequeue = MessageQueue()
|