Fixed compatibility with RcGcDb by using dynamic methods as required by API compat, fixed discussion calls

This commit is contained in:
Frisk 2022-10-03 14:54:07 +02:00
parent d046106652
commit 7c5ac116e7
No known key found for this signature in database
GPG key ID: 213F7C15068AF8AC
15 changed files with 176 additions and 180 deletions

View file

@ -54,7 +54,7 @@ from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.i18n import formatters_i18n from src.i18n import formatters_i18n
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, compact_author, create_article_path, sanitize_to_markdown, sanitize_to_url, \ from src.api.util import embed_helper, compact_author, sanitize_to_markdown, sanitize_to_url, \
clean_link clean_link
# Setup translation function which is used to translate english strings to other languages # Setup translation function which is used to translate english strings to other languages
@ -67,7 +67,7 @@ def embed_sprite_sprite(ctx: Context, change: dict) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
# embed_helper function can be used to automatically populate DiscordMessage object with some common useful information such as setting author name/url, adding fields for tags/categories, or setting default description # embed_helper function can be used to automatically populate DiscordMessage object with some common useful information such as setting author name/url, adding fields for tags/categories, or setting default description
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = _("Edited the sprite for {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = _("Edited the sprite for {article}").format(article=sanitize_to_markdown(change["title"]))
# return populated DiscordMessage object # return populated DiscordMessage object
return embed return embed
@ -76,7 +76,7 @@ def embed_sprite_sprite(ctx: Context, change: dict) -> DiscordMessage:
@formatter.compact(event="sprite/sprite") @formatter.compact(event="sprite/sprite")
def compact_sprite_sprite(ctx: Context, change: dict) -> DiscordMessage: def compact_sprite_sprite(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = _("[{author}]({author_url}) edited the sprite for [{article}]({article_url})").format(author=author, content = _("[{author}]({author_url}) edited the sprite for [{article}]({article_url})").format(author=author,
author_url=author_url, author_url=author_url,
article=sanitize_to_markdown(change[ article=sanitize_to_markdown(change[

View file

@ -18,8 +18,7 @@ import logging
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, sanitize_to_url, parse_mediawiki_changes, clean_link, compact_author, \ from src.api.util import embed_helper, sanitize_to_url, parse_mediawiki_changes, clean_link, compact_author, sanitize_to_markdown
create_article_path, sanitize_to_markdown
# Order results from most drastic first to less drastic last # Order results from most drastic first to less drastic last
abuselog_results = ["degroup", "blockautopromote", "rangeblock", "block", "disallow", "throttle", "warn", "tag", ""] abuselog_results = ["degroup", "blockautopromote", "rangeblock", "block", "disallow", "throttle", "warn", "tag", ""]
@ -70,12 +69,12 @@ def embed_abuselog(ctx: Context, change: dict):
def compact_abuselog(ctx: Context, change: dict): def compact_abuselog(ctx: Context, change: dict):
results = change["result"].split(",") results = change["result"].split(",")
action = abuselog_action(results) action = abuselog_action(results)
author_url = clean_link(create_article_path("User:{user}".format(user=change["user"]))) author_url = clean_link(ctx.client.create_article_path("User:{user}".format(user=change["user"])))
author = abuse_filter_format_user(change, ctx.settings) author = abuse_filter_format_user(change, ctx.settings)
message = ctx._("[{author}]({author_url}) triggered *{abuse_filter}*, performing the action \"{action}\" on *[{target}]({target_url})* - action taken: {result}.").format( message = ctx._("[{author}]({author_url}) triggered *{abuse_filter}*, performing the action \"{action}\" on *[{target}]({target_url})* - action taken: {result}.").format(
author=author, author_url=author_url, abuse_filter=sanitize_to_markdown(change["filter"]), author=author, author_url=author_url, abuse_filter=sanitize_to_markdown(change["filter"]),
action=abusefilter_actions(change["action"], ctx._, change["action"]), target=change.get("title", ctx._("Unknown")), action=abusefilter_actions(change["action"], ctx._, change["action"]), target=change.get("title", ctx._("Unknown")),
target_url=clean_link(create_article_path(sanitize_to_url(change.get("title", ctx._("Unknown"))))), target_url=clean_link(ctx.client.create_article_path(sanitize_to_url(change.get("title", ctx._("Unknown"))))),
result=ctx._(", ").join([abusefilter_results(result, ctx._, result) for result in results])) result=ctx._(", ").join([abusefilter_results(result, ctx._, result) for result in results]))
return DiscordMessage(ctx.message_type, action, ctx.webhook_url, content=message) return DiscordMessage(ctx.message_type, action, ctx.webhook_url, content=message)
@ -86,7 +85,7 @@ def compact_abuselog(ctx: Context, change: dict):
def embed_abuselog_modify(ctx: Context, change: dict): def embed_abuselog_modify(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path( embed["url"] = ctx.client.create_article_path(
"Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(number=change["logparams"]['newId'], "Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(number=change["logparams"]['newId'],
historyid=change["logparams"]["historyId"])) historyid=change["logparams"]["historyId"]))
embed["title"] = ctx._("Edited abuse filter number {number}").format(number=change["logparams"]['newId']) embed["title"] = ctx._("Edited abuse filter number {number}").format(number=change["logparams"]['newId'])
@ -96,7 +95,7 @@ def embed_abuselog_modify(ctx: Context, change: dict):
@formatter.compact(event="abusefilter/modify") @formatter.compact(event="abusefilter/modify")
def compact_abuselog_modify(ctx: Context, change: dict): def compact_abuselog_modify(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path( link = clean_link(ctx.client.create_article_path(
"Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(number=change["logparams"]['newId'], "Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(number=change["logparams"]['newId'],
historyid=change["logparams"][ historyid=change["logparams"][
"historyId"]))) "historyId"])))
@ -116,7 +115,7 @@ def compact_abuselog_modify(ctx: Context, change: dict):
def embed_abuselog_create(ctx: Context, change: dict): def embed_abuselog_create(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path("Special:AbuseFilter/{number}".format(number=change["logparams"]['newId'])) embed["url"] = ctx.client.create_article_path("Special:AbuseFilter/{number}".format(number=change["logparams"]['newId']))
embed["title"] = ctx._("Created abuse filter number {number}").format(number=change["logparams"]['newId']) embed["title"] = ctx._("Created abuse filter number {number}").format(number=change["logparams"]['newId'])
return embed return embed
@ -125,7 +124,7 @@ def embed_abuselog_create(ctx: Context, change: dict):
def compact_abuselog_create(ctx: Context, change: dict): def compact_abuselog_create(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link( link = clean_link(
create_article_path("Special:AbuseFilter/{number}".format(number=change["logparams"]['newId']))) ctx.client.create_article_path("Special:AbuseFilter/{number}".format(number=change["logparams"]['newId'])))
content = ctx._("[{author}]({author_url}) created abuse filter [number {number}]({filter_url})").format(author=author, content = ctx._("[{author}]({author_url}) created abuse filter [number {number}]({filter_url})").format(author=author,
author_url=author_url, author_url=author_url,
number=change[ number=change[

View file

@ -18,7 +18,7 @@ import re
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, compact_author, create_article_path, sanitize_to_markdown from src.api.util import embed_helper, compact_author, sanitize_to_markdown
# Cargo - https://www.mediawiki.org/wiki/Extension:Cargo # Cargo - https://www.mediawiki.org/wiki/Extension:Cargo
# cargo/createtable - Creation of Cargo table # cargo/createtable - Creation of Cargo table
@ -96,7 +96,7 @@ def compact_cargo_replacetable(ctx: Context, change: dict):
def embed_cargo_deletetable(ctx: Context, change: dict): def embed_cargo_deletetable(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path("Special:CargoTables") embed["url"] = ctx.client.create_article_path("Special:CargoTables")
embed["title"] = ctx._("Deleted the Cargo table \"{table}\"").format(table=sanitize_to_markdown(change["logparams"]["0"])) embed["title"] = ctx._("Deleted the Cargo table \"{table}\"").format(table=sanitize_to_markdown(change["logparams"]["0"]))
return embed return embed

View file

@ -18,7 +18,7 @@ import logging
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, clean_link, compact_author, create_article_path, sanitize_to_markdown, sanitize_to_url from src.api.util import embed_helper, clean_link, compact_author, sanitize_to_markdown, sanitize_to_url
from src.misc import profile_field_name from src.misc import profile_field_name
@ -39,7 +39,7 @@ def embed_curseprofile_profile_edited(ctx: Context, change: dict) -> DiscordMess
embed["description"] = ctx._("Cleared the {field} field").format(field=profile_field_name(change["logparams"]['4:section'], True)) embed["description"] = ctx._("Cleared the {field} field").format(field=profile_field_name(change["logparams"]['4:section'], True))
else: else:
embed["description"] = ctx._("{field} field changed to: {desc}").format(field=profile_field_name(change["logparams"]['4:section'], True), desc=ctx.parsedcomment) embed["description"] = ctx._("{field} field changed to: {desc}").format(field=profile_field_name(change["logparams"]['4:section'], True), desc=ctx.parsedcomment)
embed["url"] = create_article_path("UserProfile:" + sanitize_to_url(target_user)) embed["url"] = ctx.client.create_article_path("UserProfile:" + sanitize_to_url(target_user))
return embed return embed
@ -47,7 +47,7 @@ def embed_curseprofile_profile_edited(ctx: Context, change: dict) -> DiscordMess
def compact_curseprofile_profile_edited(ctx: Context, change: dict) -> DiscordMessage: def compact_curseprofile_profile_edited(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
target_user = change["title"].split(':', 1)[1] target_user = change["title"].split(':', 1)[1]
link = clean_link(create_article_path("UserProfile:" + sanitize_to_url(target_user))) link = clean_link(ctx.client.create_article_path("UserProfile:" + sanitize_to_url(target_user)))
if target_user != author: if target_user != author:
if ctx.parsedcomment is None: # If the field is empty if ctx.parsedcomment is None: # If the field is empty
edit_clear_message = ctx._("[{author}]({author_url}) cleared the {field} on [{target}]({target_url})'s profile.") edit_clear_message = ctx._("[{author}]({author_url}) cleared the {field} on [{target}]({target_url})'s profile.")
@ -79,7 +79,7 @@ def embed_curseprofile_comment_created(ctx: Context, change: dict) -> DiscordMes
embed["title"] = ctx._("Left a comment on their own profile") embed["title"] = ctx._("Left a comment on their own profile")
if ctx.settings["appearance"]["embed"]["show_edit_changes"]: if ctx.settings["appearance"]["embed"]["show_edit_changes"]:
embed["description"] = ctx.client.pull_curseprofile_comment(change["logparams"]["4:comment_id"]) embed["description"] = ctx.client.pull_curseprofile_comment(change["logparams"]["4:comment_id"])
embed["url"] = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) embed["url"] = ctx.client.create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))
return embed return embed
@ -87,7 +87,7 @@ def embed_curseprofile_comment_created(ctx: Context, change: dict) -> DiscordMes
def compact_curseprofile_comment_created(ctx: Context, change: dict) -> DiscordMessage: def compact_curseprofile_comment_created(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
target_user = change["title"].split(':', 1)[1] target_user = change["title"].split(':', 1)[1]
link = clean_link(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))) link = clean_link(ctx.client.create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])))
if target_user != author: if target_user != author:
content = ctx._("[{author}]({author_url}) left a [comment]({comment}) on {target}'s profile.").format( content = ctx._("[{author}]({author_url}) left a [comment]({comment}) on {target}'s profile.").format(
author=author, author_url=author_url, comment=link, target=sanitize_to_markdown(target_user)) author=author, author_url=author_url, comment=link, target=sanitize_to_markdown(target_user))
@ -110,7 +110,7 @@ def embed_curseprofile_comment_edited(ctx: Context, change: dict) -> DiscordMess
embed["title"] = ctx._("Edited a comment on their own profile") embed["title"] = ctx._("Edited a comment on their own profile")
if ctx.settings["appearance"]["embed"]["show_edit_changes"]: if ctx.settings["appearance"]["embed"]["show_edit_changes"]:
embed["description"] = ctx.client.pull_curseprofile_comment(change["logparams"]["4:comment_id"]) embed["description"] = ctx.client.pull_curseprofile_comment(change["logparams"]["4:comment_id"])
embed["url"] = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) embed["url"] = ctx.client.create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))
return embed return embed
@ -118,7 +118,7 @@ def embed_curseprofile_comment_edited(ctx: Context, change: dict) -> DiscordMess
def compact_curseprofile_comment_edited(ctx: Context, change: dict) -> DiscordMessage: def compact_curseprofile_comment_edited(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
target_user = change["title"].split(':', 1)[1] target_user = change["title"].split(':', 1)[1]
link = clean_link(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))) link = clean_link(ctx.client.create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])))
if target_user != author: if target_user != author:
content = ctx._("[{author}]({author_url}) edited a [comment]({comment}) on {target}'s profile.").format( content = ctx._("[{author}]({author_url}) edited a [comment]({comment}) on {target}'s profile.").format(
author=author, author_url=author_url, comment=link, target=sanitize_to_markdown(target_user)) author=author, author_url=author_url, comment=link, target=sanitize_to_markdown(target_user))
@ -141,7 +141,7 @@ def embed_curseprofile_comment_replied(ctx: Context, change: dict) -> DiscordMes
embed["title"] = ctx._("Replied to a comment on their own profile") embed["title"] = ctx._("Replied to a comment on their own profile")
if ctx.settings["appearance"]["embed"]["show_edit_changes"]: if ctx.settings["appearance"]["embed"]["show_edit_changes"]:
embed["description"] = ctx.client.pull_curseprofile_comment(change["logparams"]["4:comment_id"]) embed["description"] = ctx.client.pull_curseprofile_comment(change["logparams"]["4:comment_id"])
embed["url"] = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) embed["url"] = ctx.client.create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))
return embed return embed
@ -149,7 +149,7 @@ def embed_curseprofile_comment_replied(ctx: Context, change: dict) -> DiscordMes
def compact_curseprofile_comment_replied(ctx: Context, change: dict) -> DiscordMessage: def compact_curseprofile_comment_replied(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
target_user = change["title"].split(':', 1)[1] target_user = change["title"].split(':', 1)[1]
link = clean_link(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))) link = clean_link(ctx.client.create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])))
if target_user != author: if target_user != author:
content = ctx._("[{author}]({author_url}) replied to a [comment]({comment}) on {target}'s profile.").format( content = ctx._("[{author}]({author_url}) replied to a [comment]({comment}) on {target}'s profile.").format(
author=author, author_url=author_url, comment=link, target=sanitize_to_markdown(target_user)) author=author, author_url=author_url, comment=link, target=sanitize_to_markdown(target_user))
@ -173,9 +173,9 @@ def embed_curseprofile_comment_deleted(ctx: Context, change: dict) -> DiscordMes
if ctx.parsedcomment is not None: if ctx.parsedcomment is not None:
embed["description"] = ctx.parsedcomment embed["description"] = ctx.parsedcomment
if "4:comment_id" in change["logparams"]: if "4:comment_id" in change["logparams"]:
embed["url"] = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) embed["url"] = ctx.client.create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))
else: else:
embed["url"] = create_article_path("UserProfile:" + sanitize_to_url(target_user)) embed["url"] = ctx.client.create_article_path("UserProfile:" + sanitize_to_url(target_user))
return embed return embed
@ -184,9 +184,9 @@ def compact_curseprofile_comment_deleted(ctx: Context, change: dict) -> DiscordM
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
target_user = change["title"].split(':', 1)[1] target_user = change["title"].split(':', 1)[1]
if "4:comment_id" in change["logparams"]: if "4:comment_id" in change["logparams"]:
link = clean_link(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))) link = clean_link(ctx.client.create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])))
else: else:
link = clean_link(create_article_path("UserProfile:" + sanitize_to_url(target_user))) link = clean_link(ctx.client.create_article_path("UserProfile:" + sanitize_to_url(target_user)))
parsed_comment = "" if ctx.parsedcomment is None else " *(" + ctx.parsedcomment + ")*" parsed_comment = "" if ctx.parsedcomment is None else " *(" + ctx.parsedcomment + ")*"
if target_user != author: if target_user != author:
content = ctx._("[{author}]({author_url}) deleted a [comment]({comment}) on {target}'s profile.{reason}").format( content = ctx._("[{author}]({author_url}) deleted a [comment]({comment}) on {target}'s profile.{reason}").format(
@ -211,7 +211,7 @@ def embed_curseprofile_comment_purged(ctx: Context, change: dict) -> DiscordMess
embed["title"] = ctx._("Purged a comment on their own profile") embed["title"] = ctx._("Purged a comment on their own profile")
if ctx.parsedcomment is not None: if ctx.parsedcomment is not None:
embed["description"] = ctx.parsedcomment embed["description"] = ctx.parsedcomment
embed["url"] = create_article_path("UserProfile:" + sanitize_to_url(target_user)) embed["url"] = ctx.client.create_article_path("UserProfile:" + sanitize_to_url(target_user))
return embed return embed
@ -219,7 +219,7 @@ def embed_curseprofile_comment_purged(ctx: Context, change: dict) -> DiscordMess
def compact_curseprofile_comment_purged(ctx: Context, change: dict) -> DiscordMessage: def compact_curseprofile_comment_purged(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
target_user = change["title"].split(':', 1)[1] target_user = change["title"].split(':', 1)[1]
link = clean_link(create_article_path("UserProfile:" + sanitize_to_url(target_user))) link = clean_link(ctx.client.create_article_path("UserProfile:" + sanitize_to_url(target_user)))
parsed_comment = "" if ctx.parsedcomment is None else " *(" + ctx.parsedcomment + ")*" parsed_comment = "" if ctx.parsedcomment is None else " *(" + ctx.parsedcomment + ")*"
if target_user != author: if target_user != author:
content = ctx._("[{author}]({author_url}) purged a comment on [{target}]({link})'s profile.{reason}").format( content = ctx._("[{author}]({author_url}) purged a comment on [{target}]({link})'s profile.{reason}").format(

View file

@ -18,7 +18,7 @@ import logging
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, compact_author, create_article_path, sanitize_to_markdown, sanitize_to_url, compact_summary from src.api.util import embed_helper, compact_author, sanitize_to_markdown, sanitize_to_url, compact_summary
# DataDumps - https://www.mediawiki.org/wiki/Extension:DataDump # DataDumps - https://www.mediawiki.org/wiki/Extension:DataDump
@ -30,7 +30,7 @@ def embed_datadump_generate(ctx: Context, change: dict) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["title"] = ctx._("Generated {file} dump").format(file=change["logparams"]["filename"]) embed["title"] = ctx._("Generated {file} dump").format(file=change["logparams"]["filename"])
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
return embed return embed
@ -52,7 +52,7 @@ def embed_datadump_delete(ctx: Context, change: dict) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["title"] = ctx._("Deleted {file} dump").format(file=sanitize_to_markdown(change["logparams"]["filename"])) embed["title"] = ctx._("Deleted {file} dump").format(file=sanitize_to_markdown(change["logparams"]["filename"]))
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
return embed return embed

View file

@ -18,7 +18,7 @@
import json import json
import datetime, logging import datetime, logging
from urllib.parse import quote_plus from urllib.parse import quote_plus
from src.api.util import create_article_path, clean_link, sanitize_to_markdown from src.api.util import clean_link, sanitize_to_markdown
from src.api.context import Context from src.api.context import Context
from src.discord.queue import send_to_discord from src.discord.queue import send_to_discord
from src.discord.message import DiscordMessage, DiscordMessageMetadata from src.discord.message import DiscordMessage, DiscordMessageMetadata
@ -181,7 +181,7 @@ def embed_discussion_forum(ctx: Context, post: dict):
if post["_embedded"]["thread"][0]["tags"]: if post["_embedded"]["thread"][0]["tags"]:
tag_displayname = [] tag_displayname = []
for tag in post["_embedded"]["thread"][0]["tags"]: for tag in post["_embedded"]["thread"][0]["tags"]:
tag_displayname.append("[{title}]({url})".format(title=tag["articleTitle"], url=create_article_path( tag_displayname.append("[{title}]({url})".format(title=tag["articleTitle"], url=ctx.client.create_article_path(
quote_plus(tag["articleTitle"].replace(" ", "_"), "/:?=&")))) quote_plus(tag["articleTitle"].replace(" ", "_"), "/:?=&"))))
if len(", ".join(tag_displayname)) > 1000: if len(", ".join(tag_displayname)) > 1000:
embed.add_field(ctx.pgettext("Fandom discussions Tags/Forums", "Tags"), ctx.pgettext("Fandom discussions amount of Tags/Forums", "{} tags").format(len(post["_embedded"]["thread"][0]["tags"]))) embed.add_field(ctx.pgettext("Fandom discussions Tags/Forums", "Tags"), ctx.pgettext("Fandom discussions amount of Tags/Forums", "{} tags").format(len(post["_embedded"]["thread"][0]["tags"])))
@ -244,7 +244,7 @@ def compact_author_discussions(post: dict, ctx: Context):
else: else:
if post["createdBy"]["name"]: if post["createdBy"]["name"]:
author = post["createdBy"]["name"] author = post["createdBy"]["name"]
author_url = clean_link(create_article_path("User:{user}".format(user=author))) author_url = clean_link(ctx.client.create_article_path("User:{user}".format(user=author)))
else: else:
author_url = "<{url}f/u/{creatorId}>".format(url=ctx.settings["fandom_discussions"]["wiki_url"], author_url = "<{url}f/u/{creatorId}>".format(url=ctx.settings["fandom_discussions"]["wiki_url"],
creatorId=post["creatorId"]) creatorId=post["creatorId"])
@ -273,7 +273,7 @@ def embed_author_discussions(post: dict, embed: DiscordMessage, ctx: Context):
@formatter.embed(event="discussion/wall") @formatter.embed(event="discussion/wall")
def embed_discussion_wall(ctx: Context, post: dict): def embed_discussion_wall(ctx: Context, post: dict):
embed = DiscordMessage("embed", "discussion", ctx.settings["fandom_discussions"]["webhookURL"]) embed = DiscordMessage("embed", "discussion", ctx.settings["fandom_discussions"]["webhookURL"])
common_discussions(post, embed) common_discussions(post, embed, ctx)
embed_author_discussions(post, embed, ctx) embed_author_discussions(post, embed, ctx)
user_wall = ctx._("unknown") # Fail safe user_wall = ctx._("unknown") # Fail safe
if post["forumName"].endswith(' Message Wall'): if post["forumName"].endswith(' Message Wall'):
@ -321,7 +321,7 @@ def compact_discussion_wall(ctx: Context, post: dict):
@formatter.embed(event="discussion/article_comment") @formatter.embed(event="discussion/article_comment")
def embed_discussion_article_comment(ctx: Context, post: dict): def embed_discussion_article_comment(ctx: Context, post: dict):
embed = DiscordMessage("embed", "discussion", ctx.settings["fandom_discussions"]["webhookURL"]) embed = DiscordMessage("embed", "discussion", ctx.settings["fandom_discussions"]["webhookURL"])
common_discussions(post, embed) common_discussions(post, embed, ctx)
embed_author_discussions(post, embed, ctx) embed_author_discussions(post, embed, ctx)
article_paths = ctx.comment_page article_paths = ctx.comment_page
if article_paths is None: if article_paths is None:

View file

@ -18,7 +18,7 @@ import logging
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, clean_link, compact_author, create_article_path, sanitize_to_url, compact_summary from src.api.util import embed_helper, clean_link, compact_author, sanitize_to_url, compact_summary
# Interwiki - https://www.mediawiki.org/wiki/Extension:Interwiki # Interwiki - https://www.mediawiki.org/wiki/Extension:Interwiki
# interwiki/iw_add - Added entry to interwiki table # interwiki/iw_add - Added entry to interwiki table
@ -28,7 +28,7 @@ from src.api.util import embed_helper, clean_link, compact_author, create_articl
def embed_interwiki_iw_add(ctx: Context, change: dict) -> DiscordMessage: def embed_interwiki_iw_add(ctx: Context, change: dict) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path("Special:Interwiki") embed["url"] = ctx.client.create_article_path("Special:Interwiki")
embed["title"] = ctx._("Added an entry to the interwiki table") embed["title"] = ctx._("Added an entry to the interwiki table")
embed["description"] = ctx._("Prefix: {prefix}, website: {website} | {desc}").format(desc=ctx.parsedcomment, embed["description"] = ctx._("Prefix: {prefix}, website: {website} | {desc}").format(desc=ctx.parsedcomment,
prefix=change["logparams"]['0'], prefix=change["logparams"]['0'],
@ -39,7 +39,7 @@ def embed_interwiki_iw_add(ctx: Context, change: dict) -> DiscordMessage:
@formatter.compact(event="interwiki/iw_add") @formatter.compact(event="interwiki/iw_add")
def compact_interwiki_iw_add(ctx: Context, change: dict) -> DiscordMessage: def compact_interwiki_iw_add(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path("Special:Interwiki")) link = clean_link(ctx.client.create_article_path("Special:Interwiki"))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._( content = ctx._(
"[{author}]({author_url}) added an entry to the [interwiki table]({table_url}) pointing to {website} with {prefix} prefix").format( "[{author}]({author_url}) added an entry to the [interwiki table]({table_url}) pointing to {website} with {prefix} prefix").format(
@ -55,7 +55,7 @@ def compact_interwiki_iw_add(ctx: Context, change: dict) -> DiscordMessage:
def embed_interwiki_iw_edit(ctx: Context, change: dict) -> DiscordMessage: def embed_interwiki_iw_edit(ctx: Context, change: dict) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path("Special:Interwiki") embed["url"] = ctx.client.create_article_path("Special:Interwiki")
embed["title"] = ctx._("Edited an entry in interwiki table") embed["title"] = ctx._("Edited an entry in interwiki table")
embed["description"] = ctx._("Prefix: {prefix}, website: {website} | {desc}").format(desc=ctx.parsedcomment, embed["description"] = ctx._("Prefix: {prefix}, website: {website} | {desc}").format(desc=ctx.parsedcomment,
prefix=change["logparams"]['0'], prefix=change["logparams"]['0'],
@ -66,7 +66,7 @@ def embed_interwiki_iw_edit(ctx: Context, change: dict) -> DiscordMessage:
@formatter.compact(event="interwiki/iw_edit") @formatter.compact(event="interwiki/iw_edit")
def compact_interwiki_iw_edit(ctx: Context, change: dict) -> DiscordMessage: def compact_interwiki_iw_edit(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path("Special:Interwiki")) link = clean_link(ctx.client.create_article_path("Special:Interwiki"))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._( content = ctx._(
"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) pointing to {website} with {prefix} prefix").format( "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) pointing to {website} with {prefix} prefix").format(
@ -82,7 +82,7 @@ def compact_interwiki_iw_edit(ctx: Context, change: dict) -> DiscordMessage:
def embed_interwiki_iw_delete(ctx: Context, change: dict) -> DiscordMessage: def embed_interwiki_iw_delete(ctx: Context, change: dict) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path("Special:Interwiki") embed["url"] = ctx.client.create_article_path("Special:Interwiki")
embed["title"] = ctx._("Deleted an entry in interwiki table") embed["title"] = ctx._("Deleted an entry in interwiki table")
embed["description"] = ctx._("Prefix: {prefix} | {desc}").format(desc=ctx.parsedcomment, embed["description"] = ctx._("Prefix: {prefix} | {desc}").format(desc=ctx.parsedcomment,
prefix=change["logparams"]['0']) prefix=change["logparams"]['0'])
@ -92,7 +92,7 @@ def embed_interwiki_iw_delete(ctx: Context, change: dict) -> DiscordMessage:
@formatter.compact(event="interwiki/iw_delete") @formatter.compact(event="interwiki/iw_delete")
def compact_interwiki_iw_delete(ctx: Context, change: dict) -> DiscordMessage: def compact_interwiki_iw_delete(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path("Special:Interwiki")) link = clean_link(ctx.client.create_article_path("Special:Interwiki"))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) deleted an entry in [interwiki table]({table_url}){desc}").format( content = ctx._("[{author}]({author_url}) deleted an entry in [interwiki table]({table_url}){desc}").format(
author=author, author=author,

View file

@ -16,7 +16,7 @@
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, compact_author, create_article_path, sanitize_to_markdown, sanitize_to_url, compact_summary from src.api.util import embed_helper, compact_author, sanitize_to_markdown, sanitize_to_url, compact_summary
# ManageWiki - https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:ManageWiki # ManageWiki - https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:ManageWiki
@ -26,7 +26,7 @@ from src.api.util import embed_helper, compact_author, create_article_path, sani
def embed_managewiki_settings(ctx: Context, change: dict): def embed_managewiki_settings(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Changed wiki settings") embed["title"] = ctx._("Changed wiki settings")
if change["logparams"].get("changes", ""): if change["logparams"].get("changes", ""):
embed.add_field("Setting", sanitize_to_markdown(change["logparams"].get("changes"))) embed.add_field("Setting", sanitize_to_markdown(change["logparams"].get("changes")))
@ -47,7 +47,7 @@ def compact_managewiki_settings(ctx: Context, change: dict):
def embed_managewiki_delete(ctx: Context, change: dict): def embed_managewiki_delete(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Deleted a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", ctx._("Unknown"))) embed["title"] = ctx._("Deleted a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", ctx._("Unknown")))
return embed return embed
@ -71,7 +71,7 @@ def compact_managewiki_delete(ctx: Context, change: dict):
def embed_managewiki_delete_group(ctx: Context, change: dict) -> DiscordMessage: def embed_managewiki_delete_group(ctx: Context, change: dict) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
group = change["title"].split("/")[-1] group = change["title"].split("/")[-1]
embed["title"] = ctx._("Deleted a \"{group}\" user group").format(wiki=group) embed["title"] = ctx._("Deleted a \"{group}\" user group").format(wiki=group)
return embed return embed
@ -95,7 +95,7 @@ def compact_managewiki_delete_group(ctx: Context, change: dict) -> DiscordMessag
def embed_managewiki_lock(ctx: Context, change: dict): def embed_managewiki_lock(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Locked a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", ctx._("Unknown"))) embed["title"] = ctx._("Locked a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", ctx._("Unknown")))
return embed return embed
@ -116,7 +116,7 @@ def compact_managewiki_lock(ctx: Context, change: dict):
def embed_managewiki_namespaces(ctx: Context, change: dict): def embed_managewiki_namespaces(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Modified \"{namespace_name}\" namespace").format( embed["title"] = ctx._("Modified \"{namespace_name}\" namespace").format(
namespace_name=change["logparams"].get("namespace", ctx._("Unknown"))) namespace_name=change["logparams"].get("namespace", ctx._("Unknown")))
embed.add_field(ctx._('Wiki'), change["logparams"].get("wiki", ctx._("Unknown"))) embed.add_field(ctx._('Wiki'), change["logparams"].get("wiki", ctx._("Unknown")))
@ -139,7 +139,7 @@ def compact_managewiki_namespaces(ctx: Context, change: dict):
def embed_managewiki_namespaces_delete(ctx: Context, change: dict): def embed_managewiki_namespaces_delete(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Deleted a \"{namespace_name}\" namespace").format( embed["title"] = ctx._("Deleted a \"{namespace_name}\" namespace").format(
namespace_name=change["logparams"].get("namespace", ctx._("Unknown"))) namespace_name=change["logparams"].get("namespace", ctx._("Unknown")))
embed.add_field(ctx._('Wiki'), change["logparams"].get("wiki", ctx._("Unknown"))) embed.add_field(ctx._('Wiki'), change["logparams"].get("wiki", ctx._("Unknown")))
@ -164,7 +164,7 @@ def compact_managewiki_namespaces_delete(ctx: Context, change: dict):
def embed_managewiki_rights(ctx: Context, change: dict): def embed_managewiki_rights(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
group_name = change["title"].split("/permissions/", 1)[1] group_name = change["title"].split("/permissions/", 1)[1]
embed["title"] = ctx._("Modified \"{usergroup_name}\" usergroup").format(usergroup_name=group_name) embed["title"] = ctx._("Modified \"{usergroup_name}\" usergroup").format(usergroup_name=group_name)
return embed return embed
@ -187,7 +187,7 @@ def compact_managewiki_rights(ctx: Context, change: dict):
def embed_managewiki_undelete(ctx: Context, change: dict): def embed_managewiki_undelete(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Undeleted a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", ctx._("Unknown"))) embed["title"] = ctx._("Undeleted a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", ctx._("Unknown")))
return embed return embed
@ -209,7 +209,7 @@ def compact_managewiki_undelete(ctx: Context, change: dict):
def embed_managewiki_unlock(ctx: Context, change: dict): def embed_managewiki_unlock(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Unlocked a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", ctx._("Unknown"))) embed["title"] = ctx._("Unlocked a \"{wiki}\" wiki").format(wiki=change["logparams"].get("wiki", ctx._("Unknown")))
return embed return embed

View file

@ -23,7 +23,7 @@ from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, sanitize_to_url, parse_mediawiki_changes, clean_link, compact_author, \ from src.api.util import embed_helper, sanitize_to_url, parse_mediawiki_changes, clean_link, compact_author, \
create_article_path, sanitize_to_markdown, compact_summary sanitize_to_markdown, compact_summary
from src.exceptions import * from src.exceptions import *
logger = logging.getLogger("extensions.base") logger = logging.getLogger("extensions.base")
@ -154,7 +154,7 @@ def embed_upload_upload(ctx, change) -> DiscordMessage:
else: else:
logger.warning("Request for additional image information have failed. The preview will not be shown.") logger.warning("Request for additional image information have failed. The preview will not be shown.")
request_for_image_data = None request_for_image_data = None
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
image_direct_url = None image_direct_url = None
# Make a request for file revisions so we can get direct URL to the image for embed # Make a request for file revisions so we can get direct URL to the image for embed
if request_for_image_data is not None: if request_for_image_data is not None:
@ -228,7 +228,7 @@ def embed_upload_upload(ctx, change) -> DiscordMessage:
@formatter.compact(event="upload/revert", mode="compact") @formatter.compact(event="upload/revert", mode="compact")
def compact_upload_revert(ctx, change) -> DiscordMessage: def compact_upload_revert(ctx, change) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
file_link = clean_link(create_article_path(sanitize_to_url(change["title"]))) file_link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}").format( content = ctx._("[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}").format(
author=author, author_url=author_url, file=sanitize_to_markdown(change["title"]), file_link=file_link, author=author, author_url=author_url, file=sanitize_to_markdown(change["title"]), file_link=file_link,
@ -239,7 +239,7 @@ def compact_upload_revert(ctx, change) -> DiscordMessage:
@formatter.compact(event="upload/overwrite", mode="compact") @formatter.compact(event="upload/overwrite", mode="compact")
def compact_upload_overwrite(ctx, change) -> DiscordMessage: def compact_upload_overwrite(ctx, change) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
file_link = clean_link(create_article_path(sanitize_to_url(change["title"]))) file_link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) uploaded a new version of [{file}]({file_link}){comment}").format( content = ctx._("[{author}]({author_url}) uploaded a new version of [{file}]({file_link}){comment}").format(
author=author, author_url=author_url, file=sanitize_to_markdown(change["title"]), file_link=file_link, author=author, author_url=author_url, file=sanitize_to_markdown(change["title"]), file_link=file_link,
@ -250,7 +250,7 @@ def compact_upload_overwrite(ctx, change) -> DiscordMessage:
@formatter.compact(event="upload/upload", mode="compact") @formatter.compact(event="upload/upload", mode="compact")
def compact_upload_upload(ctx, change) -> DiscordMessage: def compact_upload_upload(ctx, change) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
file_link = clean_link(create_article_path(sanitize_to_url(change["title"]))) file_link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) uploaded [{file}]({file_link}){comment}").format(author=author, content = ctx._("[{author}]({author_url}) uploaded [{file}]({file_link}){comment}").format(author=author,
author_url=author_url, author_url=author_url,
@ -266,7 +266,7 @@ def compact_upload_upload(ctx, change) -> DiscordMessage:
def embed_delete_delete(ctx, change) -> DiscordMessage: def embed_delete_delete(ctx, change) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed['url'] = create_article_path(sanitize_to_url(change["title"])) embed['url'] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Deleted page {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Deleted page {article}").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -275,7 +275,7 @@ def embed_delete_delete(ctx, change) -> DiscordMessage:
def compact_delete_delete(ctx, change) -> DiscordMessage: def compact_delete_delete(ctx, change) -> DiscordMessage:
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
page_link = clean_link(create_article_path(sanitize_to_url(change["title"]))) page_link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._("[{author}]({author_url}) deleted [{page}]({page_link}){comment}").format(author=author, content = ctx._("[{author}]({author_url}) deleted [{page}]({page_link}){comment}").format(author=author,
author_url=author_url, author_url=author_url,
page=sanitize_to_markdown( page=sanitize_to_markdown(
@ -290,7 +290,7 @@ def compact_delete_delete(ctx, change) -> DiscordMessage:
def embed_delete_delete_redir(ctx, change) -> DiscordMessage: def embed_delete_delete_redir(ctx, change) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed['url'] = create_article_path(sanitize_to_url(change["title"])) embed['url'] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Deleted redirect {article} by overwriting").format( embed["title"] = ctx._("Deleted redirect {article} by overwriting").format(
article=sanitize_to_markdown(change["title"])) article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -298,7 +298,7 @@ def embed_delete_delete_redir(ctx, change) -> DiscordMessage:
@formatter.compact(event="delete/delete_redir", mode="compact") @formatter.compact(event="delete/delete_redir", mode="compact")
def compact_delete_delete_redir(ctx, change) -> DiscordMessage: def compact_delete_delete_redir(ctx, change) -> DiscordMessage:
page_link = clean_link(create_article_path(sanitize_to_url(change["title"]))) page_link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) deleted redirect by overwriting [{page}]({page_link}){comment}").format( content = ctx._("[{author}]({author_url}) deleted redirect by overwriting [{page}]({page_link}){comment}").format(
@ -314,14 +314,14 @@ def compact_delete_delete_redir(ctx, change) -> DiscordMessage:
def embed_delete_restore(ctx, change) -> DiscordMessage: def embed_delete_restore(ctx, change) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed['url'] = create_article_path(sanitize_to_url(change["title"])) embed['url'] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Restored {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Restored {article}").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@formatter.compact(event="delete/restore", mode="compact") @formatter.compact(event="delete/restore", mode="compact")
def compact_delete_restore(ctx, change) -> DiscordMessage: def compact_delete_restore(ctx, change) -> DiscordMessage:
page_link = clean_link(create_article_path(sanitize_to_url(change["title"]))) page_link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) restored [{article}]({article_url}){comment}").format(author=author, content = ctx._("[{author}]({author_url}) restored [{article}]({article_url}){comment}").format(author=author,
@ -340,7 +340,7 @@ def compact_delete_restore(ctx, change) -> DiscordMessage:
def embed_delete_event(ctx, change) -> DiscordMessage: def embed_delete_event(ctx, change) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed['url'] = create_article_path("Special:RecentChanges") embed['url'] = ctx.client.create_article_path("Special:RecentChanges")
embed["title"] = ctx._("Changed visibility of log events") embed["title"] = ctx._("Changed visibility of log events")
return embed return embed
@ -362,7 +362,7 @@ def embed_delete_revision(ctx, change) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
amount = len(change["logparams"]["ids"]) amount = len(change["logparams"]["ids"])
embed['url'] = create_article_path(sanitize_to_url(change["title"])) embed['url'] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx.ngettext("Changed visibility of revision on page {article} ", embed["title"] = ctx.ngettext("Changed visibility of revision on page {article} ",
"Changed visibility of {amount} revisions on page {article} ", amount).format( "Changed visibility of {amount} revisions on page {article} ", amount).format(
article=sanitize_to_markdown(change["title"]), amount=amount) article=sanitize_to_markdown(change["title"]), amount=amount)
@ -373,7 +373,7 @@ def embed_delete_revision(ctx, change) -> DiscordMessage:
def compact_delete_revision(ctx, change) -> DiscordMessage: def compact_delete_revision(ctx, change) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
amount = len(change["logparams"]["ids"]) amount = len(change["logparams"]["ids"])
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx.ngettext( content = ctx.ngettext(
"[{author}]({author_url}) changed visibility of revision on page [{article}]({article_url}){comment}", "[{author}]({author_url}) changed visibility of revision on page [{article}]({article_url}){comment}",
@ -390,7 +390,7 @@ def compact_delete_revision(ctx, change) -> DiscordMessage:
def embed_move_move(ctx, change) -> DiscordMessage: def embed_move_move(ctx, change) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path(sanitize_to_url(change["logparams"]['target_title'])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["logparams"]['target_title']))
embed["description"] = "{supress}. {desc}".format(desc=ctx.parsedcomment, embed["description"] = "{supress}. {desc}".format(desc=ctx.parsedcomment,
supress=ctx._("No redirect has been made") if "suppressredirect" in supress=ctx._("No redirect has been made") if "suppressredirect" in
change["logparams"] else ctx._("A redirect has been made")) change["logparams"] else ctx._("A redirect has been made"))
@ -404,7 +404,7 @@ def embed_move_move(ctx, change) -> DiscordMessage:
@formatter.compact(event="move/move", mode="compact") @formatter.compact(event="move/move", mode="compact")
def compact_move_move(ctx, change) -> DiscordMessage: def compact_move_move(ctx, change) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["logparams"]['target_title']))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["logparams"]['target_title'])))
redirect_status = ctx._("without making a redirect") if "suppressredirect" in change["logparams"] else ctx._( redirect_status = ctx._("without making a redirect") if "suppressredirect" in change["logparams"] else ctx._(
"with a redirect") "with a redirect")
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
@ -423,7 +423,7 @@ def compact_move_move(ctx, change) -> DiscordMessage:
def embed_move_move_redir(ctx, change) -> DiscordMessage: def embed_move_move_redir(ctx, change) -> DiscordMessage:
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path(sanitize_to_url(change["logparams"]['target_title'])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["logparams"]['target_title']))
embed["description"] = "{supress}. {desc}".format(desc=ctx.parsedcomment, embed["description"] = "{supress}. {desc}".format(desc=ctx.parsedcomment,
supress=ctx._("No redirect has been made") if "suppressredirect" in supress=ctx._("No redirect has been made") if "suppressredirect" in
change["logparams"] else ctx._("A redirect has been made")) change["logparams"] else ctx._("A redirect has been made"))
@ -436,7 +436,7 @@ def embed_move_move_redir(ctx, change) -> DiscordMessage:
@formatter.compact(event="move/move_redir", mode="compact") @formatter.compact(event="move/move_redir", mode="compact")
def compact_move_move_redir(ctx, change) -> DiscordMessage: def compact_move_move_redir(ctx, change) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["logparams"]['target_title']))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["logparams"]['target_title'])))
redirect_status = ctx._("without making a redirect") if "suppressredirect" in change["logparams"] else ctx._( redirect_status = ctx._("without making a redirect") if "suppressredirect" in change["logparams"] else ctx._(
"with a redirect") "with a redirect")
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
@ -456,7 +456,7 @@ def compact_move_move_redir(ctx, change) -> DiscordMessage:
def embed_protect_move_prot(ctx, change): def embed_protect_move_prot(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["logparams"]["oldtitle_title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["logparams"]["oldtitle_title"]))
embed["title"] = ctx._("Moved protection settings from {redirect}{article} to {title}").format( embed["title"] = ctx._("Moved protection settings from {redirect}{article} to {title}").format(
redirect="" if "redirect" in change else "", redirect="" if "redirect" in change else "",
article=sanitize_to_markdown(change["logparams"]["oldtitle_title"]), article=sanitize_to_markdown(change["logparams"]["oldtitle_title"]),
@ -467,7 +467,7 @@ def embed_protect_move_prot(ctx, change):
@formatter.compact(event="protect/move_prot", mode="compact") @formatter.compact(event="protect/move_prot", mode="compact")
def compact_protect_move_prot(ctx, change): def compact_protect_move_prot(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["logparams"]["oldtitle_title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["logparams"]["oldtitle_title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._( content = ctx._(
"[{author}]({author_url}) moved protection settings from {redirect}*{article}* to [{target}]({target_url}){comment}").format( "[{author}]({author_url}) moved protection settings from {redirect}*{article}* to [{target}]({target_url}){comment}").format(
@ -484,7 +484,7 @@ def compact_protect_move_prot(ctx, change):
def embed_protect_protect(ctx, change): def embed_protect_protect(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Protected {target}").format(target=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Protected {target}").format(target=sanitize_to_markdown(change["title"]))
embed["description"] = "{settings}{cascade} | {reason}".format( embed["description"] = "{settings}{cascade} | {reason}".format(
settings=sanitize_to_markdown(change["logparams"].get("description", "")), settings=sanitize_to_markdown(change["logparams"].get("description", "")),
@ -496,7 +496,7 @@ def embed_protect_protect(ctx, change):
@formatter.compact(event="protect/protect", mode="compact") @formatter.compact(event="protect/protect", mode="compact")
def compact_protect_protect(ctx, change): def compact_protect_protect(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._( content = ctx._(
"[{author}]({author_url}) protected [{article}]({article_url}) with the following settings: {settings}{comment}").format( "[{author}]({author_url}) protected [{article}]({article_url}) with the following settings: {settings}{comment}").format(
@ -515,7 +515,7 @@ def compact_protect_protect(ctx, change):
def embed_protect_modify(ctx, change): def embed_protect_modify(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Changed protection level for {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Changed protection level for {article}").format(article=sanitize_to_markdown(change["title"]))
embed["description"] = "{settings}{cascade} | {reason}".format( embed["description"] = "{settings}{cascade} | {reason}".format(
settings=sanitize_to_markdown(change["logparams"].get("description", "")), settings=sanitize_to_markdown(change["logparams"].get("description", "")),
@ -527,7 +527,7 @@ def embed_protect_modify(ctx, change):
@formatter.compact(event="protect/modify", mode="compact") @formatter.compact(event="protect/modify", mode="compact")
def compact_protect_modify(ctx, change): def compact_protect_modify(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._( content = ctx._(
"[{author}]({author_url}) modified protection settings of [{article}]({article_url}) to: {settings}{comment}").format( "[{author}]({author_url}) modified protection settings of [{article}]({article_url}) to: {settings}{comment}").format(
@ -546,7 +546,7 @@ def compact_protect_modify(ctx, change):
def embed_protect_unprotect(ctx, change): def embed_protect_unprotect(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Removed protection from {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Removed protection from {article}").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -554,7 +554,7 @@ def embed_protect_unprotect(ctx, change):
@formatter.compact(event="protect/unprotect", mode="compact") @formatter.compact(event="protect/unprotect", mode="compact")
def compact_protect_unprotect(ctx, change): def compact_protect_unprotect(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) removed protection from [{article}]({article_url}){comment}").format( content = ctx._("[{author}]({author_url}) removed protection from [{article}]({article_url}){comment}").format(
author=author, author_url=author_url, article=sanitize_to_markdown(change["title"]), article_url=link, author=author, author_url=author_url, article=sanitize_to_markdown(change["title"]), article_url=link,
@ -594,9 +594,9 @@ def embed_block_block(ctx, change):
user = change["title"].split(':', 1)[1] user = change["title"].split(':', 1)[1]
try: try:
ipaddress.ip_address(user) ipaddress.ip_address(user)
embed["url"] = create_article_path("Special:Contributions/{user}".format(user=user)) embed["url"] = ctx.client.create_article_path("Special:Contributions/{user}".format(user=user))
except ValueError: except ValueError:
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
if "sitewide" not in change["logparams"]: if "sitewide" not in change["logparams"]:
restriction_description = "" restriction_description = ""
if "restrictions" in change["logparams"]: if "restrictions" in change["logparams"]:
@ -639,9 +639,9 @@ def compact_block_block(ctx, change):
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
try: try:
ipaddress.ip_address(user) ipaddress.ip_address(user)
link = clean_link(create_article_path("Special:Contributions/{user}".format(user=user))) link = clean_link(ctx.client.create_article_path("Special:Contributions/{user}".format(user=user)))
except ValueError: except ValueError:
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
else: else:
if "sitewide" not in change["logparams"]: if "sitewide" not in change["logparams"]:
if "restrictions" in change["logparams"]: if "restrictions" in change["logparams"]:
@ -684,7 +684,7 @@ def compact_block_block(ctx, change):
def embed_block_reblock(ctx, change): def embed_block_reblock(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
user = change["title"].split(':', 1)[1] user = change["title"].split(':', 1)[1]
embed["title"] = ctx._("Changed block settings for {blocked_user}").format(blocked_user=sanitize_to_markdown(user)) embed["title"] = ctx._("Changed block settings for {blocked_user}").format(blocked_user=sanitize_to_markdown(user))
return embed return embed
@ -693,7 +693,7 @@ def embed_block_reblock(ctx, change):
@formatter.compact(event="block/reblock") @formatter.compact(event="block/reblock")
def compact_block_reblock(ctx, change): def compact_block_reblock(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
user = change["title"].split(':', 1)[1] user = change["title"].split(':', 1)[1]
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) changed block settings for [{blocked_user}]({user_url}){comment}").format( content = ctx._("[{author}]({author_url}) changed block settings for [{blocked_user}]({user_url}){comment}").format(
@ -707,7 +707,7 @@ def compact_block_reblock(ctx, change):
def embed_block_unblock(ctx, change): def embed_block_unblock(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
user = change["title"].split(':', 1)[1] user = change["title"].split(':', 1)[1]
embed["title"] = ctx._("Unblocked {blocked_user}").format(blocked_user=sanitize_to_markdown(user)) embed["title"] = ctx._("Unblocked {blocked_user}").format(blocked_user=sanitize_to_markdown(user))
return embed return embed
@ -716,7 +716,7 @@ def embed_block_unblock(ctx, change):
@formatter.compact(event="block/unblock") @formatter.compact(event="block/unblock")
def compact_block_unblock(ctx, change): def compact_block_unblock(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
user = change["title"].split(':', 1)[1] user = change["title"].split(':', 1)[1]
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}").format(author=author, content = ctx._("[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}").format(author=author,
@ -734,7 +734,7 @@ def compact_block_unblock(ctx, change):
@formatter.embed(event="suppressed", mode="embed") @formatter.embed(event="suppressed", mode="embed")
def embed_suppressed(ctx, change): def embed_suppressed(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed["url"] = create_article_path("") embed["url"] = ctx.client.create_article_path("")
embed["title"] = ctx._("Action has been hidden by administration") embed["title"] = ctx._("Action has been hidden by administration")
embed["author"]["name"] = ctx._("Unknown") embed["author"]["name"] = ctx._("Unknown")
return embed return embed
@ -752,7 +752,7 @@ def compact_suppressed(ctx, change):
def embed_import_upload(ctx, change): def embed_import_upload(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx.ngettext("Imported {article} with {count} revision", embed["title"] = ctx.ngettext("Imported {article} with {count} revision",
"Imported {article} with {count} revisions", change["logparams"]["count"]).format( "Imported {article} with {count} revisions", change["logparams"]["count"]).format(
article=sanitize_to_markdown(change["title"]), count=change["logparams"]["count"]) article=sanitize_to_markdown(change["title"]), count=change["logparams"]["count"])
@ -761,7 +761,7 @@ def embed_import_upload(ctx, change):
@formatter.compact(event="import/upload", mode="compact") @formatter.compact(event="import/upload", mode="compact")
def compact_import_upload(ctx, change): def compact_import_upload(ctx, change):
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx.ngettext("[{author}]({author_url}) imported [{article}]({article_url}) with {count} revision{comment}", content = ctx.ngettext("[{author}]({author_url}) imported [{article}]({article_url}) with {count} revision{comment}",
@ -779,7 +779,7 @@ def compact_import_upload(ctx, change):
def embed_import_interwiki(ctx, change): def embed_import_interwiki(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx.ngettext("Imported {article} with {count} revision from \"{source}\"", embed["title"] = ctx.ngettext("Imported {article} with {count} revision from \"{source}\"",
"Imported {article} with {count} revisions from \"{source}\"", "Imported {article} with {count} revisions from \"{source}\"",
change["logparams"]["count"]).format( change["logparams"]["count"]).format(
@ -790,9 +790,9 @@ def embed_import_interwiki(ctx, change):
@formatter.compact(event="import/interwiki", mode="compact") @formatter.compact(event="import/interwiki", mode="compact")
def compact_import_interwiki(ctx, change): def compact_import_interwiki(ctx, change):
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
source_link = clean_link(create_article_path(change["logparams"]["interwiki_title"])) source_link = clean_link(ctx.client.create_article_path(change["logparams"]["interwiki_title"]))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx.ngettext( content = ctx.ngettext(
"[{author}]({author_url}) imported [{article}]({article_url}) with {count} revision from [{source}]({source_url}){comment}", "[{author}]({author_url}) imported [{article}]({article_url}) with {count} revision from [{source}]({source_url}){comment}",
@ -825,7 +825,7 @@ def get_changed_groups(change: dict, ctx: Context) -> [[str], [str]]:
@formatter.embed(event="rights/rights", aliases=["rights/autopromote"]) @formatter.embed(event="rights/rights", aliases=["rights/autopromote"])
def embed_rights_rights(ctx, change): def embed_rights_rights(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed["url"] = create_article_path(sanitize_to_url("User:{}".format(change["title"].split(":")[1]))) embed["url"] = ctx.client.create_article_path(sanitize_to_url("User:{}".format(change["title"].split(":")[1])))
if ctx.event == "rights/rights": if ctx.event == "rights/rights":
embed["title"] = ctx._("Changed group membership for {target}").format(target=sanitize_to_markdown(change["title"].split(":")[1])) embed["title"] = ctx._("Changed group membership for {target}").format(target=sanitize_to_markdown(change["title"].split(":")[1]))
else: else:
@ -845,7 +845,7 @@ def embed_rights_rights(ctx, change):
@formatter.compact(event="rights/rights", aliases=["rights/autopromote"]) @formatter.compact(event="rights/rights", aliases=["rights/autopromote"])
def compact_rights_rights(ctx, change): def compact_rights_rights(ctx, change):
link = clean_link(create_article_path(sanitize_to_url("User:{user}".format(user=change["title"].split(":")[1])))) link = clean_link(ctx.client.create_article_path(sanitize_to_url("User:{user}".format(user=change["title"].split(":")[1]))))
added, removed = get_changed_groups(change, ctx) added, removed = get_changed_groups(change, ctx)
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
@ -874,7 +874,7 @@ def compact_rights_rights(ctx, change):
def embed_merge_merge(ctx, change): def embed_merge_merge(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Merged revision histories of {article} into {dest}").format( embed["title"] = ctx._("Merged revision histories of {article} into {dest}").format(
article=sanitize_to_markdown(change["title"]), article=sanitize_to_markdown(change["title"]),
dest=sanitize_to_markdown(change["logparams"][ dest=sanitize_to_markdown(change["logparams"][
@ -886,8 +886,8 @@ def embed_merge_merge(ctx, change):
def compact_merge_merge(ctx, change): def compact_merge_merge(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
link_dest = clean_link(create_article_path(sanitize_to_url(change["logparams"]["dest_title"]))) link_dest = clean_link(ctx.client.create_article_path(sanitize_to_url(change["logparams"]["dest_title"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) merged revision histories of [{article}]({article_url}) into [{dest}]({dest_url}){comment}").format( "[{author}]({author_url}) merged revision histories of [{article}]({article_url}) into [{dest}]({dest_url}){comment}").format(
author=author, author_url=author_url, article=sanitize_to_markdown(change["title"]), article_url=link, dest_url=link_dest, author=author, author_url=author_url, article=sanitize_to_markdown(change["title"]), article_url=link, dest_url=link_dest,
@ -902,7 +902,7 @@ def compact_merge_merge(ctx, change):
def embed_newusers_autocreate(ctx, change): def embed_newusers_autocreate(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Created account automatically") embed["title"] = ctx._("Created account automatically")
return embed return embed
@ -922,7 +922,7 @@ def compact_newusers_autocreate(ctx, change):
def embed_newusers_create(ctx, change): def embed_newusers_create(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Created account") embed["title"] = ctx._("Created account")
return embed return embed
@ -941,7 +941,7 @@ def compact_newusers_create(ctx, change):
def embed_newusers_create2(ctx, change): def embed_newusers_create2(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Created account {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Created account {article}").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -950,7 +950,7 @@ def embed_newusers_create2(ctx, change):
def compact_newusers_create2(ctx, change): def compact_newusers_create2(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._("Account [{article}]({article_url}) was created by [{author}]({author_url}){comment}").format( content = ctx._("Account [{article}]({article_url}) was created by [{author}]({author_url}){comment}").format(
article=sanitize_to_markdown(change["title"]), article_url=link, author=author, author_url=author_url, comment=parsed_comment) article=sanitize_to_markdown(change["title"]), article_url=link, author=author, author_url=author_url, comment=parsed_comment)
return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content) return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content)
@ -963,7 +963,7 @@ def compact_newusers_create2(ctx, change):
def embed_newusers_byemail(ctx, change): def embed_newusers_byemail(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Created account {article} and password was sent by email").format( embed["title"] = ctx._("Created account {article} and password was sent by email").format(
article=sanitize_to_markdown(change["title"])) article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -973,7 +973,7 @@ def embed_newusers_byemail(ctx, change):
def compact_newusers_byemail(ctx, change): def compact_newusers_byemail(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._( content = ctx._(
"Account [{article}]({article_url}) was created by [{author}]({author_url}) and password was sent by email{comment}").format( "Account [{article}]({article_url}) was created by [{author}]({author_url}) and password was sent by email{comment}").format(
article=sanitize_to_markdown(change["title"]), article_url=link, author=author, author_url=author_url, comment=parsed_comment) article=sanitize_to_markdown(change["title"]), article_url=link, author=author, author_url=author_url, comment=parsed_comment)
@ -987,7 +987,7 @@ def compact_newusers_byemail(ctx, change):
def embed_newusers_newusers(ctx, change): def embed_newusers_newusers(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url("User:{}".format(change["user"]))) embed["url"] = ctx.client.create_article_path(sanitize_to_url("User:{}".format(change["user"])))
embed["title"] = ctx._("Created account") embed["title"] = ctx._("Created account")
return embed return embed
@ -1006,7 +1006,7 @@ def compact_newusers_newusers(ctx, change):
def embed_newusers_reclaim(ctx, change): def embed_newusers_reclaim(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url("User:{}".format(change["user"]))) embed["url"] = ctx.client.create_article_path(sanitize_to_url("User:{}".format(change["user"])))
embed["title"] = ctx._("Reclaimed account") embed["title"] = ctx._("Reclaimed account")
return embed return embed
@ -1025,7 +1025,7 @@ def compact_newusers_reclaim(ctx, change):
def embed_contentmodel_change(ctx, change): def embed_contentmodel_change(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Changed the content model of the page {article}").format( embed["title"] = ctx._("Changed the content model of the page {article}").format(
article=sanitize_to_markdown(change["title"])) article=sanitize_to_markdown(change["title"]))
embed["description"] = ctx._("Model changed from {old} to {new}: {reason}").format(old=change["logparams"]["oldmodel"], embed["description"] = ctx._("Model changed from {old} to {new}: {reason}").format(old=change["logparams"]["oldmodel"],
@ -1037,7 +1037,7 @@ def embed_contentmodel_change(ctx, change):
@formatter.compact(event="contentmodel/change") @formatter.compact(event="contentmodel/change")
def compact_contentmodel_change(ctx, change): def compact_contentmodel_change(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._( content = ctx._(
"[{author}]({author_url}) changed the content model of the page [{article}]({article_url}) from {old} to {new}{comment}").format( "[{author}]({author_url}) changed the content model of the page [{article}]({article_url}) from {old} to {new}{comment}").format(
@ -1054,7 +1054,7 @@ def compact_contentmodel_change(ctx, change):
def embed_contentmodel_new(ctx, change): def embed_contentmodel_new(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change, set_desc=False) embed_helper(ctx, embed, change, set_desc=False)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Created the page {article} using a non-default content model").format( embed["title"] = ctx._("Created the page {article} using a non-default content model").format(
article=sanitize_to_markdown(change["title"])) article=sanitize_to_markdown(change["title"]))
embed["description"] = ctx._("Created with model {new}: {reason}").format(new=change["logparams"]["newmodel"], embed["description"] = ctx._("Created with model {new}: {reason}").format(new=change["logparams"]["newmodel"],
@ -1065,7 +1065,7 @@ def embed_contentmodel_new(ctx, change):
@formatter.compact(event="contentmodel/new") @formatter.compact(event="contentmodel/new")
def compact_contentmodel_new(ctx, change): def compact_contentmodel_new(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._( content = ctx._(
"[{author}]({author_url}) created the page [{article}]({article_url}) using a non-default content model {new}{comment}").format( "[{author}]({author_url}) created the page [{article}]({article_url}) using a non-default content model {new}{comment}").format(
@ -1082,7 +1082,7 @@ def embed_managetags_create(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
ctx.client.refresh_internal_data() ctx.client.refresh_internal_data()
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Created the tag \"{tag}\"").format(tag=sanitize_to_markdown(change["logparams"]["tag"])) embed["title"] = ctx._("Created the tag \"{tag}\"").format(tag=sanitize_to_markdown(change["logparams"]["tag"]))
return embed return embed
@ -1090,7 +1090,7 @@ def embed_managetags_create(ctx, change):
@formatter.compact(event="managetags/create") @formatter.compact(event="managetags/create")
def compact_managetags_create(ctx, change): def compact_managetags_create(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
ctx.client.refresh_internal_data() ctx.client.refresh_internal_data()
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) created the [tag]({tag_url}) \"{tag}\"{comment}").format(author=author, content = ctx._("[{author}]({author_url}) created the [tag]({tag_url}) \"{tag}\"{comment}").format(author=author,
@ -1113,7 +1113,7 @@ def compact_managetags_create(ctx, change):
def embed_managetags_delete(ctx, change): def embed_managetags_delete(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
ctx.client.refresh_internal_data() ctx.client.refresh_internal_data()
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Deleted the tag \"{tag}\"").format(tag=sanitize_to_markdown(change["logparams"]["tag"])) embed["title"] = ctx._("Deleted the tag \"{tag}\"").format(tag=sanitize_to_markdown(change["logparams"]["tag"]))
if change["logparams"]["count"] > 0: if change["logparams"]["count"] > 0:
embed.add_field(ctx._('Removed from'), ctx.ngettext("{} revision or log entry", "{} revisions and/or log entries", embed.add_field(ctx._('Removed from'), ctx.ngettext("{} revision or log entry", "{} revisions and/or log entries",
@ -1125,7 +1125,7 @@ def embed_managetags_delete(ctx, change):
@formatter.compact(event="managetags/delete") @formatter.compact(event="managetags/delete")
def compact_managetags_delete(ctx, change): def compact_managetags_delete(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
ctx.client.refresh_internal_data() ctx.client.refresh_internal_data()
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
if change["logparams"]["count"] == 0: if change["logparams"]["count"] == 0:
@ -1155,7 +1155,7 @@ def compact_managetags_delete(ctx, change):
def embed_managetags_activate(ctx, change): def embed_managetags_activate(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Activated the tag \"{tag}\"").format(tag=sanitize_to_markdown(change["logparams"]["tag"])) embed["title"] = ctx._("Activated the tag \"{tag}\"").format(tag=sanitize_to_markdown(change["logparams"]["tag"]))
return embed return embed
@ -1163,7 +1163,7 @@ def embed_managetags_activate(ctx, change):
@formatter.compact(event="managetags/activate") @formatter.compact(event="managetags/activate")
def compact_managetags_activate(ctx, change): def compact_managetags_activate(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) activated the [tag]({tag_url}) \"{tag}\"{comment}").format(author=author, content = ctx._("[{author}]({author_url}) activated the [tag]({tag_url}) \"{tag}\"{comment}").format(author=author,
author_url=author_url, author_url=author_url,
@ -1183,7 +1183,7 @@ def compact_managetags_activate(ctx, change):
def embed_managetags_deactivate(ctx, change): def embed_managetags_deactivate(ctx, change):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Deactivated the tag \"{tag}\"").format(tag=sanitize_to_markdown(change["logparams"]["tag"])) embed["title"] = ctx._("Deactivated the tag \"{tag}\"").format(tag=sanitize_to_markdown(change["logparams"]["tag"]))
return embed return embed
@ -1191,7 +1191,7 @@ def embed_managetags_deactivate(ctx, change):
@formatter.compact(event="managetags/deactivate") @formatter.compact(event="managetags/deactivate")
def compact_managetags_deactivate(ctx, change): def compact_managetags_deactivate(ctx, change):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
content = ctx._("[{author}]({author_url}) deactivated the [tag]({tag_url}) \"{tag}\"{comment}").format(author=author, content = ctx._("[{author}]({author_url}) deactivated the [tag]({tag_url}) \"{tag}\"{comment}").format(author=author,
author_url=author_url, author_url=author_url,

View file

@ -18,7 +18,7 @@ import logging
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, compact_summary, clean_link, compact_author, create_article_path, sanitize_to_markdown, sanitize_to_url from src.api.util import embed_helper, compact_summary, clean_link, compact_author, sanitize_to_markdown, sanitize_to_url
# Renameuser - https://www.mediawiki.org/wiki/Extension:Renameuser # Renameuser - https://www.mediawiki.org/wiki/Extension:Renameuser
# renameuser/renameuser - Renaming a user # renameuser/renameuser - Renaming a user
@ -38,14 +38,14 @@ def embed_renameuser_renameuser(ctx: Context, change: dict) -> DiscordMessage:
embed["title"] = ctx._("Renamed user \"{old_name}\" to \"{new_name}\"").format( embed["title"] = ctx._("Renamed user \"{old_name}\" to \"{new_name}\"").format(
old_name=sanitize_to_markdown(change["logparams"]["olduser"]), old_name=sanitize_to_markdown(change["logparams"]["olduser"]),
new_name=sanitize_to_markdown(change["logparams"]["newuser"])) new_name=sanitize_to_markdown(change["logparams"]["newuser"]))
embed["url"] = create_article_path("User:" + sanitize_to_url(change["logparams"]["newuser"])) embed["url"] = ctx.client.create_article_path("User:" + sanitize_to_url(change["logparams"]["newuser"]))
return embed return embed
@formatter.compact(event="renameuser/renameuser") @formatter.compact(event="renameuser/renameuser")
def compact_renameuser_renameuser(ctx: Context, change: dict) -> DiscordMessage: def compact_renameuser_renameuser(ctx: Context, change: dict) -> DiscordMessage:
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path("User:" + sanitize_to_url(change["logparams"]["newuser"]))) link = clean_link(ctx.client.create_article_path("User:" + sanitize_to_url(change["logparams"]["newuser"])))
edits = change["logparams"]["edits"] edits = change["logparams"]["edits"]
parsed_comment = compact_summary(ctx) parsed_comment = compact_summary(ctx)
if edits > 0: if edits > 0:

View file

@ -17,8 +17,7 @@ import logging
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, compact_author, create_article_path, sanitize_to_markdown, sanitize_to_url, \ from src.api.util import embed_helper, compact_author, sanitize_to_markdown, sanitize_to_url, clean_link
clean_link
# SpriteSheet - https://www.mediawiki.org/wiki/Extension:SpriteSheet # SpriteSheet - https://www.mediawiki.org/wiki/Extension:SpriteSheet
@ -29,7 +28,7 @@ from src.api.util import embed_helper, compact_author, create_article_path, sani
def embed_sprite_sprite(ctx: Context, change: dict): def embed_sprite_sprite(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Edited the sprite for {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Edited the sprite for {article}").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -37,7 +36,7 @@ def embed_sprite_sprite(ctx: Context, change: dict):
@formatter.compact(event="sprite/sprite") @formatter.compact(event="sprite/sprite")
def compact_sprite_sprite(ctx: Context, change: dict): def compact_sprite_sprite(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._("[{author}]({author_url}) edited the sprite for [{article}]({article_url})").format(author=author, content = ctx._("[{author}]({author_url}) edited the sprite for [{article}]({article_url})").format(author=author,
author_url=author_url, author_url=author_url,
article=sanitize_to_markdown(change[ article=sanitize_to_markdown(change[
@ -52,7 +51,7 @@ def compact_sprite_sprite(ctx: Context, change: dict):
def embed_sprite_sheet(ctx: Context, change: dict): def embed_sprite_sheet(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Created the sprite sheet for {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Created the sprite sheet for {article}").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -60,7 +59,7 @@ def embed_sprite_sheet(ctx: Context, change: dict):
@formatter.compact(event="sprite/sheet") @formatter.compact(event="sprite/sheet")
def compact_sprite_sheet(ctx: Context, change: dict): def compact_sprite_sheet(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._("[{author}]({author_url}) created the sprite sheet for [{article}]({article_url})").format(author=author, author_url=author_url, article=sanitize_to_markdown(change["title"]), article_url=link) content = ctx._("[{author}]({author_url}) created the sprite sheet for [{article}]({article_url})").format(author=author, author_url=author_url, article=sanitize_to_markdown(change["title"]), article_url=link)
return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content) return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content)
@ -71,14 +70,14 @@ def compact_sprite_sheet(ctx: Context, change: dict):
def embed_sprite_slice(ctx: Context, change: dict): def embed_sprite_slice(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Edited the slice for {article}").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Edited the slice for {article}").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@formatter.compact(event="sprite/slice") @formatter.compact(event="sprite/slice")
def compact_sprite_slice(ctx: Context, change: dict): def compact_sprite_slice(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._("[{author}]({author_url}) edited the slice for [{article}]({article_url})").format(author=author, content = ctx._("[{author}]({author_url}) edited the slice for [{article}]({article_url})").format(author=author,
author_url=author_url, author_url=author_url,
article=sanitize_to_markdown(change[ article=sanitize_to_markdown(change[

View file

@ -17,8 +17,7 @@ import logging
from src.discord.message import DiscordMessage from src.discord.message import DiscordMessage
from src.api import formatter from src.api import formatter
from src.api.context import Context from src.api.context import Context
from src.api.util import embed_helper, compact_author, create_article_path, sanitize_to_markdown, sanitize_to_url, \ from src.api.util import embed_helper, compact_author, sanitize_to_markdown, sanitize_to_url, clean_link, compact_summary
clean_link, compact_summary
# I cried when I realized I have to migrate Translate extension logs, but this way I atone for my countless sins # I cried when I realized I have to migrate Translate extension logs, but this way I atone for my countless sins
# Translate - https://www.mediawiki.org/wiki/Extension:Translate # Translate - https://www.mediawiki.org/wiki/Extension:Translate
@ -29,7 +28,7 @@ from src.api.util import embed_helper, compact_author, create_article_path, sani
def embed_pagetranslation_mark(ctx: Context, change: dict): def embed_pagetranslation_mark(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
link = create_article_path(sanitize_to_url(change["title"])) link = ctx.client.create_article_path(sanitize_to_url(change["title"]))
if "?" in link: if "?" in link:
embed["url"] = link + "&oldid={}".format(change["logparams"]["revision"]) embed["url"] = link + "&oldid={}".format(change["logparams"]["revision"])
else: else:
@ -41,7 +40,7 @@ def embed_pagetranslation_mark(ctx: Context, change: dict):
@formatter.compact(event="pagetranslation/mark") @formatter.compact(event="pagetranslation/mark")
def compact_pagetranslation_mark(ctx: Context, change: dict): def compact_pagetranslation_mark(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change) author, author_url = compact_author(ctx, change)
link = create_article_path(sanitize_to_url(change["title"])) link = ctx.client.create_article_path(sanitize_to_url(change["title"]))
if "?" in link: if "?" in link:
link = link + "&oldid={}".format(change["logparams"]["revision"]) link = link + "&oldid={}".format(change["logparams"]["revision"])
else: else:
@ -62,7 +61,7 @@ def compact_pagetranslation_mark(ctx: Context, change: dict):
def embed_pagetranslation_unmark(ctx: Context, change: dict): def embed_pagetranslation_unmark(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Removed \"{article}\" from the translation system").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Removed \"{article}\" from the translation system").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -71,7 +70,7 @@ def embed_pagetranslation_unmark(ctx: Context, change: dict):
def compact_pagetranslation_unmark(ctx: Context, change: dict): def compact_pagetranslation_unmark(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) removed [{article}]({article_url}) from the translation system{comment}").format( "[{author}]({author_url}) removed [{article}]({article_url}) from the translation system{comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
@ -87,7 +86,7 @@ def compact_pagetranslation_unmark(ctx: Context, change: dict):
def embed_pagetranslation_moveok(ctx: Context, change: dict): def embed_pagetranslation_moveok(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["logparams"]["target"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["logparams"]["target"]))
embed["title"] = ctx._("Completed moving translation pages from \"{article}\" to \"{target}\"").format( embed["title"] = ctx._("Completed moving translation pages from \"{article}\" to \"{target}\"").format(
article=sanitize_to_markdown(change["title"]), target=sanitize_to_markdown(change["logparams"]["target"])) article=sanitize_to_markdown(change["title"]), target=sanitize_to_markdown(change["logparams"]["target"]))
return embed return embed
@ -97,7 +96,7 @@ def embed_pagetranslation_moveok(ctx: Context, change: dict):
def compact_pagetranslation_moveok(ctx: Context, change: dict): def compact_pagetranslation_moveok(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)
link = clean_link(create_article_path(sanitize_to_url(change["logparams"]["target"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["logparams"]["target"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) completed moving translation pages from *{article}* to [{target}]({target_url}){comment}").format( "[{author}]({author_url}) completed moving translation pages from *{article}* to [{target}]({target_url}){comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
@ -113,7 +112,7 @@ def compact_pagetranslation_moveok(ctx: Context, change: dict):
def embed_pagetranslation_movenok(ctx: Context, change: dict): def embed_pagetranslation_movenok(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Encountered a problem while moving \"{article}\" to \"{target}\"").format( embed["title"] = ctx._("Encountered a problem while moving \"{article}\" to \"{target}\"").format(
article=sanitize_to_markdown(change["title"]), target=sanitize_to_markdown(change["logparams"]["target"])) article=sanitize_to_markdown(change["title"]), target=sanitize_to_markdown(change["logparams"]["target"]))
return embed return embed
@ -123,8 +122,8 @@ def embed_pagetranslation_movenok(ctx: Context, change: dict):
def compact_pagetranslation_movenok(ctx: Context, change: dict): def compact_pagetranslation_movenok(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
target_url = clean_link(create_article_path(sanitize_to_url(change["logparams"]["target"]))) target_url = clean_link(ctx.client.create_article_path(sanitize_to_url(change["logparams"]["target"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) encountered a problem while moving [{article}]({article_url}) to [{target}]({target_url}){comment}").format( "[{author}]({author_url}) encountered a problem while moving [{article}]({article_url}) to [{target}]({target_url}){comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
@ -141,7 +140,7 @@ def compact_pagetranslation_movenok(ctx: Context, change: dict):
def embed_pagetranslation_deletefnok(ctx: Context, change: dict): def embed_pagetranslation_deletefnok(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Failed to delete \"{article}\" which belongs to translatable page \"{target}\"").format( embed["title"] = ctx._("Failed to delete \"{article}\" which belongs to translatable page \"{target}\"").format(
article=sanitize_to_markdown(change["title"]), target=sanitize_to_markdown(change["logparams"]["target"])) article=sanitize_to_markdown(change["title"]), target=sanitize_to_markdown(change["logparams"]["target"]))
return embed return embed
@ -151,8 +150,8 @@ def embed_pagetranslation_deletefnok(ctx: Context, change: dict):
def compact_pagetranslation_deletefnok(ctx: Context, change: dict): def compact_pagetranslation_deletefnok(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
target_url = clean_link(create_article_path(sanitize_to_url(change["logparams"]["target"]))) target_url = clean_link(ctx.client.create_article_path(sanitize_to_url(change["logparams"]["target"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) failed to delete [{article}]({article_url}) which belongs to translatable page [{target}]({target_url}){comment}").format( "[{author}]({author_url}) failed to delete [{article}]({article_url}) which belongs to translatable page [{target}]({target_url}){comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
@ -169,7 +168,7 @@ def compact_pagetranslation_deletefnok(ctx: Context, change: dict):
def embed_pagetranslation_deletelok(ctx: Context, change: dict): def embed_pagetranslation_deletelok(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Completed deletion of translation page \"{article}\"").format( embed["title"] = ctx._("Completed deletion of translation page \"{article}\"").format(
article=sanitize_to_markdown(change["title"])) article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -179,7 +178,7 @@ def embed_pagetranslation_deletelok(ctx: Context, change: dict):
def compact_pagetranslation_deletelok(ctx: Context, change: dict): def compact_pagetranslation_deletelok(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) completed deletion of translation page [{article}]({article_url}){comment}").format( "[{author}]({author_url}) completed deletion of translation page [{article}]({article_url}){comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
@ -195,7 +194,7 @@ def compact_pagetranslation_deletelok(ctx: Context, change: dict):
def embed_pagetranslation_deletelnok(ctx: Context, change: dict): def embed_pagetranslation_deletelnok(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Failed to delete \"{article}\" which belongs to translation page \"{target}\"").format( embed["title"] = ctx._("Failed to delete \"{article}\" which belongs to translation page \"{target}\"").format(
article=sanitize_to_markdown(change["title"]), target=sanitize_to_markdown(change["logparams"]["target"])) article=sanitize_to_markdown(change["title"]), target=sanitize_to_markdown(change["logparams"]["target"]))
return embed return embed
@ -205,8 +204,8 @@ def embed_pagetranslation_deletelnok(ctx: Context, change: dict):
def compact_pagetranslation_deletelnok(ctx: Context, change: dict): def compact_pagetranslation_deletelnok(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
target_url = clean_link(create_article_path(sanitize_to_url(change["logparams"]["target"]))) target_url = clean_link(ctx.client.create_article_path(sanitize_to_url(change["logparams"]["target"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) failed to delete [{article}]({article_url}) which belongs to translation page [{target}]({target_url}){comment}").format( "[{author}]({author_url}) failed to delete [{article}]({article_url}) which belongs to translation page [{target}]({target_url}){comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
@ -223,7 +222,7 @@ def compact_pagetranslation_deletelnok(ctx: Context, change: dict):
def embed_pagetranslation_encourage(ctx: Context, change: dict): def embed_pagetranslation_encourage(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Encouraged translation of \"{article}\"").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Encouraged translation of \"{article}\"").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -232,7 +231,7 @@ def embed_pagetranslation_encourage(ctx: Context, change: dict):
def compact_pagetranslation_encourage(ctx: Context, change: dict): def compact_pagetranslation_encourage(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._("[{author}]({author_url}) encouraged translation of [{article}]({article_url}){comment}").format( content = ctx._("[{author}]({author_url}) encouraged translation of [{article}]({article_url}){comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
article=sanitize_to_markdown(change["title"]), article_url=link, article=sanitize_to_markdown(change["title"]), article_url=link,
@ -247,7 +246,7 @@ def compact_pagetranslation_encourage(ctx: Context, change: dict):
def embed_pagetranslation_discourage(ctx: Context, change: dict): def embed_pagetranslation_discourage(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Discouraged translation of \"{article}\"").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Discouraged translation of \"{article}\"").format(article=sanitize_to_markdown(change["title"]))
return embed return embed
@ -256,7 +255,7 @@ def embed_pagetranslation_discourage(ctx: Context, change: dict):
def compact_pagetranslation_discourage(ctx: Context, change: dict): def compact_pagetranslation_discourage(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._("[{author}]({author_url}) discouraged translation of [{article}]({article_url}){comment}").format( content = ctx._("[{author}]({author_url}) discouraged translation of [{article}]({article_url}){comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
article=sanitize_to_markdown(change["title"]), article_url=link, article=sanitize_to_markdown(change["title"]), article_url=link,
@ -271,7 +270,7 @@ def compact_pagetranslation_discourage(ctx: Context, change: dict):
def embed_pagetranslation_prioritylanguages(ctx: Context, change: dict): def embed_pagetranslation_prioritylanguages(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
if "languages" in change["logparams"]: if "languages" in change["logparams"]:
languages = "`, `".join(change["logparams"]["languages"].split(",")) languages = "`, `".join(change["logparams"]["languages"].split(","))
if change["logparams"]["force"] == "on": if change["logparams"]["force"] == "on":
@ -289,7 +288,7 @@ def embed_pagetranslation_prioritylanguages(ctx: Context, change: dict):
def compact_pagetranslation_prioritylanguages(ctx: Context, change: dict): def compact_pagetranslation_prioritylanguages(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
if "languages" in change["logparams"]: if "languages" in change["logparams"]:
languages = "`, `".join(change["logparams"]["languages"].split(",")) languages = "`, `".join(change["logparams"]["languages"].split(","))
if change["logparams"]["force"] == "on": if change["logparams"]["force"] == "on":
@ -323,7 +322,7 @@ def compact_pagetranslation_prioritylanguages(ctx: Context, change: dict):
def embed_pagetranslation_associate(ctx: Context, change: dict): def embed_pagetranslation_associate(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Added translatable page \"{article}\" to aggregate group \"{group}\"").format( embed["title"] = ctx._("Added translatable page \"{article}\" to aggregate group \"{group}\"").format(
article=sanitize_to_markdown(change["title"]), group=change["logparams"]["aggregategroup"]) article=sanitize_to_markdown(change["title"]), group=change["logparams"]["aggregategroup"])
return embed return embed
@ -333,7 +332,7 @@ def embed_pagetranslation_associate(ctx: Context, change: dict):
def compact_pagetranslation_associate(ctx: Context, change: dict): def compact_pagetranslation_associate(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) added translatable page [{article}]({article_url}) to aggregate group \"{group}\"{comment}").format( "[{author}]({author_url}) added translatable page [{article}]({article_url}) to aggregate group \"{group}\"{comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
@ -349,7 +348,7 @@ def compact_pagetranslation_associate(ctx: Context, change: dict):
def embed_pagetranslation_dissociate(ctx: Context, change: dict): def embed_pagetranslation_dissociate(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Removed translatable page \"{article}\" from aggregate group \"{group}\"").format( embed["title"] = ctx._("Removed translatable page \"{article}\" from aggregate group \"{group}\"").format(
article=sanitize_to_markdown(change["title"]), group=change["logparams"]["aggregategroup"]) article=sanitize_to_markdown(change["title"]), group=change["logparams"]["aggregategroup"])
return embed return embed
@ -359,7 +358,7 @@ def embed_pagetranslation_dissociate(ctx: Context, change: dict):
def compact_pagetranslation_dissociate(ctx: Context, change: dict): def compact_pagetranslation_dissociate(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
content = ctx._( content = ctx._(
"[{author}]({author_url}) removed translatable page [{article}]({article_url}) from aggregate group \"{group}\"{comment}").format( "[{author}]({author_url}) removed translatable page [{article}]({article_url}) from aggregate group \"{group}\"{comment}").format(
author=author, author_url=author_url, author=author, author_url=author_url,
@ -375,7 +374,7 @@ def compact_pagetranslation_dissociate(ctx: Context, change: dict):
def embed_translationreview_message(ctx: Context, change: dict): def embed_translationreview_message(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
link = create_article_path(sanitize_to_url(change["title"])) link = ctx.client.create_article_path(sanitize_to_url(change["title"]))
if "?" in link: if "?" in link:
embed["url"] = link + "&oldid={}".format(change["logparams"]["revision"]) embed["url"] = link + "&oldid={}".format(change["logparams"]["revision"])
else: else:
@ -388,7 +387,7 @@ def embed_translationreview_message(ctx: Context, change: dict):
def compact_translationreview_message(ctx: Context, change: dict): def compact_translationreview_message(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)
link = create_article_path(sanitize_to_url(change["title"])) link = ctx.client.create_article_path(sanitize_to_url(change["title"]))
if "?" in link: if "?" in link:
link = link + "&oldid={}".format(change["logparams"]["revision"]) link = link + "&oldid={}".format(change["logparams"]["revision"])
else: else:
@ -408,7 +407,7 @@ def compact_translationreview_message(ctx: Context, change: dict):
def embed_translationreview_group(ctx: Context, change: dict): def embed_translationreview_group(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
embed["title"] = ctx._("Changed the state of `{language}` translations of \"{article}\"").format( embed["title"] = ctx._("Changed the state of `{language}` translations of \"{article}\"").format(
language=change["logparams"]["language"], article=sanitize_to_markdown(change["title"])) language=change["logparams"]["language"], article=sanitize_to_markdown(change["title"]))
if "old-state" in change["logparams"]: if "old-state" in change["logparams"]:
@ -421,7 +420,7 @@ def embed_translationreview_group(ctx: Context, change: dict):
def compact_translationreview_group(ctx: Context, change: dict): def compact_translationreview_group(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
if "old-state" in change["logparams"]: if "old-state" in change["logparams"]:
content = ctx._( content = ctx._(
"[{author}]({author_url}) changed the state of `{language}` translations of [{article}]({article_url}) from `{old_state}` to `{new_state}`{comment}").format( "[{author}]({author_url}) changed the state of `{language}` translations of [{article}]({article_url}) from `{old_state}` to `{new_state}`{comment}").format(
@ -455,7 +454,7 @@ def get_languages(change: dict, ctx: Context):
def embed_pagelang_pagelang(ctx: Context, change: dict): def embed_pagelang_pagelang(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change) embed_helper(ctx, embed, change)
embed["url"] = create_article_path(sanitize_to_url(change["title"])) embed["url"] = ctx.client.create_article_path(sanitize_to_url(change["title"]))
old_lang, new_lang = get_languages(change, ctx) old_lang, new_lang = get_languages(change, ctx)
embed["title"] = ctx._("Changed the language of \"{article}\"").format(article=sanitize_to_markdown(change["title"])) embed["title"] = ctx._("Changed the language of \"{article}\"").format(article=sanitize_to_markdown(change["title"]))
embed.add_field(ctx._("Old language"), old_lang, inline=True) embed.add_field(ctx._("Old language"), old_lang, inline=True)
@ -467,7 +466,7 @@ def embed_pagelang_pagelang(ctx: Context, change: dict):
def compact_pagelang_pagelang(ctx: Context, change: dict): def compact_pagelang_pagelang(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)
link = clean_link(create_article_path(sanitize_to_url(change["title"]))) link = clean_link(ctx.client.create_article_path(sanitize_to_url(change["title"])))
old_lang, new_lang = get_languages(change, ctx) old_lang, new_lang = get_languages(change, ctx)
content = ctx._( content = ctx._(
"[{author}]({author_url}) changed the language of [{article}]({article_url}) from {old_lang} to {new_lang}{comment}").format( "[{author}]({author_url}) changed the language of [{article}]({article_url}) from {old_lang} to {new_lang}{comment}").format(

View file

@ -18,7 +18,7 @@ from __future__ import annotations
from datetime import datetime from datetime import datetime
import src.misc import src.misc
import sched import sched
from typing import Union, Callable from typing import Union, Callable, Any
from collections import OrderedDict from collections import OrderedDict
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional
@ -42,7 +42,7 @@ class Client:
self.scheduler: sched.scheduler = sched.scheduler() self.scheduler: sched.scheduler = sched.scheduler()
#self.make_api_request: src.rc.wiki.__recent_changes.api_request = self.__recent_changes.api_request #self.make_api_request: src.rc.wiki.__recent_changes.api_request = self.__recent_changes.api_request
def schedule(self, function: Callable, *args: list, every: Optional[float] = None, at: Optional[str] = None, def schedule(self, function: Callable, *args: Any, every: Optional[float] = None, at: Optional[str] = None,
priority: int = 5, **kwargs: dict): priority: int = 5, **kwargs: dict):
"""Schedules a function indefinitely, does not execute function immediately """Schedules a function indefinitely, does not execute function immediately
@ -78,6 +78,10 @@ class Client:
"""Refreshes internal storage data for wiki tags and MediaWiki messages.""" """Refreshes internal storage data for wiki tags and MediaWiki messages."""
self.__recent_changes.init_info() self.__recent_changes.init_info()
def create_article_path(self, article: str) -> str:
"""Takes the string and creates an URL with it as the article name"""
return self.WIKI_ARTICLE_PATH.replace("$1", article)
@property @property
def namespaces(self) -> dict: def namespaces(self) -> dict:
"""Return a dict of namespaces, if None return empty dict""" """Return a dict of namespaces, if None return empty dict"""

View file

@ -73,11 +73,6 @@ def parse_mediawiki_changes(ctx: Context, content: str, embed: DiscordMessage) -
embed.add_field(_("Added"), "{data}".format(data=edit_diff.small_prev_ins), inline=True) embed.add_field(_("Added"), "{data}".format(data=edit_diff.small_prev_ins), inline=True)
def create_article_path(article: str) -> str:
"""Takes the string and creates an URL with it as the article name"""
return src.misc.WIKI_ARTICLE_PATH.replace("$1", article)
def compact_summary(ctx: Context) -> str: def compact_summary(ctx: Context) -> str:
"""Creates a comment for compact formatters""" """Creates a comment for compact formatters"""
if ctx.parsedcomment: if ctx.parsedcomment:
@ -88,7 +83,7 @@ def compact_author(ctx: Context, change: dict) -> (Optional[str], Optional[str])
"""Returns link to the author and the author itself respecting the settings""" """Returns link to the author and the author itself respecting the settings"""
author, author_url = None, None author, author_url = None, None
if ctx.event != "suppressed": if ctx.event != "suppressed":
author_url = clean_link(create_article_path("User:{user}".format(user=sanitize_to_url(change["user"])))) author_url = clean_link(ctx.client.create_article_path("User:{user}".format(user=sanitize_to_url(change["user"]))))
if "anon" in change: if "anon" in change:
if settings.get("hide_ips", False): if settings.get("hide_ips", False):
author = _("Unregistered user") author = _("Unregistered user")
@ -111,7 +106,7 @@ def embed_helper(ctx: Context, message: DiscordMessage, change: dict, set_user=T
if set_user: if set_user:
author = None author = None
if "anon" in change: if "anon" in change:
author_url = create_article_path("Special:Contributions/{user}".format(user=sanitize_to_url(change["user"]))) author_url = ctx.client.create_article_path("Special:Contributions/{user}".format(user=sanitize_to_url(change["user"])))
ip_mapper = ctx.client.get_ipmapper() ip_mapper = ctx.client.get_ipmapper()
logger.debug("current user: {} with cache of IPs: {}".format(change["user"], ip_mapper.keys())) logger.debug("current user: {} with cache of IPs: {}".format(change["user"], ip_mapper.keys()))
if change["user"] not in list(ip_mapper.keys()): if change["user"] not in list(ip_mapper.keys()):
@ -141,7 +136,7 @@ def embed_helper(ctx: Context, message: DiscordMessage, change: dict, set_user=T
author=change["user"] if settings.get("hide_ips", False) is False else _("Unregistered user"), author=change["user"] if settings.get("hide_ips", False) is False else _("Unregistered user"),
amount=ip_mapper[change["user"]]) amount=ip_mapper[change["user"]])
else: else:
author_url = create_article_path("User:{}".format(sanitize_to_url(change["user"]))) author_url = ctx.client.create_article_path("User:{}".format(sanitize_to_url(change["user"])))
author = change["user"] author = change["user"]
message.set_author(author, author_url) message.set_author(author, author_url)
if set_edit_meta: if set_edit_meta:

View file

@ -30,7 +30,7 @@ import src.api.client
from src.api.context import Context from src.api.context import Context
from src.api.hooks import formatter_hooks, pre_hooks, post_hooks from src.api.hooks import formatter_hooks, pre_hooks, post_hooks
from src.misc import add_to_dict, datafile, run_hooks from src.misc import add_to_dict, datafile, run_hooks
from src.api.util import create_article_path, default_message from src.api.util import default_message
from src.discord.queue import send_to_discord from src.discord.queue import send_to_discord
from src.discord.message import DiscordMessage, DiscordMessageMetadata from src.discord.message import DiscordMessage, DiscordMessageMetadata
from src.exceptions import ServerError, MediaWikiError, NoFormatter from src.exceptions import ServerError, MediaWikiError, NoFormatter
@ -122,7 +122,7 @@ def daily_overview_sync(data: dict) -> dict:
return data_output return data_output
def day_overview(): def day_overview(client):
try: try:
result = day_overview_request() result = day_overview_request()
except (ServerError, MediaWikiError): except (ServerError, MediaWikiError):
@ -135,8 +135,8 @@ def day_overview():
active_articles = [] active_articles = []
embed = DiscordMessage("embed", "daily_overview", settings["webhookURL"]) embed = DiscordMessage("embed", "daily_overview", settings["webhookURL"])
embed["title"] = _("Daily overview") embed["title"] = _("Daily overview")
embed["url"] = create_article_path("Special:Statistics") embed["url"] = client.create_article_path("Special:Statistics")
embed.set_author(settings["wikiname"], create_article_path("")) embed.set_author(settings["wikiname"], client.create_article_path(""))
if not result: if not result:
if not settings["send_empty_overview"]: if not settings["send_empty_overview"]:
return # no changes in this day return # no changes in this day
@ -320,7 +320,7 @@ if settings["rc_enabled"]:
if settings["overview"]: if settings["overview"]:
try: try:
overview_time = time.strptime(settings["overview_time"], '%H:%M') overview_time = time.strptime(settings["overview_time"], '%H:%M')
client.schedule(day_overview, at="{}:{}".format(str(overview_time.tm_hour).zfill(2), str(overview_time.tm_min).zfill(2))) client.schedule(day_overview, client, at="{}:{}".format(str(overview_time.tm_hour).zfill(2), str(overview_time.tm_min).zfill(2)))
del overview_time del overview_time
except ValueError: except ValueError:
logger.error("Invalid time format! Currentely: {}. Note: It needs to be in HH:MM format.".format( logger.error("Invalid time format! Currentely: {}. Note: It needs to be in HH:MM format.".format(
@ -336,7 +336,7 @@ if TESTING:
logger.debug("DEBUGGING ") logger.debug("DEBUGGING ")
storage["rcid"] = 1 storage["rcid"] = 1
wiki.fetch(amount=5) wiki.fetch(amount=5)
day_overview() day_overview(client)
import src.discussions import src.discussions
src.discussions.fetch_discussions() src.discussions.fetch_discussions()
logger.info("Test has succeeded without premature exceptions.") logger.info("Test has succeeded without premature exceptions.")