diff --git a/src/discussion_formatters.py b/src/discussion_formatters.py
deleted file mode 100644
index 1465263..0000000
--- a/src/discussion_formatters.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# This file is part of Recent changes Goat compatible Discord webhook (RcGcDw).
-
-# RcGcDw is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# RcGcDw is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with RcGcDw. If not, see .
-
-
-
-
-def compact_formatter(post_type, post, article_paths):
- """Compact formatter for Fandom discussions."""
- message = None
-
- if post_type == "FORUM":
-
-
- event_type = "discussion"
- if post_type == "FORUM":
-
- elif post_type == "WALL":
-
- elif post_type == "ARTICLE_COMMENT":
-
- else:
- discussion_logger.warning("No entry for {event} with params: {params}".format(event=post_type, params=post))
- if not settings["support"]:
- return
- else:
- message = _("Unknown event `{event}` by [{author}]({author_url}), report it on the [support server](<{support}>).").format(
- event=post_type, author=author, author_url=author_url, support=settings["support"])
- event_type = "unknown"
- send_to_discord(DiscordMessage("compact", event_type, settings["fandom_discussions"]["webhookURL"], content=message), meta=DiscordMessageMetadata("POST"))
-
-
-def embed_formatter(post_type, post, article_paths):
- """Embed formatter for Fandom discussions."""
- if post_type == "FORUM":
- pass
- el
- if post_type == "FORUM":
-
- elif post_type == "WALL":
-
- elif post_type == "ARTICLE_COMMENT":
-
- else:
- discussion_logger.warning("No entry for {event} with params: {params}".format(event=post_type, params=post))
- embed["title"] = _("Unknown event `{event}`").format(event=post_type)
- embed.event_type = "unknown"
- if settings.get("support", None):
- change_params = "[```json\n{params}\n```]({support})".format(params=json.dumps(post, indent=2),
- support=settings["support"])
- if len(change_params) > 1000:
- embed.add_field(_("Report this on the support server"), settings["support"])
- else:
- embed.add_field(_("Report this on the support server"), change_params)
- embed.finish_embed()
- send_to_discord(embed, meta=DiscordMessageMetadata("POST"))
-
-
diff --git a/src/rc_formatters.py b/src/rc_formatters.py
deleted file mode 100644
index 0826a1e..0000000
--- a/src/rc_formatters.py
+++ /dev/null
@@ -1,551 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# This file is part of Recent changes Goat compatible Discord webhook (RcGcDw).
-
-# RcGcDw is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# RcGcDw is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with RcGcDw. If not, see .
-
-import ipaddress
-import math
-import re
-import time
-import logging
-import datetime
-import json
-from urllib.parse import quote_plus, quote
-
-from bs4 import BeautifulSoup
-
-from src.configloader import settings
-from src.misc import WIKI_SCRIPT_PATH, safe_read, \
- WIKI_API_PATH, ContentParser, profile_field_name, LinkParser
-from src.api.util import link_formatter, create_article_path
-from src.discord.queue import send_to_discord
-from src.discord.message import DiscordMessage, DiscordMessageMetadata
-
-if AUTO_SUPPRESSION_ENABLED:
- from src.discord.redaction import delete_messages, redact_messages
-
-from src.i18n import formatters_i18n
-#from src.rc import recent_changes, pull_comment
-_ = formatters_i18n.gettext
-ngettext = formatters_i18n.ngettext
-
-logger = logging.getLogger("rcgcdw.rc_formatters")
-#from src.rcgcdw import recent_changes, ngettext, logger, profile_field_name, LinkParser, pull_comment
-
-
-LinkParser = LinkParser()
-
-def format_user(change, recent_changes, action):
- if "anon" in change:
- author_url = create_article_path("Special:Contributions/{user}".format(
- user=change["user"].replace(" ", "_"))) # Replace here needed in case of #75
- logger.debug("current user: {} with cache of IPs: {}".format(change["user"], recent_changes.map_ips.keys()))
- if change["user"] not in list(recent_changes.map_ips.keys()):
- contibs = safe_read(recent_changes._safe_request(
- "{wiki}?action=query&format=json&list=usercontribs&uclimit=max&ucuser={user}&ucstart={timestamp}&ucprop=".format(
- wiki=WIKI_API_PATH, user=change["user"], timestamp=change["timestamp"])), "query", "usercontribs")
- if contibs is None:
- logger.warning(
- "WARNING: Something went wrong when checking amount of contributions for given IP address")
- if settings.get("hide_ips", False):
- change["user"] = _("Unregistered user")
- change["user"] = change["user"] + "(?)"
- else:
- recent_changes.map_ips[change["user"]] = len(contibs)
- logger.debug(
- "Current params user {} and state of map_ips {}".format(change["user"], recent_changes.map_ips))
- if settings.get("hide_ips", False):
- change["user"] = _("Unregistered user")
- change["user"] = "{author} ({contribs})".format(author=change["user"], contribs=len(contibs))
- else:
- logger.debug(
- "Current params user {} and state of map_ips {}".format(change["user"], recent_changes.map_ips))
- if action in ("edit", "new"):
- recent_changes.map_ips[change["user"]] += 1
- change["user"] = "{author} ({amount})".format(author=change["user"] if settings.get("hide_ips", False) is False else _("Unregistered user"),
- amount=recent_changes.map_ips[change["user"]])
- else:
- author_url = create_article_path("User:{}".format(change["user"].replace(" ", "_")))
- return change["user"], author_url
-
-
-def compact_formatter(action, change, parsed_comment, categories, recent_changes):
- request_metadata = DiscordMessageMetadata("POST", rev_id=change.get("revid", None), log_id=change.get("logid", None), page_id=change.get("pageid", None))
- if action != "suppressed":
- author_url = link_formatter(create_article_path("User:{user}".format(user=change["user"])))
- if "anon" in change:
- change["user"] = _("Unregistered user")
- author = change["user"]
- else:
- author = change["user"]
- parsed_comment = "" if parsed_comment is None else " *("+parsed_comment+")*"
- if action in ["edit", "new"]:
- elif action =="upload/upload":
-
- elif action == "upload/revert":
-
- elif action == "upload/overwrite":
-
- elif action == "delete/delete":
-
- elif action == "delete/delete_redir":
-
- elif action == "move/move":
-
- elif action == "move/move_redir":
-
- elif action == "protect/move_prot":
-
- elif action == "block/block":
-
- elif action == "block/reblock":
-
- elif action == "block/unblock":
-
- elif action == "curseprofile/comment-created":
- link = link_formatter(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])))
- target_user = change["title"].split(':', 1)[1]
- if target_user != author:
- content = _("[{author}]({author_url}) left a [comment]({comment}) on {target}'s profile".format(author=author, author_url=author_url, comment=link, target=target_user))
- else:
- content = _("[{author}]({author_url}) left a [comment]({comment}) on their own profile".format(author=author, author_url=author_url, comment=link))
- elif action == "curseprofile/comment-replied":
- link = link_formatter(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])))
- target_user = change["title"].split(':', 1)[1]
- if target_user != author:
- content = _(
- "[{author}]({author_url}) replied to a [comment]({comment}) on {target}'s profile".format(author=author,
- author_url=author_url,
- comment=link,
- target=target_user))
- else:
- content = _(
- "[{author}]({author_url}) replied to a [comment]({comment}) on their own profile".format(author=author,
- comment=link,
- author_url=author_url))
- elif action == "curseprofile/comment-edited":
- link = link_formatter(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])))
- target_user = change["title"].split(':', 1)[1]
- if target_user != author:
- content = _(
- "[{author}]({author_url}) edited a [comment]({comment}) on {target}'s profile".format(author=author,
- author_url=author_url,
- comment=link,
- target=target_user))
- else:
- content = _(
- "[{author}]({author_url}) edited a [comment]({comment}) on their own profile".format(author=author,
- comment=link,
- author_url=author_url))
- elif action == "curseprofile/comment-purged":
- target_user = change["title"].split(':', 1)[1]
- if target_user != author:
- content = _("[{author}]({author_url}) purged a comment on {target}'s profile".format(author=author, author_url=author_url,target=target_user))
- else:
- content = _("[{author}]({author_url}) purged a comment on their own profile".format(author=author, author_url=author_url))
- elif action == "curseprofile/comment-deleted":
- if "4:comment_id" in change["logparams"]:
- link = link_formatter(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])))
- else:
- link = link_formatter(create_article_path(change["title"]))
- target_user = change["title"].split(':', 1)[1]
- if target_user != author:
- content = _("[{author}]({author_url}) deleted a [comment]({comment}) on {target}'s profile".format(author=author,author_url=author_url, comment=link, target=target_user))
- else:
- content = _("[{author}]({author_url}) deleted a [comment]({comment}) on their own profile".format(author=author, author_url=author_url, comment=link))
- elif action == "curseprofile/profile-edited":
- target_user = change["title"].split(':', 1)[1]
- link = link_formatter(create_article_path("UserProfile:{user}".format(user=target_user)))
- if target_user != author:
- content = _("[{author}]({author_url}) edited the {field} on [{target}]({target_url})'s profile. *({desc})*").format(author=author,
- author_url=author_url,
- target=target_user,
- target_url=link,
- field=profile_field_name(change["logparams"]['4:section'], False),
- desc=BeautifulSoup(change["parsedcomment"], "lxml").get_text())
- else:
- content = _("[{author}]({author_url}) edited the {field} on [their own]({target_url}) profile. *({desc})*").format(
- author=author,
- author_url=author_url,
- target_url=link,
- field=profile_field_name(change["logparams"]['4:section'], False),
- desc=BeautifulSoup(change["parsedcomment"], "lxml").get_text())
- elif action in ("rights/rights", "rights/autopromote"):
-
- elif action == "protect/protect":
-
- elif action == "protect/modify":
-
- elif action == "protect/unprotect":
-
- elif action == "delete/revision":
-
- elif action == "import/upload":
-
- elif action == "delete/restore":
-
- elif action == "delete/event":
-
- elif action == "import/interwiki":
-
- elif action == "abusefilter/modify":
- elif action == "abusefilter/create":
-
- elif action == "merge/merge":
-
- elif action == "newusers/autocreate":
- elif action == "newusers/create":
- elif action == "newusers/create2":
- elif action == "newusers/byemail":
- elif action == "newusers/newusers":
- elif action == "interwiki/iw_add":
- elif action == "interwiki/iw_edit":
-
- elif action == "interwiki/iw_delete":
- link = link_formatter(create_article_path("Special:Interwiki"))
- elif action == "contentmodel/change":
-
- elif action == "contentmodel/new":
-
- elif action == "sprite/sprite":
-
- elif action == "sprite/sheet":
-
- elif action == "sprite/slice":
-
- elif action == "cargo/createtable":
-
- elif action == "cargo/deletetable":
-
- elif action == "cargo/recreatetable":
-
- elif action == "cargo/replacetable":
-
- elif action == "managetags/create":
-
- elif action == "managetags/delete":
-
- elif action == "managetags/activate":
-
- elif action == "managetags/deactivate":
- link = link_formatter(create_article_path(change["title"]))
- elif action == "managewiki/settings": # Miraheze's ManageWiki extension https://github.com/miraheze/ManageWiki
-
- elif action == "managewiki/delete":
-
- elif action == "managewiki/lock":
-
- elif action == "managewiki/namespaces":
-
- elif action == "managewiki/namespaces-delete":
-
- elif action == "managewiki/rights":
-
- elif action == "managewiki/undelete":
-
- elif action == "managewiki/unlock":
-
- elif action == "datadump/generate":
- elif action == "datadump/delete":
-
- elif action == "pagetranslation/mark":
-
- elif action == "pagetranslation/unmark":
-
- elif action == "pagetranslation/moveok":
-
- elif action == "pagetranslation/movenok":
-
- elif action == "pagetranslation/deletefok":
-
- elif action == "pagetranslation/deletefnok":
-
- elif action == "pagetranslation/deletelok":
-
- elif action == "pagetranslation/deletelnok":
-
- elif action == "pagetranslation/encourage":
-
- elif action == "pagetranslation/discourage":
-
- elif action == "pagetranslation/prioritylanguages":
-
- elif action == "pagetranslation/associate":
-
- elif action == "pagetranslation/dissociate":
-
- elif action == "translationreview/message":
-
- elif action == "translationreview/group":
-
- elif action == "pagelang/pagelang":
-
- elif action == "renameuser/renameuser":
-
- elif action == "suppressed":
-
- else:
- logger.warning("No entry for {event} with params: {params}".format(event=action, params=change))
- if not settings.get("support", None):
- return
- else:
- content = _(
- "Unknown event `{event}` by [{author}]({author_url}), report it on the [support server](<{support}>).").format(
- event=action, author=author, author_url=author_url, support=settings["support"])
- action = "unknown"
- send_to_discord(DiscordMessage("compact", action, settings["webhookURL"], content=content), meta=request_metadata)
-
-
-def embed_formatter(action, change, parsed_comment, categories, recent_changes):
- embed = DiscordMessage("embed", action, settings["webhookURL"])
- request_metadata = DiscordMessageMetadata("POST", rev_id=change.get("revid", None), log_id=change.get("logid", None), page_id=change.get("pageid", None))
- if parsed_comment is None:
- parsed_comment = _("No description provided")
- if action != "suppressed":
- change["user"], author_url = format_user(change, recent_changes, action)
- embed.set_author(change["user"], author_url)
- if action in ("edit", "new"): # edit or new page
-
- elif action in ("upload/overwrite", "upload/upload", "upload/revert"): # sending files
-
- elif action == "delete/delete":
-
- elif action == "delete/delete_redir":
-
- elif action == "move/move":
-
- elif action == "move/move_redir":
-
- elif action == "protect/move_prot":
-
- elif action == "block/block":
-
- elif action == "block/reblock":
-
- elif action == "block/unblock":
-
- elif action == "curseprofile/comment-created":
- if settings["appearance"]["embed"]["show_edit_changes"]:
- parsed_comment = recent_changes.pull_comment(change["logparams"]["4:comment_id"])
- link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))
- target_user = change["title"].split(':', 1)[1]
- if target_user != change["user"]:
- embed["title"] = _("Left a comment on {target}'s profile").format(target=target_user)
- else:
- embed["title"] = _("Left a comment on their own profile")
- elif action == "curseprofile/comment-replied":
- if settings["appearance"]["embed"]["show_edit_changes"]:
- parsed_comment = recent_changes.pull_comment(change["logparams"]["4:comment_id"])
- link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))
- target_user = change["title"].split(':', 1)[1]
- if target_user != change["user"]:
- embed["title"] = _("Replied to a comment on {target}'s profile").format(target=target_user)
- else:
- embed["title"] = _("Replied to a comment on their own profile")
- elif action == "curseprofile/comment-edited":
- if settings["appearance"]["embed"]["show_edit_changes"]:
- parsed_comment = recent_changes.pull_comment(change["logparams"]["4:comment_id"])
- link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))
- target_user = change["title"].split(':', 1)[1]
- if target_user != change["user"]:
- embed["title"] = _("Edited a comment on {target}'s profile").format(target=target_user)
- else:
- embed["title"] = _("Edited a comment on their own profile")
- elif action == "curseprofile/profile-edited":
- target_user = change["title"].split(':', 1)[1]
- link = create_article_path("UserProfile:{target}".format(target=target_user))
- if target_user != change["user"]:
- embed["title"] = _("Edited {target}'s profile").format(target=target_user)
- else:
- embed["title"] = _("Edited their own profile")
- if not change["parsedcomment"]: # If the field is empty
- parsed_comment = _("Cleared the {field} field").format(field=profile_field_name(change["logparams"]['4:section'], True))
- else:
- parsed_comment = _("{field} field changed to: {desc}").format(field=profile_field_name(change["logparams"]['4:section'], True), desc=BeautifulSoup(change["parsedcomment"], "lxml").get_text())
- elif action == "curseprofile/comment-purged":
- link = create_article_path(change["title"])
- target_user = change["title"].split(':', 1)[1]
- if target_user != change["user"]:
- embed["title"] = _("Purged a comment on {target}'s profile").format(target=target_user)
- else:
- embed["title"] = _("Purged a comment on their own profile")
- elif action == "curseprofile/comment-deleted":
- if "4:comment_id" in change["logparams"]:
- link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))
- else:
- link = create_article_path(change["title"])
- target_user = change["title"].split(':', 1)[1]
- if target_user != change["user"]:
- embed["title"] = _("Deleted a comment on {target}'s profile").format(target=target_user)
- else:
- embed["title"] = _("Deleted a comment on their own profile")
- elif action in ("rights/rights", "rights/autopromote"):
-
- elif action == "protect/protect":
-
- elif action == "protect/modify":
-
- elif action == "protect/unprotect":
-
- elif action == "delete/revision":
-
- elif action == "import/upload":
-
- elif action == "delete/restore":
-
- elif action == "delete/event":
-
- elif action == "import/interwiki":
-
- elif action == "abusefilter/modify":
-
- elif action == "abusefilter/create":
-
- elif action == "merge/merge":
- elif action == "newusers/autocreate":
-
- elif action == "newusers/create":
-
- elif action == "newusers/create2":
-
- elif action == "newusers/byemail":
-
- elif action == "newusers/newusers":
-
- elif action == "interwiki/iw_add":
-
- elif action == "interwiki/iw_edit":
-
- elif action == "interwiki/iw_delete":
-
- elif action == "contentmodel/change":
-
- elif action == "contentmodel/new":
-
- elif action == "sprite/sprite":
-
- elif action == "sprite/sheet":
-
- elif action == "sprite/slice":
-
- elif action == "cargo/createtable":
-
- elif action == "cargo/deletetable":
-
- elif action == "cargo/recreatetable":
-
- elif action == "cargo/replacetable":
-
- elif action == "managetags/create":
-
- elif action == "managetags/delete":
-
- elif action == "managetags/activate":
-
- elif action == "managetags/deactivate":
-
- elif action == "managewiki/settings": # Miraheze's ManageWiki extension https://github.com/miraheze/ManageWiki
-
- elif action == "managewiki/delete":
-
- elif action == "managewiki/lock":
-
- elif action == "managewiki/namespaces":
-
- elif action == "managewiki/namespaces-delete":
-
- elif action == "managewiki/rights":
-
- elif action == "managewiki/undelete":
-
- elif action == "managewiki/unlock":
-
- elif action == "datadump/generate":
- elif action == "datadump/delete":
-
- elif action == "pagetranslation/mark":
-
- elif action == "pagetranslation/unmark":
-
- elif action == "pagetranslation/moveok":
-
- elif action == "pagetranslation/movenok":
-
- elif action == "pagetranslation/deletefok":
-
- elif action == "pagetranslation/deletefnok":
-
- elif action == "pagetranslation/deletelok":
-
- elif action == "pagetranslation/deletelnok":
-
- elif action == "pagetranslation/encourage":
-
- elif action == "pagetranslation/discourage":
-
- elif action == "pagetranslation/prioritylanguages":
-
- elif action == "pagetranslation/associate":
-
- elif action == "pagetranslation/dissociate":
-
- elif action == "translationreview/message":
-
- elif action == "translationreview/group":
-
- elif action == "pagelang/pagelang":
- link = create_article_path(change["title"])
-
- elif action == "renameuser/renameuser":
-
- elif action == "suppressed":
-
- else:
- logger.warning("No entry for {event} with params: {params}".format(event=action, params=change))
- link = create_article_path("Special:RecentChanges")
- embed["title"] = _("Unknown event `{event}`").format(event=action)
- embed.event_type = "unknown"
- if settings.get("support", None):
- change_params = "[```json\n{params}\n```]({support})".format(params=json.dumps(change, indent=2),
- support=settings["support"])
- if len(change_params) > 1000:
- embed.add_field(_("Report this on the support server"), settings["support"])
- else:
- embed.add_field(_("Report this on the support server"), change_params)
- embed["url"] = quote(link.replace(" ", "_"), "/:?=&")
- if parsed_comment is not None:
- embed["description"] = parsed_comment
- if settings["appearance"]["embed"]["show_footer"]:
- embed["timestamp"] = change["timestamp"]
- if "tags" in change and change["tags"]:
- tag_displayname = []
- for tag in change["tags"]:
- if tag in recent_changes.tags:
- if recent_changes.tags[tag] is None:
- continue # Ignore hidden tags
- else:
- tag_displayname.append(recent_changes.tags[tag])
- else:
- tag_displayname.append(tag)
- embed.add_field(_("Tags"), ", ".join(tag_displayname))
- if len(embed["title"]) > 254:
- embed["title"] = embed["title"][0:253]+"…"
- logger.debug("Current params in edit action: {}".format(change))
- if categories is not None and not (len(categories["new"]) == 0 and len(categories["removed"]) == 0):
- new_cat = (_("**Added**: ") + ", ".join(list(categories["new"])[0:16]) + ("\n" if len(categories["new"])<=15 else _(" and {} more\n").format(len(categories["new"])-15))) if categories["new"] else ""
- del_cat = (_("**Removed**: ") + ", ".join(list(categories["removed"])[0:16]) + ("" if len(categories["removed"])<=15 else _(" and {} more").format(len(categories["removed"])-15))) if categories["removed"] else ""
- embed.add_field(_("Changed categories"), new_cat + del_cat)
- embed.finish_embed()
- send_to_discord(embed, meta=request_metadata)