diff --git a/extensions/base/datadump.py b/extensions/base/datadump.py index 6b30b37..7874db3 100644 --- a/extensions/base/datadump.py +++ b/extensions/base/datadump.py @@ -34,7 +34,7 @@ def embed_datadump_generate(ctx: Context, change: dict) -> DiscordMessage: return embed -@formatter.compact(event="mdatadump/generate") +@formatter.compact(event="datadump/generate") def compact_datadump_generate(ctx: Context, change: dict): author, author_url = compact_author(ctx, change) parsed_comment = compact_summary(ctx) @@ -56,7 +56,7 @@ def embed_datadump_delete(ctx: Context, change: dict) -> DiscordMessage: return embed -@formatter.compact(event="mdatadump/delete") +@formatter.compact(event="datadump/delete") def compact_datadump_delete(ctx: Context, change: dict) -> DiscordMessage: author, author_url = compact_author(ctx, change) parsed_comment = compact_summary(ctx) diff --git a/extensions/base/templateclassification.py b/extensions/base/templateclassification.py new file mode 100644 index 0000000..1b871ae --- /dev/null +++ b/extensions/base/templateclassification.py @@ -0,0 +1,47 @@ +# 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 logging +from src.discord.message import DiscordMessage +from src.api import formatter +from src.api.context import Context +from src.api.util import embed_helper, compact_author, clean_link, sanitize_to_markdown, sanitize_to_url + + +# TemplateClassification - https://community.fandom.com/wiki/Help:Template_types +# templateclassification/tc-changed - Changing the type of a template + + +@formatter.embed(event="templateclassification/tc-changed") +def embed_templateclassification_changed(ctx: Context, change: dict) -> DiscordMessage: + embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) + embed_helper(ctx, embed, change, set_desc=False) + embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"])) + embed["title"] = ctx._("Changed the type of {article}").format(article=sanitize_to_markdown(change["title"])) + embed["description"] = ctx._("Type changed from {old} to {new}").format( + old=change["logparams"]["oldtype"], new=change["logparams"]["newtype"]) + return embed + + +@formatter.compact(event="templateclassification/tc-changed") +def compact_templateclassification_changed(ctx: Context, change: dict): + author, author_url = compact_author(ctx, change) + link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"]))) + content = ctx._( + "[{author}]({author_url}) changed the type of [{article}]({article_url}) from {old} to {new}").format( + author=author, author_url=author_url, article=sanitize_to_markdown(change["title"]), article_url=link, + old=change["logparams"]["oldtype"], new=change["logparams"]["newtype"]) + return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content) diff --git a/settings.json.example b/settings.json.example index f2040e5..770885b 100644 --- a/settings.json.example +++ b/settings.json.example @@ -13,6 +13,7 @@ "avatars": { "connection_failed": "https://i.imgur.com/2jWQEt1.png", "connection_restored": "", + "welcome": "", "no_event": "", "embed": "", "compact": "" @@ -511,6 +512,11 @@ "color": 8421504, "emoji": "📛" }, + "templateclassification/tc-changed": { + "icon": "", + "color": 8750469, + "emoji": "📱" + }, "suppressed": { "icon": "https://i.imgur.com/1gps6EZ.png", "color": 1, diff --git a/src/argparser.py b/src/argparser.py index 6bb0b96..728928b 100644 --- a/src/argparser.py +++ b/src/argparser.py @@ -17,6 +17,7 @@ import argparse parser = argparse.ArgumentParser(description="Start RcGcDw") parser.add_argument("--test", action='store_true', help="mode used for testing, sends only 5 entries of both rc and discussion changes and sends daily overview") +parser.add_argument("--nowelcome", action='store_true', help="don't send a welcome message when a new data file is created") parser.add_argument("--settings", default="settings.json", type=argparse.FileType(encoding='utf8'), help="provides a path to settings file (default ./settings.json)") command_args, unknown = parser.parse_known_args() diff --git a/src/misc.py b/src/misc.py index 1e3b5fe..383e183 100644 --- a/src/misc.py +++ b/src/misc.py @@ -20,6 +20,7 @@ from html.parser import HTMLParser from urllib.parse import urlparse, urlunparse import requests +from src.argparser import command_args from src.configloader import settings import src.api.util from src.discord.message import DiscordMessage, DiscordMessageMetadata @@ -42,6 +43,14 @@ WIKI_ARTICLE_PATH: str = "" WIKI_SCRIPT_PATH: str = "" WIKI_JUST_DOMAIN: str = "" +def send_simple(msgtype, message, name, avatar): + discord_msg = DiscordMessage("compact", msgtype, settings["webhookURL"], content=message) + discord_msg.set_avatar(avatar) + discord_msg.set_name(name) + messagequeue.resend_msgs() + send_to_discord(discord_msg, meta=DiscordMessageMetadata("POST")) + + class DataFile: """Data class which instance of is shared by multiple modules to remain consistent and do not cause too many IO operations.""" def __init__(self): @@ -69,6 +78,9 @@ class DataFile: except FileNotFoundError: self.generate_datafile() misc_logger.info("The data file could not be found. Generating a new one...") + if not command_args.nowelcome: + send_simple("welcome", _("RcGcDw is now running and checking {wiki}.").format(wiki=settings["wikiname"]), + _("Welcome"), settings["avatars"].get("welcome", "")) return data_template def save_datafile(self): @@ -300,14 +312,6 @@ def prepare_paths(path: str, dry=False): prepare_paths(settings["wiki_url"]) -def send_simple(msgtype, message, name, avatar): - discord_msg = DiscordMessage("compact", msgtype, settings["webhookURL"], content=message) - discord_msg.set_avatar(avatar) - discord_msg.set_name(name) - messagequeue.resend_msgs() - send_to_discord(discord_msg, meta=DiscordMessageMetadata("POST")) - - def run_hooks(hooks, *arguments): for hook in hooks: try: