From 5032716226eedd54c7ef9c0f6d1964ee386bc97d Mon Sep 17 00:00:00 2001 From: Frisk Date: Sun, 15 Nov 2020 11:17:04 +0100 Subject: [PATCH] Fixes --- src/discord/message.py | 5 +++++ src/discord/queue.py | 2 +- src/discord/redaction.py | 20 +++++++++----------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/discord/message.py b/src/discord/message.py index f918657..4bd2b2a 100644 --- a/src/discord/message.py +++ b/src/discord/message.py @@ -71,6 +71,11 @@ class DiscordMessage: self.webhook_object["username"] = name +class DiscordMessageRaw(DiscordMessage): + def __init__(self, content: dict): + self.webhook_object = content + + class DiscordMessageMetadata: def __init__(self, method, log_id = None, page_id = None, rev_id = None, webhook_url = None, new_data = None): self.method = method diff --git a/src/discord/queue.py b/src/discord/queue.py index f1a0907..4eb0013 100644 --- a/src/discord/queue.py +++ b/src/discord/queue.py @@ -121,7 +121,7 @@ def send_to_discord_webhook(data: Optional[DiscordMessage], metadata: DiscordMes elif metadata.method == "DELETE": req = requests.Request("DELETE", metadata.webhook_url, **standard_args) elif metadata.method == "PATCH": - req = requests.Request("PATCH", metadata.webhook_url, data=metadata.new_data, **standard_args) + req = requests.Request("PATCH", metadata.webhook_url, data=data, **standard_args) try: time.sleep(rate_limit) rate_limit = 0 diff --git a/src/discord/redaction.py b/src/discord/redaction.py index c51605c..48c248a 100644 --- a/src/discord/redaction.py +++ b/src/discord/redaction.py @@ -1,7 +1,7 @@ import logging from src.configloader import settings -from src.discord.message import DiscordMessageMetadata, DiscordMessage +from src.discord.message import DiscordMessageMetadata, DiscordMessage, DiscordMessageRaw from src.discord.queue import send_to_discord, messagequeue from src.fileio.database import db_cursor, db_connection @@ -11,13 +11,11 @@ logger = logging.getLogger("rcgcdw.discord.redaction") def delete_messages(matching_data: dict): """Delete messages that match given data""" sql_conditions = "" - args = [] - for data in matching_data.items(): - sql_conditions += "? = ? AND" - args.extend(data) + for key, value in matching_data.items(): + sql_conditions += "{} = ? AND".format(key) else: sql_conditions = sql_conditions[0:-4] # remove last AND statement - to_delete = db_cursor.execute("SELECT msg_id FROM event WHERE {CON}".format(CON=sql_conditions), args) + to_delete = db_cursor.execute("SELECT msg_id FROM event WHERE {CON}".format(CON=sql_conditions), list(matching_data.values())) if len(messagequeue) > 0: messagequeue.delete_all_with_matching_metadata(**matching_data) msg_to_remove = [] @@ -27,7 +25,8 @@ def delete_messages(matching_data: dict): msg_to_remove.append(message[0]) logger.debug("Removing following message: {}".format(message[0])) send_to_discord(None, DiscordMessageMetadata("DELETE", webhook_url=webhook_url)) - db_cursor.execute("DELETE FROM messages WHERE message_id = ?", (message[0],)) + for msg in msg_to_remove: + db_cursor.execute("DELETE FROM messages WHERE message_id = ?", (msg,)) db_connection.commit() @@ -50,14 +49,13 @@ def redact_messages(ids: list, entry_type: int, to_censor: dict): new_embed = message["embeds"][0] if "user" in to_censor: new_embed["author"]["name"] = _("Removed") - del new_embed["author"]["url"] + new_embed["author"].pop("url") if "action" in to_censor: new_embed["title"] = _("Removed") - del new_embed["url"] + new_embed.pop("url") if "comment" in to_censor: new_embed["description"] = _("Removed") message["embeds"][0] = new_embed - # TODO somehow send nly important data as PATCH? - send_to_discord() + send_to_discord(DiscordMessageRaw(message), DiscordMessageMetadata("PATCH")) raise NotImplemented