mirror of
https://gitlab.com/chicken-riders/RcGcDw.git
synced 2025-02-23 00:24:09 +00:00
Kinda finished working on message deletion? Needs testing and fix for the PATCH requests
This commit is contained in:
parent
5032716226
commit
b2be691ccc
|
@ -1,5 +1,5 @@
|
|||
cd ..
|
||||
declare -a StringArray=("discussion_formatters" "rc_formatters" "rcgcdw" "rc" "misc")
|
||||
declare -a StringArray=("discussion_formatters" "rc_formatters" "rcgcdw" "rc" "misc", "redaction")
|
||||
for file in ${StringArray[@]}; do
|
||||
xgettext -L Python --package-name=RcGcDw -o "locale/templates/$file.pot" src/$file.py
|
||||
done
|
||||
|
|
|
@ -72,9 +72,9 @@ class DiscordMessage:
|
|||
|
||||
|
||||
class DiscordMessageRaw(DiscordMessage):
|
||||
def __init__(self, content: dict):
|
||||
def __init__(self, content: dict, webhook_url: str):
|
||||
self.webhook_object = content
|
||||
|
||||
self.webhook_url = webhook_url
|
||||
|
||||
class DiscordMessageMetadata:
|
||||
def __init__(self, method, log_id = None, page_id = None, rev_id = None, webhook_url = None, new_data = None):
|
||||
|
|
|
@ -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=data, **standard_args)
|
||||
req = requests.Request("PATCH", data.webhook_url, data=repr(data), **standard_args)
|
||||
try:
|
||||
time.sleep(rate_limit)
|
||||
rate_limit = 0
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
import logging
|
||||
|
||||
import json
|
||||
from src.configloader import settings
|
||||
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
|
||||
from src.i18n import redaction as redaction_translation
|
||||
|
||||
logger = logging.getLogger("rcgcdw.discord.redaction")
|
||||
logger = logging.getLogger("rcgcdw.discord.redaction") # TODO Figure out why does this logger do not work
|
||||
_ = redaction_translation.gettext
|
||||
#ngettext = redaction_translation.ngettext
|
||||
|
||||
|
||||
def delete_messages(matching_data: dict):
|
||||
|
@ -38,24 +41,30 @@ 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 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 = ?;",
|
||||
event_id)
|
||||
(event_id,))
|
||||
if settings["appearance"]["mode"] == "embed":
|
||||
if message is not None:
|
||||
message = message.fetchone()
|
||||
try:
|
||||
message = json.loads(message[0])
|
||||
new_embed = message["embeds"][0]
|
||||
except ValueError:
|
||||
logger.error("Couldn't loads JSON for message data. What happened? Data: {}".format(message[0]))
|
||||
return
|
||||
if "user" in to_censor:
|
||||
new_embed["author"]["name"] = _("Removed")
|
||||
new_embed["author"].pop("url")
|
||||
if "action" in to_censor:
|
||||
new_embed["title"] = _("Removed")
|
||||
new_embed.pop("url")
|
||||
if "content" in to_censor:
|
||||
new_embed.pop("fields")
|
||||
if "comment" in to_censor:
|
||||
new_embed["description"] = _("Removed")
|
||||
message["embeds"][0] = new_embed
|
||||
send_to_discord(DiscordMessageRaw(message), DiscordMessageMetadata("PATCH"))
|
||||
|
||||
raise NotImplemented
|
||||
logger.debug(message)
|
||||
send_to_discord(DiscordMessageRaw(message, settings["webhookURL"]), DiscordMessageMetadata("PATCH"))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import sqlite3
|
||||
import logging
|
||||
import json
|
||||
from src.configloader import settings
|
||||
|
||||
logger = logging.getLogger("rcgcdw.fileio.database")
|
||||
|
@ -44,7 +45,7 @@ def check_tables():
|
|||
|
||||
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"), str(message)))
|
||||
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")))
|
||||
logger.debug("Adding an entry to the database (pageid: {}, revid: {}, logid: {}, message: {})".format(pageid, revid, logid, message))
|
||||
db_connection.commit()
|
||||
|
|
|
@ -11,8 +11,9 @@ try:
|
|||
rc = gettext.translation('rc', localedir='locale', languages=[settings["lang"]])
|
||||
rc_formatters = gettext.translation('rc_formatters', localedir='locale', languages=[settings["lang"]])
|
||||
misc = gettext.translation('misc', localedir='locale', languages=[settings["lang"]])
|
||||
redaction = gettext.translation('redaction', localedir='locale', languages=[settings["lang"]])
|
||||
else:
|
||||
rcgcdw, discussion_formatters, rc, rc_formatters, misc = gettext.NullTranslations(), gettext.NullTranslations(), gettext.NullTranslations(), gettext.NullTranslations(), gettext.NullTranslations()
|
||||
rcgcdw, discussion_formatters, rc, rc_formatters, misc, redaction = gettext.NullTranslations(), gettext.NullTranslations(), gettext.NullTranslations(), gettext.NullTranslations(), gettext.NullTranslations(), gettext.NullTranslations()
|
||||
except FileNotFoundError:
|
||||
logger.critical("No language files have been found. Make sure locale folder is located in the directory.")
|
||||
sys.exit(1)
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
|
||||
|
||||
|
|
@ -738,6 +738,13 @@ def embed_formatter(action, change, parsed_comment, categories, recent_changes):
|
|||
embed["title"] = ngettext("Changed visibility of revision on page {article} ",
|
||||
"Changed visibility of {amount} revisions on page {article} ", amount).format(
|
||||
article=change["title"], amount=amount)
|
||||
if AUTO_SUPPRESSION_ENABLED:
|
||||
try:
|
||||
logparams = change["logparams"]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
redact_messages(logparams.get("ids", []), 0, logparams.get("new", {}))
|
||||
elif action == "import/upload":
|
||||
link = create_article_path(change["title"])
|
||||
embed["title"] = ngettext("Imported {article} with {count} revision",
|
||||
|
|
Loading…
Reference in a new issue