mirror of
https://gitlab.com/chicken-riders/RcGcDb.git
synced 2025-02-23 00:54:09 +00:00
Fixed issue with Discord's merging of messages and debug dump trying to serialize bytes objects in db queries
This commit is contained in:
parent
368ddf81a6
commit
a0b9cb3c1e
|
@ -272,6 +272,9 @@ class StackedDiscordMessage:
|
|||
def add_message(self, message: DiscordMessage):
|
||||
if self.check_for_length(len(message)):
|
||||
raise MessageTooBig
|
||||
# Discord merges multiple embeds with same URL into one, this is why we must to add dummy argument for this not to happen
|
||||
if self.message_type == 1 and any(message.embed["url"] == stackedmessage.embed["url"] for stackedmessage in self.message_list):
|
||||
message.embed["url"] += ("&" if "?" in message.embed["url"] else "?") + "_id=" + str(len(self.message_list))
|
||||
self.length += len(message) + (self.message_type == 0)
|
||||
self.message_list.append(message)
|
||||
# self._setup_embed()
|
||||
|
|
|
@ -99,7 +99,7 @@ class DomainManager:
|
|||
"tasks": {},
|
||||
"domains": {},
|
||||
"queued_messages": [],
|
||||
"awaiting_DB_queries": dbmanager.updated,
|
||||
"awaiting_DB_queries": dbmanager.json(),
|
||||
"total_discord_messages_sent": sum([x.total_discord_messages_sent for x in self.domains.values()])
|
||||
}
|
||||
for task in asyncio.all_tasks():
|
||||
|
|
13
src/misc.py
13
src/misc.py
|
@ -1,5 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import functools
|
||||
import json
|
||||
from functools import cache
|
||||
from html.parser import HTMLParser
|
||||
|
@ -248,3 +249,15 @@ class LimitedList(list):
|
|||
|
||||
def __repr__(self):
|
||||
return "\n".join([str(x) for x in self])
|
||||
|
||||
|
||||
def catch_exceptions(passed_context):
|
||||
def wrapper(func):
|
||||
@functools.wraps(func)
|
||||
async def wrapped(*args, **kwargs):
|
||||
try:
|
||||
return await func(*args, **kwargs)
|
||||
except Exception as e:
|
||||
|
||||
return wrapped
|
||||
return wrapper
|
||||
|
|
|
@ -13,6 +13,10 @@ class UpdateDB:
|
|||
def __init__(self):
|
||||
self.updated: list[tuple[str, tuple[Union[str, int], ...]]] = []
|
||||
|
||||
def json(self):
|
||||
# since pickled Discord messages are bytes object which is not serializable, we strip it here
|
||||
return [(item[0], [arg for arg in item[1] if not isinstance(arg, bytes)]) for item in self.updated]
|
||||
|
||||
def add(self, sql_expression: tuple[str, tuple[Union[str, int, bytes], ...]]):
|
||||
self.updated.append(sql_expression)
|
||||
|
||||
|
|
Loading…
Reference in a new issue