diff --git a/src/discord/message.py b/src/discord/message.py index 077c58b..ed1d357 100644 --- a/src/discord/message.py +++ b/src/discord/message.py @@ -85,5 +85,5 @@ class DiscordMessageMetadata: self.webhook_url = webhook_url self.new_data = new_data - def dump_ids(self): + def dump_ids(self) -> (int, int, int): return self.page_id, self.rev_id, self.log_id \ No newline at end of file diff --git a/src/discord/queue.py b/src/discord/queue.py index 4bc42dd..e58d704 100644 --- a/src/discord/queue.py +++ b/src/discord/queue.py @@ -131,7 +131,7 @@ def send_to_discord_webhook(data: Optional[DiscordMessage], metadata: DiscordMes if AUTO_SUPPRESSION_ENABLED and metadata.method == "POST": # TODO Prepare request with all of safety checks try: - add_message_redaction_entry(*metadata.dump_ids(), result.json()) + add_message_redaction_entry(*metadata.dump_ids(), repr(data), result.json().get("id")) except ValueError: logger.error("Couldn't get json of result of sending Discord message.") except requests.exceptions.Timeout: diff --git a/src/discord/redaction.py b/src/discord/redaction.py index 47232f8..68562f3 100644 --- a/src/discord/redaction.py +++ b/src/discord/redaction.py @@ -6,7 +6,7 @@ from src.discord.queue import send_to_discord, messagequeue from src.fileio.database import db_cursor, db_connection from src.i18n import redaction as redaction_translation -logger = logging.getLogger("rcgcdw.discord.redaction") # TODO Figure out why does this logger do not work +logger = logging.getLogger("rcgcdw.discord.redaction") # TODO Figure out why does this logger do not work _ = redaction_translation.gettext #ngettext = redaction_translation.ngettext @@ -41,19 +41,19 @@ def redact_messages(ids: list, entry_type: int, to_censor: dict): to_censor: dict - logparams of message parts to censor""" for event_id in ids: if entry_type == 0: # TODO check if queries are proper - message = db_cursor.execute("SELECT content FROM messages INNER JOIN event ON event.msg_id = messages.message_id WHERE event.revid = ?;", (event_id, )) + message = db_cursor.execute("SELECT content, message_id FROM messages INNER JOIN event ON event.msg_id = messages.message_id WHERE event.revid = ?;", (event_id, )) else: message = db_cursor.execute( - "SELECT content FROM messages INNER JOIN event ON event.msg_id = messages.message_id WHERE event.logid = ?;", + "SELECT content, message_id FROM messages INNER JOIN event ON event.msg_id = messages.message_id WHERE event.logid = ?;", (event_id,)) if settings["appearance"]["mode"] == "embed": if message is not None: - message = message.fetchone() + row = message.fetchone() try: - message = json.loads(message[0]) + message = json.loads(row[0]) new_embed = message["embeds"][0] except ValueError: - logger.error("Couldn't loads JSON for message data. What happened? Data: {}".format(message[0])) + logger.error("Couldn't loads JSON for message data. What happened? Data: {}".format(row[0])) return if "user" in to_censor: new_embed["author"]["name"] = _("Removed") @@ -66,5 +66,9 @@ def redact_messages(ids: list, entry_type: int, to_censor: dict): if "comment" in to_censor: new_embed["description"] = _("Removed") message["embeds"][0] = new_embed + db_cursor.execute("UPDATE messages SET content = ? WHERE message_id = ?;", (json.dumps(message), row[1],)) + db_connection.commit() logger.debug(message) - send_to_discord(DiscordMessageRaw(message, settings["webhookURL"]), DiscordMessageMetadata("PATCH")) + send_to_discord(DiscordMessageRaw(message, settings["webhookURL"]+"/messages/"+str(row[1])), DiscordMessageMetadata("PATCH")) + else: + logger.debug("Could not find message in the database.") diff --git a/src/fileio/database.py b/src/fileio/database.py index 36dac2d..0fea678 100644 --- a/src/fileio/database.py +++ b/src/fileio/database.py @@ -43,10 +43,12 @@ def check_tables(): create_schema() -def add_entry(pageid: int, revid: int, logid: int, message): - """Add an edit or log entry to the DB""" - db_cursor.execute("INSERT INTO messages (message_id, content) VALUES (?, ?)", (message.get("id"), json.dumps(message))) - db_cursor.execute("INSERT INTO event (pageid, revid, logid, msg_id) VALUES (?, ?, ?, ?)", (pageid, revid, logid, message.get("id"))) +def add_entry(pageid: int, revid: int, logid: int, message, message_id: str): + """Add an edit or log entry to the DB + :param message_id: + """ + db_cursor.execute("INSERT INTO messages (message_id, content) VALUES (?, ?)", (message_id, message)) + db_cursor.execute("INSERT INTO event (pageid, revid, logid, msg_id) VALUES (?, ?, ?, ?)", (pageid, revid, logid, message_id)) logger.debug("Adding an entry to the database (pageid: {}, revid: {}, logid: {}, message: {})".format(pageid, revid, logid, message)) db_connection.commit()