Finished working on #150

This commit is contained in:
Frisk 2020-11-17 23:43:45 +01:00
parent b2be691ccc
commit 4bff2d2038
No known key found for this signature in database
GPG key ID: 213F7C15068AF8AC
4 changed files with 19 additions and 13 deletions

View file

@ -85,5 +85,5 @@ class DiscordMessageMetadata:
self.webhook_url = webhook_url self.webhook_url = webhook_url
self.new_data = new_data 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 return self.page_id, self.rev_id, self.log_id

View file

@ -131,7 +131,7 @@ def send_to_discord_webhook(data: Optional[DiscordMessage], metadata: DiscordMes
if AUTO_SUPPRESSION_ENABLED and metadata.method == "POST": if AUTO_SUPPRESSION_ENABLED and metadata.method == "POST":
# TODO Prepare request with all of safety checks # TODO Prepare request with all of safety checks
try: 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: except ValueError:
logger.error("Couldn't get json of result of sending Discord message.") logger.error("Couldn't get json of result of sending Discord message.")
except requests.exceptions.Timeout: except requests.exceptions.Timeout:

View file

@ -6,7 +6,7 @@ from src.discord.queue import send_to_discord, messagequeue
from src.fileio.database import db_cursor, db_connection from src.fileio.database import db_cursor, db_connection
from src.i18n import redaction as redaction_translation 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 _ = redaction_translation.gettext
#ngettext = redaction_translation.ngettext #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""" to_censor: dict - logparams of message parts to censor"""
for event_id in ids: for event_id in ids:
if entry_type == 0: # TODO check if queries are proper 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: else:
message = db_cursor.execute( 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,)) (event_id,))
if settings["appearance"]["mode"] == "embed": if settings["appearance"]["mode"] == "embed":
if message is not None: if message is not None:
message = message.fetchone() row = message.fetchone()
try: try:
message = json.loads(message[0]) message = json.loads(row[0])
new_embed = message["embeds"][0] new_embed = message["embeds"][0]
except ValueError: 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 return
if "user" in to_censor: if "user" in to_censor:
new_embed["author"]["name"] = _("Removed") 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: if "comment" in to_censor:
new_embed["description"] = _("Removed") new_embed["description"] = _("Removed")
message["embeds"][0] = new_embed 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) 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.")

View file

@ -43,10 +43,12 @@ def check_tables():
create_schema() create_schema()
def add_entry(pageid: int, revid: int, logid: int, message): def add_entry(pageid: int, revid: int, logid: int, message, message_id: str):
"""Add an edit or log entry to the DB""" """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))) :param message_id:
db_cursor.execute("INSERT INTO event (pageid, revid, logid, msg_id) VALUES (?, ?, ?, ?)", (pageid, revid, logid, message.get("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)) logger.debug("Adding an entry to the database (pageid: {}, revid: {}, logid: {}, message: {})".format(pageid, revid, logid, message))
db_connection.commit() db_connection.commit()