Merge remote-tracking branch 'origin/testing' into testing

# Conflicts:
#	src/misc.py
This commit is contained in:
Frisk 2022-11-10 15:47:30 +01:00
commit 6881838ba5
No known key found for this signature in database
GPG key ID: 213F7C15068AF8AC
5 changed files with 68 additions and 10 deletions

View file

@ -34,7 +34,7 @@ def embed_datadump_generate(ctx: Context, change: dict) -> DiscordMessage:
return embed return embed
@formatter.compact(event="mdatadump/generate") @formatter.compact(event="datadump/generate")
def compact_datadump_generate(ctx: Context, change: dict): def compact_datadump_generate(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
@ -56,7 +56,7 @@ def embed_datadump_delete(ctx: Context, change: dict) -> DiscordMessage:
return embed return embed
@formatter.compact(event="mdatadump/delete") @formatter.compact(event="datadump/delete")
def compact_datadump_delete(ctx: Context, change: dict) -> DiscordMessage: def compact_datadump_delete(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)

View file

@ -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 <http://www.gnu.org/licenses/>.
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)

View file

@ -13,6 +13,7 @@
"avatars": { "avatars": {
"connection_failed": "https://i.imgur.com/2jWQEt1.png", "connection_failed": "https://i.imgur.com/2jWQEt1.png",
"connection_restored": "", "connection_restored": "",
"welcome": "",
"no_event": "", "no_event": "",
"embed": "", "embed": "",
"compact": "" "compact": ""
@ -511,6 +512,11 @@
"color": 8421504, "color": 8421504,
"emoji": "📛" "emoji": "📛"
}, },
"templateclassification/tc-changed": {
"icon": "",
"color": 8750469,
"emoji": "📱"
},
"suppressed": { "suppressed": {
"icon": "https://i.imgur.com/1gps6EZ.png", "icon": "https://i.imgur.com/1gps6EZ.png",
"color": 1, "color": 1,

View file

@ -17,6 +17,7 @@ import argparse
parser = argparse.ArgumentParser(description="Start RcGcDw") 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("--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)") 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() command_args, unknown = parser.parse_known_args()

View file

@ -20,6 +20,7 @@ from html.parser import HTMLParser
from urllib.parse import urlparse, urlunparse from urllib.parse import urlparse, urlunparse
import requests import requests
from src.argparser import command_args
from src.configloader import settings from src.configloader import settings
import src.api.util import src.api.util
from src.discord.message import DiscordMessage, DiscordMessageMetadata from src.discord.message import DiscordMessage, DiscordMessageMetadata
@ -42,6 +43,14 @@ WIKI_ARTICLE_PATH: str = ""
WIKI_SCRIPT_PATH: str = "" WIKI_SCRIPT_PATH: str = ""
WIKI_JUST_DOMAIN: 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: class DataFile:
"""Data class which instance of is shared by multiple modules to remain consistent and do not cause too many IO operations.""" """Data class which instance of is shared by multiple modules to remain consistent and do not cause too many IO operations."""
def __init__(self): def __init__(self):
@ -69,6 +78,9 @@ class DataFile:
except FileNotFoundError: except FileNotFoundError:
self.generate_datafile() self.generate_datafile()
misc_logger.info("The data file could not be found. Generating a new one...") 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 return data_template
def save_datafile(self): def save_datafile(self):
@ -300,14 +312,6 @@ def prepare_paths(path: str, dry=False):
prepare_paths(settings["wiki_url"]) 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): def run_hooks(hooks, *arguments):
for hook in hooks: for hook in hooks:
try: try: