This commit is contained in:
Frisk 2020-11-15 11:17:04 +01:00
parent 0cdc0cef32
commit 5032716226
No known key found for this signature in database
GPG key ID: 213F7C15068AF8AC
3 changed files with 15 additions and 12 deletions

View file

@ -71,6 +71,11 @@ class DiscordMessage:
self.webhook_object["username"] = name self.webhook_object["username"] = name
class DiscordMessageRaw(DiscordMessage):
def __init__(self, content: dict):
self.webhook_object = content
class DiscordMessageMetadata: class DiscordMessageMetadata:
def __init__(self, method, log_id = None, page_id = None, rev_id = None, webhook_url = None, new_data = None): def __init__(self, method, log_id = None, page_id = None, rev_id = None, webhook_url = None, new_data = None):
self.method = method self.method = method

View file

@ -121,7 +121,7 @@ def send_to_discord_webhook(data: Optional[DiscordMessage], metadata: DiscordMes
elif metadata.method == "DELETE": elif metadata.method == "DELETE":
req = requests.Request("DELETE", metadata.webhook_url, **standard_args) req = requests.Request("DELETE", metadata.webhook_url, **standard_args)
elif metadata.method == "PATCH": 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: try:
time.sleep(rate_limit) time.sleep(rate_limit)
rate_limit = 0 rate_limit = 0

View file

@ -1,7 +1,7 @@
import logging import logging
from src.configloader import settings 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.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
@ -11,13 +11,11 @@ logger = logging.getLogger("rcgcdw.discord.redaction")
def delete_messages(matching_data: dict): def delete_messages(matching_data: dict):
"""Delete messages that match given data""" """Delete messages that match given data"""
sql_conditions = "" sql_conditions = ""
args = [] for key, value in matching_data.items():
for data in matching_data.items(): sql_conditions += "{} = ? AND".format(key)
sql_conditions += "? = ? AND"
args.extend(data)
else: else:
sql_conditions = sql_conditions[0:-4] # remove last AND statement 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: if len(messagequeue) > 0:
messagequeue.delete_all_with_matching_metadata(**matching_data) messagequeue.delete_all_with_matching_metadata(**matching_data)
msg_to_remove = [] msg_to_remove = []
@ -27,7 +25,8 @@ def delete_messages(matching_data: dict):
msg_to_remove.append(message[0]) msg_to_remove.append(message[0])
logger.debug("Removing following message: {}".format(message[0])) logger.debug("Removing following message: {}".format(message[0]))
send_to_discord(None, DiscordMessageMetadata("DELETE", webhook_url=webhook_url)) 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() db_connection.commit()
@ -50,14 +49,13 @@ def redact_messages(ids: list, entry_type: int, to_censor: dict):
new_embed = message["embeds"][0] new_embed = message["embeds"][0]
if "user" in to_censor: if "user" in to_censor:
new_embed["author"]["name"] = _("Removed") new_embed["author"]["name"] = _("Removed")
del new_embed["author"]["url"] new_embed["author"].pop("url")
if "action" in to_censor: if "action" in to_censor:
new_embed["title"] = _("Removed") new_embed["title"] = _("Removed")
del new_embed["url"] new_embed.pop("url")
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
# TODO somehow send nly important data as PATCH? send_to_discord(DiscordMessageRaw(message), DiscordMessageMetadata("PATCH"))
send_to_discord()
raise NotImplemented raise NotImplemented