mirror of
https://gitlab.com/chicken-riders/RcGcDw.git
synced 2025-02-23 00:24:09 +00:00
More work towards #61
This commit is contained in:
parent
f89ab0e598
commit
5311d3f2ca
516
rcgcdw.py
516
rcgcdw.py
|
@ -58,6 +58,7 @@ except FileNotFoundError:
|
||||||
lang.install()
|
lang.install()
|
||||||
ngettext = lang.ngettext
|
ngettext = lang.ngettext
|
||||||
|
|
||||||
|
supported_logs = ["protect/protect", "protect/modify", "protect/unprotect", "upload/overwrite", "upload/upload", "delete/delete", "delete/delete_redir", "delete/restore", "delete/revision", "delete/event", "import/upload", "import/interwiki", "merge/merge", "move/move", "move/move_redir", "protect/move_prot", "block/block", "block/unblock", "block/reblock", "rights/rights", "rights/autopromote", "abusefilter/modify", "abusefilter/create", "interwiki/iw_add", "interwiki/iw_edit", "interwiki/iw_delete", "curseprofile/comment-created", "curseprofile/comment-edited", "curseprofile/comment-deleted", "curseprofile/profile-edited", "curseprofile/comment-replied", "contentmodel/change", "sprite/sprite", "sprite/sheet", "sprite/slice", "managetags/create", "managetags/delete", "managetags/activate", "managetags/deactivate", "tag/update"]
|
||||||
|
|
||||||
class MWError(Exception):
|
class MWError(Exception):
|
||||||
pass
|
pass
|
||||||
|
@ -153,40 +154,41 @@ def send_to_discord(data):
|
||||||
time.sleep(2.5)
|
time.sleep(2.5)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def compact_formatter(action, change, parsed_comment, categories):
|
||||||
|
pass
|
||||||
|
|
||||||
def webhook_formatter(change, parseddomment, **params):
|
|
||||||
logging.debug("Received things: {thing}".format(thing=params))
|
def webhook_formatter(action, change, parsed_comment, categories):
|
||||||
colornumber = None if isinstance(STATIC["color"], str) else STATIC["color"]
|
|
||||||
data = {"embeds": []}
|
data = {"embeds": []}
|
||||||
embed = defaultdict(dict)
|
embed = defaultdict(dict)
|
||||||
if STATIC["ipaction"]:
|
if "anon" in change:
|
||||||
author_url = "https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"],
|
author_url = "https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"],
|
||||||
user=params["user"])
|
user=change["user"])
|
||||||
logging.debug("current user: {} with cache of IPs: {}".format(params["user"], recent_changes.map_ips.keys()))
|
logging.debug("current user: {} with cache of IPs: {}".format(change["user"], recent_changes.map_ips.keys()))
|
||||||
if params["user"] not in list(recent_changes.map_ips.keys()):
|
if change["user"] not in list(recent_changes.map_ips.keys()):
|
||||||
contibs = safe_read(recent_changes.safe_request(
|
contibs = safe_read(recent_changes.safe_request(
|
||||||
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=usercontribs&uclimit=max&ucuser={user}&ucstart={timestamp}&ucprop=".format(
|
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=usercontribs&uclimit=max&ucuser={user}&ucstart={timestamp}&ucprop=".format(
|
||||||
wiki=settings["wiki"], user=params["user"], timestamp=STATIC["timestamp"])), "query", "usercontribs")
|
wiki=settings["wiki"], user=change["user"], timestamp=change["timestamp"])), "query", "usercontribs")
|
||||||
if contibs is None:
|
if contibs is None:
|
||||||
logging.warning(
|
logging.warning(
|
||||||
"WARNING: Something went wrong when checking amount of contributions for given IP address")
|
"WARNING: Something went wrong when checking amount of contributions for given IP address")
|
||||||
params["user"] = params["user"] + "(?)"
|
change["user"] = change["user"] + "(?)"
|
||||||
else:
|
else:
|
||||||
recent_changes.map_ips[params["user"]] = len(contibs)
|
recent_changes.map_ips[change["user"]] = len(contibs)
|
||||||
logging.debug("1Current params user {} and state of map_ips {}".format(params["user"], recent_changes.map_ips))
|
logging.debug("1Current params user {} and state of map_ips {}".format(change["user"], recent_changes.map_ips))
|
||||||
params["user"] = "{author} ({contribs})".format(author=params["user"], contribs=len(contibs))
|
change["user"] = "{author} ({contribs})".format(author=change["user"], contribs=len(contibs))
|
||||||
else:
|
else:
|
||||||
logging.debug(
|
logging.debug(
|
||||||
"2Current params user {} and state of map_ips {}".format(params["user"], recent_changes.map_ips))
|
"2Current params user {} and state of map_ips {}".format(change["user"], recent_changes.map_ips))
|
||||||
if action in ("edit", "new"):
|
if action in ("edit", "new"):
|
||||||
recent_changes.map_ips[params["user"]] += 1
|
recent_changes.map_ips[change["user"]] += 1
|
||||||
params["user"] = "{author} ({amount})".format(author=params["user"],
|
change["user"] = "{author} ({amount})".format(author=change["user"],
|
||||||
amount=recent_changes.map_ips[params["user"]])
|
amount=recent_changes.map_ips[change["user"]])
|
||||||
else:
|
else:
|
||||||
author_url = "https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"],
|
author_url = "https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"],
|
||||||
user=params["user"].replace(" ", "_"))
|
user=change["user"].replace(" ", "_"))
|
||||||
if action in ("edit", "new"): # edit or new page
|
if action in ("edit", "new"): # edit or new page
|
||||||
editsize = params["size"]
|
editsize = change["newlen"] - change["oldlen"]
|
||||||
if editsize > 0:
|
if editsize > 0:
|
||||||
if editsize > 6032:
|
if editsize > 6032:
|
||||||
colornumber = 65280
|
colornumber = 65280
|
||||||
|
@ -200,19 +202,18 @@ def webhook_formatter(change, parseddomment, **params):
|
||||||
elif editsize == 0:
|
elif editsize == 0:
|
||||||
colornumber = 8750469
|
colornumber = 8750469
|
||||||
link = "https://{wiki}.gamepedia.com/index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format(
|
link = "https://{wiki}.gamepedia.com/index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format(
|
||||||
wiki=settings["wiki"], pageid=params["pageid"], diff=params["diff"], oldrev=params["oldrev"],
|
wiki=settings["wiki"], pageid=change["pageid"], diff=change["revid"], oldrev=change["old_revid"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = "{redirect}{article} ({new}{minor}{editsize})".format(redirect="⤷ " if STATIC["redirect"] else "", article=params["title"], editsize="+" + str(
|
embed["title"] = "{redirect}{article} ({new}{minor}{editsize})".format(redirect="⤷ " if "redirect" in change else "", article=change["title"], editsize="+" + str(
|
||||||
editsize) if editsize > 0 else editsize, new=_("(N!) ") if action == "new" else "",
|
editsize) if editsize > 0 else editsize, new=_("(N!) ") if action == "new" else "",
|
||||||
minor=_("m ") if action == "edit" and params[
|
minor=_("m ") if action == "edit" and "minor" in change else "")
|
||||||
"minor"] else "")
|
|
||||||
elif action in ("upload/overwrite", "upload/upload"): # sending files
|
elif action in ("upload/overwrite", "upload/upload"): # sending files
|
||||||
license = None
|
license = None
|
||||||
urls = safe_read(recent_changes.safe_request(
|
urls = safe_read(recent_changes.safe_request(
|
||||||
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=imageinfo&list=&meta=&titles={filename}&iiprop=timestamp%7Curl&iilimit=2".format(
|
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=imageinfo&list=&meta=&titles={filename}&iiprop=timestamp%7Curl&iilimit=2".format(
|
||||||
wiki=settings["wiki"], filename=params["title"])), "query", "pages")
|
wiki=settings["wiki"], filename=change["title"])), "query", "pages")
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
additional_info_retrieved = False
|
additional_info_retrieved = False
|
||||||
if urls is not None:
|
if urls is not None:
|
||||||
logging.debug(urls)
|
logging.debug(urls)
|
||||||
|
@ -222,21 +223,21 @@ def webhook_formatter(change, parseddomment, **params):
|
||||||
additional_info_retrieved = True
|
additional_info_retrieved = True
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
if params["overwrite"]:
|
if action == "upload/overwrite":
|
||||||
if additional_info_retrieved:
|
if additional_info_retrieved:
|
||||||
article_encoded = params["title"].replace(" ", "_").replace(')', '\)')
|
article_encoded = change["title"].replace(" ", "_").replace(')', '\)')
|
||||||
img_timestamp = [x for x in img_info[1]["timestamp"] if x.isdigit()]
|
img_timestamp = [x for x in img_info[1]["timestamp"] if x.isdigit()]
|
||||||
undolink = "https://{wiki}.gamepedia.com/index.php?title={filename}&action=revert&oldimage={timestamp}%21{filenamewon}".format(
|
undolink = "https://{wiki}.gamepedia.com/index.php?title={filename}&action=revert&oldimage={timestamp}%21{filenamewon}".format(
|
||||||
wiki=settings["wiki"], filename=article_encoded, timestamp="".join(img_timestamp),
|
wiki=settings["wiki"], filename=article_encoded, timestamp="".join(img_timestamp),
|
||||||
filenamewon=article_encoded.split(":", 1)[1])
|
filenamewon=article_encoded.split(":", 1)[1])
|
||||||
embed["fields"] = [{"name": _("Options"), "value": _("([preview]({link}) | [undo]({undolink}))").format(
|
embed["fields"] = [{"name": _("Options"), "value": _("([preview]({link}) | [undo]({undolink}))").format(
|
||||||
link=embed["image"]["url"], undolink=undolink)}]
|
link=embed["image"]["url"], undolink=undolink)}]
|
||||||
embed["title"] = _("Uploaded a new version of {name}").format(name=params["title"])
|
embed["title"] = _("Uploaded a new version of {name}").format(name=change["title"])
|
||||||
else:
|
else:
|
||||||
embed["title"] = _("Uploaded {name}").format(name=params["title"])
|
embed["title"] = _("Uploaded {name}").format(name=change["title"])
|
||||||
article_content = safe_read(recent_changes.safe_request(
|
article_content = safe_read(recent_changes.safe_request(
|
||||||
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=revisions&titles={article}&rvprop=content".format(
|
"https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=revisions&titles={article}&rvprop=content".format(
|
||||||
wiki=settings["wiki"], article=quote_plus(params["title"], safe=''))), "query", "pages")
|
wiki=settings["wiki"], article=quote_plus(change["title"], safe=''))), "query", "pages")
|
||||||
if article_content is None:
|
if article_content is None:
|
||||||
logging.warning("Something went wrong when getting license for the image")
|
logging.warning("Something went wrong when getting license for the image")
|
||||||
return 0
|
return 0
|
||||||
|
@ -262,44 +263,43 @@ def webhook_formatter(change, parseddomment, **params):
|
||||||
if additional_info_retrieved:
|
if additional_info_retrieved:
|
||||||
embed["fields"] = [
|
embed["fields"] = [
|
||||||
{"name": _("Options"), "value": _("([preview]({link}))").format(link=embed["image"]["url"])}]
|
{"name": _("Options"), "value": _("([preview]({link}))").format(link=embed["image"]["url"])}]
|
||||||
params["desc"] = _("{desc}\nLicense: {license}").format(desc=params["desc"],
|
parsed_comment = _("{desc}\nLicense: {license}").format(desc=parsed_comment,
|
||||||
license=license if license is not None else "?")
|
license=license if license is not None else "?")
|
||||||
elif action == "delete/delete":
|
elif action == "delete/delete":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Deleted page {article}").format(article=params["title"])
|
embed["title"] = _("Deleted page {article}").format(article=change["title"])
|
||||||
elif action == "delete/delete_redir":
|
elif action == "delete/delete_redir":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Deleted redirect {article} by overwriting").format(article=params["title"])
|
embed["title"] = _("Deleted redirect {article} by overwriting").format(article=change["title"])
|
||||||
elif action == "move/move":
|
elif action == "move/move":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["target"].replace(" ", "_"))
|
article=change["target"].replace(" ", "_"))
|
||||||
params["desc"] = "{supress}. {desc}".format(desc=params["desc"],
|
parsed_comment = "{supress}. {desc}".format(desc=parsed_comment,
|
||||||
supress=_("No redirect has been made") if params[
|
supress=_("No redirect has been made") if "suppressredirect" in change["logparams"] else _(
|
||||||
"supress"] is True else _(
|
|
||||||
"A redirect has been made"))
|
"A redirect has been made"))
|
||||||
embed["title"] = _("Moved {redirect}{article} to {target}").format(redirect="⤷ " if STATIC["redirect"] else "", article=params["title"], target=params["target"])
|
embed["title"] = _("Moved {redirect}{article} to {target}").format(redirect="⤷ " if "redirect" in change else "", article=change["title"], target=change["logparams"]['target_title'])
|
||||||
elif action == "move/move_redir":
|
elif action == "move/move_redir":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["target"].replace(" ", "_"))
|
article=change["logparams"]["target_title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Moved {redirect}{article} to {title} over redirect").format(redirect="⤷ " if STATIC["redirect"] else "", article=params["title"],
|
embed["title"] = _("Moved {redirect}{article} to {title} over redirect").format(redirect="⤷ " if "redirect" in change else "", article=change["title"],
|
||||||
title=params["target"])
|
title=change["logparams"]["target_title"])
|
||||||
elif action == "protect/move_prot":
|
elif action == "protect/move_prot":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["logparams"]["oldtitle_title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Moved protection settings from {redirect}{article} to {title}").format(redirect="⤷ " if STATIC["redirect"] else "", article=params["title"],
|
embed["title"] = _("Moved protection settings from {redirect}{article} to {title}").format(redirect="⤷ " if "redirect" in change else "", article=change["logparams"]["oldtitle_title"],
|
||||||
title=params["target"])
|
title=change["title"])
|
||||||
elif action == "block/block":
|
elif action == "block/block":
|
||||||
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
|
||||||
user=params["blocked_user"].replace(" ", "_").replace(')',
|
user=change["title"].replace(" ", "_").replace(')',
|
||||||
'\)'))
|
'\)'))
|
||||||
user = params["blocked_user"].split(':')[1]
|
user = change["title"].split(':')[1]
|
||||||
if params["duration"] == "infinite":
|
if change["logparams"]["duration"] == "infinite":
|
||||||
block_time = _("infinity and beyond")
|
block_time = _("infinity and beyond")
|
||||||
else:
|
else:
|
||||||
english_length = re.sub(r"(\d+)", "", params["duration"]) #note that translation won't work for millenia and century yet
|
english_length = re.sub(r"(\d+)", "", change["logparams"]["duration"]) #note that translation won't work for millenia and century yet
|
||||||
english_length_num = re.sub(r"(\D+)", "", params["duration"])
|
english_length_num = re.sub(r"(\D+)", "", change["logparams"]["duration"])
|
||||||
try:
|
try:
|
||||||
english_length = english_length.rstrip("s").strip()
|
english_length = english_length.rstrip("s").strip()
|
||||||
block_time = "{num} {translated_length}".format(num=english_length_num, translated_length=ngettext(english_length, english_length + "s", int(english_length_num)))
|
block_time = "{num} {translated_length}".format(num=english_length_num, translated_length=ngettext(english_length, english_length + "s", int(english_length_num)))
|
||||||
|
@ -309,139 +309,132 @@ def webhook_formatter(change, parseddomment, **params):
|
||||||
embed["title"] = _("Blocked {blocked_user} for {time}").format(blocked_user=user, time=block_time)
|
embed["title"] = _("Blocked {blocked_user} for {time}").format(blocked_user=user, time=block_time)
|
||||||
elif action == "block/reblock":
|
elif action == "block/reblock":
|
||||||
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
|
||||||
user=params["blocked_user"].replace(" ", "_").replace(')',
|
user=change["title"].replace(" ", "_").replace(')',
|
||||||
'\)'))
|
'\)'))
|
||||||
user = params["blocked_user"].split(':')[1]
|
user = change["title"].split(':')[1]
|
||||||
embed["title"] = _("Changed block settings for {blocked_user}").format(blocked_user=user)
|
embed["title"] = _("Changed block settings for {blocked_user}").format(blocked_user=user)
|
||||||
elif action == "block/unblock":
|
elif action == "block/unblock":
|
||||||
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"],
|
||||||
user=params["blocked_user"].replace(" ", "_").replace(')',
|
user=change["title"].replace(" ", "_").replace(')',
|
||||||
'\)'))
|
'\)'))
|
||||||
user = params["blocked_user"].split(':')[1]
|
user = change["title"].split(':')[1]
|
||||||
embed["title"] = _("Unblocked {blocked_user}").format(blocked_user=user)
|
embed["title"] = _("Unblocked {blocked_user}").format(blocked_user=user)
|
||||||
elif action == "curseprofile/comment-created":
|
elif action == "curseprofile/comment-created":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
|
||||||
commentid=params["commentid"])
|
commentid=change["logparams"]["4:comment_id"])
|
||||||
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) old way of linking
|
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) old way of linking
|
||||||
embed["title"] = _("Left a comment on {target}'s profile").format(target=params["target"]) if params[
|
embed["title"] = _("Left a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \
|
||||||
"target"] != \
|
change["user"] else _(
|
||||||
params[
|
|
||||||
"user"] else _(
|
|
||||||
"Left a comment on their own profile")
|
"Left a comment on their own profile")
|
||||||
elif action == "curseprofile/comment-replied":
|
elif action == "curseprofile/comment-replied":
|
||||||
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
|
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
|
||||||
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
|
||||||
commentid=params["commentid"])
|
commentid=change["logparams"]["4:comment_id"])
|
||||||
embed["title"] = _("Replied to a comment on {target}'s profile").format(target=params["target"]) if params[
|
embed["title"] = _("Replied to a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \
|
||||||
"target"] != \
|
change["user"] else _(
|
||||||
params[
|
|
||||||
"user"] else _(
|
|
||||||
"Replied to a comment on their own profile")
|
"Replied to a comment on their own profile")
|
||||||
elif action == "curseprofile/comment-edited":
|
elif action == "curseprofile/comment-edited":
|
||||||
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
|
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
|
||||||
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
|
||||||
commentid=params["commentid"])
|
commentid=change["logparams"]["4:comment_id"])
|
||||||
embed["title"] = _("Edited a comment on {target}'s profile").format(target=params["target"]) if params[
|
embed["title"] = _("Edited a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \
|
||||||
"target"] != \
|
change["user"] else _(
|
||||||
params[
|
|
||||||
"user"] else _(
|
|
||||||
"Edited a comment on their own profile")
|
"Edited a comment on their own profile")
|
||||||
elif action == "curseprofile/profile-edited":
|
elif action == "curseprofile/profile-edited":
|
||||||
link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"],
|
||||||
target=params["target"].replace(" ",
|
target=change["title"].split(':')[1].replace(" ",
|
||||||
"_").replace(
|
"_").replace(
|
||||||
')', '\)'))
|
')', '\)'))
|
||||||
if params["field"] == "profile-location":
|
if change["logparams"]['4:section'] == "profile-location":
|
||||||
field = _("Location")
|
field = _("Location")
|
||||||
elif params["field"] == "profile-aboutme":
|
elif change["logparams"]['4:section'] == "profile-aboutme":
|
||||||
field = _("About me")
|
field = _("About me")
|
||||||
elif params["field"] == "profile-link-google":
|
elif change["logparams"]['4:section'] == "profile-link-google":
|
||||||
field = _("Google link")
|
field = _("Google link")
|
||||||
elif params["field"] == "profile-link-facebook":
|
elif change["logparams"]['4:section'] == "profile-link-facebook":
|
||||||
field = _("Facebook link")
|
field = _("Facebook link")
|
||||||
elif params["field"] == "profile-link-twitter":
|
elif change["logparams"]['4:section'] == "profile-link-twitter":
|
||||||
field = _("Twitter link")
|
field = _("Twitter link")
|
||||||
elif params["field"] == "profile-link-reddit":
|
elif change["logparams"]['4:section'] == "profile-link-reddit":
|
||||||
field = _("Reddit link")
|
field = _("Reddit link")
|
||||||
elif params["field"] == "profile-link-twitch":
|
elif change["logparams"]['4:section'] == "profile-link-twitch":
|
||||||
field = _("Twitch link")
|
field = _("Twitch link")
|
||||||
elif params["field"] == "profile-link-psn":
|
elif change["logparams"]['4:section'] == "profile-link-psn":
|
||||||
field = _("PSN link")
|
field = _("PSN link")
|
||||||
elif params["field"] == "profile-link-vk":
|
elif change["logparams"]['4:section'] == "profile-link-vk":
|
||||||
field = _("VK link")
|
field = _("VK link")
|
||||||
elif params["field"] == "profile-link-xbl":
|
elif change["logparams"]['4:section'] == "profile-link-xbl":
|
||||||
field = _("XVL link")
|
field = _("XVL link")
|
||||||
elif params["field"] == "profile-link-steam":
|
elif change["logparams"]['4:section'] == "profile-link-steam":
|
||||||
field = _("Steam link")
|
field = _("Steam link")
|
||||||
else:
|
else:
|
||||||
field = _("Unknown")
|
field = _("Unknown")
|
||||||
embed["title"] = _("Edited {target}'s profile").format(target=params["target"]) if params["user"] != params[
|
embed["title"] = _("Edited {target}'s profile").format(target=change["title"].split(':')[1]) if change["user"] != change["title"].split(':')[1] else _("Edited their own profile")
|
||||||
"target"] else _("Edited their own profile")
|
parsed_comment = _("{field} field changed to: {desc}").format(field=field, desc=BeautifulSoup(change["parsedcomment"], "lxml").get_text())
|
||||||
params["desc"] = _("{field} field changed to: {desc}").format(field=field, desc=BeautifulSoup(params["desc"], "lxml").get_text())
|
|
||||||
elif action == "curseprofile/comment-deleted":
|
elif action == "curseprofile/comment-deleted":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"],
|
||||||
commentid=params["commentid"])
|
commentid=change["logparams"]["4:comment_id"])
|
||||||
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
|
# link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)'))
|
||||||
embed["title"] = _("Deleted a comment on {target}'s profile").format(target=params["target"])
|
embed["title"] = _("Deleted a comment on {target}'s profile").format(target=change["title"].split(':')[1])
|
||||||
elif action in ("rights/rights", "rights/autopromote"):
|
elif action in ("rights/rights", "rights/autopromote"):
|
||||||
link = "https://{wiki}.gamepedia.com/User:".format(wiki=settings["wiki"]) + params["title"].split(":")[1].replace(" ", "_")
|
link = "https://{wiki}.gamepedia.com/User:".format(wiki=settings["wiki"]) + change["title"].split(":")[1].replace(" ", "_")
|
||||||
if action == "rights/rights":
|
if action == "rights/rights":
|
||||||
embed["title"] = _("Changed group membership for {target}").format(target=params["title"].split(":")[1])
|
embed["title"] = _("Changed group membership for {target}").format(target=change["title"].split(":")[1])
|
||||||
else:
|
else:
|
||||||
params["user"] = _("System")
|
change["user"] = _("System")
|
||||||
author_url = ""
|
author_url = ""
|
||||||
embed["title"] = _("{target} got autopromoted to a new usergroup").format(
|
embed["title"] = _("{target} got autopromoted to a new usergroup").format(
|
||||||
target=params["title"].split(":")[1])
|
target=change["title"].split(":")[1])
|
||||||
if len(params["old_groups"]) < len(params["new_groups"]):
|
if len(change["logparams"]["oldgroups"]) < len(change["logparams"]["newgroups"]):
|
||||||
embed["thumbnail"]["url"] = "https://i.imgur.com/WnGhF5g.gif"
|
embed["thumbnail"]["url"] = "https://i.imgur.com/WnGhF5g.gif"
|
||||||
old_groups = []
|
old_groups = []
|
||||||
new_groups = []
|
new_groups = []
|
||||||
for name in params["old_groups"]:
|
for name in change["logparams"]["oldgroups"]:
|
||||||
old_groups.append(_(name))
|
old_groups.append(_(name))
|
||||||
for name in params["new_groups"]:
|
for name in change["logparams"]["newgroups"]:
|
||||||
new_groups.append(_(name))
|
new_groups.append(_(name))
|
||||||
if len(old_groups) == 0:
|
if len(old_groups) == 0:
|
||||||
old_groups = [_("none")]
|
old_groups = [_("none")]
|
||||||
if len(new_groups) == 0:
|
if len(new_groups) == 0:
|
||||||
new_groups = [_("none")]
|
new_groups = [_("none")]
|
||||||
reason = ": {desc}".format(desc=params["desc"]) if params["desc"] != _("No description provided") else ""
|
reason = ": {desc}".format(desc=parsed_comment) if parsed_comment != _("No description provided") else ""
|
||||||
params["desc"] = _("Groups changed from {old_groups} to {new_groups}{reason}").format(
|
parsed_comment = _("Groups changed from {old_groups} to {new_groups}{reason}").format(
|
||||||
old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), reason=reason)
|
old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), reason=reason)
|
||||||
elif action == "protect/protect":
|
elif action == "protect/protect":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Protected {target}").format(target=params["title"])
|
embed["title"] = _("Protected {target}").format(target=change["title"])
|
||||||
params["desc"] = "{settings}{cascade} | {reason}".format(settings=params["settings"],
|
parsed_comment = "{settings}{cascade} | {reason}".format(settings=change["logparams"]["description"],
|
||||||
cascade=_(" [cascading]") if params["cascade"] else "",
|
cascade=_(" [cascading]") if "cascade" in change["logparams"] else "",
|
||||||
reason=params["desc"])
|
reason=parsed_comment)
|
||||||
elif action == "protect/modify":
|
elif action == "protect/modify":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Changed protection level for {article}").format(article=params["title"])
|
embed["title"] = _("Changed protection level for {article}").format(article=change["title"])
|
||||||
params["desc"] = "{settings}{cascade} | {reason}".format(settings=params["settings"],
|
parsed_comment = "{settings}{cascade} | {reason}".format(settings=change["logparams"]["description"],
|
||||||
cascade=_(" [cascading]") if params["cascade"] else "",
|
cascade=_(" [cascading]") if "cascade" in change["logparams"] else "",
|
||||||
reason=params["desc"])
|
reason=parsed_comment)
|
||||||
elif action == "protect/unprotect":
|
elif action == "protect/unprotect":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Removed protection from {article}").format(article=params["title"])
|
embed["title"] = _("Removed protection from {article}").format(article=change["title"])
|
||||||
elif action == "delete/revision":
|
elif action == "delete/revision":
|
||||||
amount = len(params["amount"])
|
amount = len(change["logparams"]["ids"])
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = ngettext("Changed visibility of revision on page {article} ",
|
embed["title"] = 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=params["title"], amount=amount)
|
article=change["title"], amount=amount)
|
||||||
elif action == "import/upload":
|
elif action == "import/upload":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = ngettext("Imported {article} with {count} revision",
|
embed["title"] = ngettext("Imported {article} with {count} revision",
|
||||||
"Imported {article} with {count} revisions", params["amount"]).format(
|
"Imported {article} with {count} revisions", change["logparams"]["count"]).format(
|
||||||
article=params["title"], count=params["amount"])
|
article=change["title"], count=change["logparams"]["count"])
|
||||||
elif action == "delete/restore":
|
elif action == "delete/restore":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Restored {article}").format(article=params["title"])
|
embed["title"] = _("Restored {article}").format(article=change["title"])
|
||||||
elif action == "delete/event":
|
elif action == "delete/event":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Changed visibility of log events")
|
embed["title"] = _("Changed visibility of log events")
|
||||||
|
@ -449,84 +442,88 @@ def webhook_formatter(change, parseddomment, **params):
|
||||||
link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Imported interwiki")
|
embed["title"] = _("Imported interwiki")
|
||||||
elif action == "abusefilter/modify":
|
elif action == "abusefilter/modify":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(wiki=settings["wiki"], number=params["filternr"], historyid=params["historyid"])
|
link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(wiki=settings["wiki"], number=change["logparams"]['newId'], historyid=change["logparams"]["historyId"])
|
||||||
embed["title"] = _("Edited abuse filter number {number}").format(number=params["filternr"])
|
embed["title"] = _("Edited abuse filter number {number}").format(number=change["logparams"]['newId'])
|
||||||
elif action == "abusefilter/create":
|
elif action == "abusefilter/create":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/{number}".format(wiki=settings["wiki"], number=params["filternr"])
|
link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/{number}".format(wiki=settings["wiki"], number=change["logparams"]['newId'])
|
||||||
embed["title"] = _("Created abuse filter number {number}").format(number=params["filternr"])
|
embed["title"] = _("Created abuse filter number {number}").format(number=change["logparams"]['newId'])
|
||||||
elif action == "merge/merge":
|
elif action == "merge/merge":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Merged revision histories of {article} into {dest}").format(article=params["title"],
|
embed["title"] = _("Merged revision histories of {article} into {dest}").format(article=change["title"],
|
||||||
dest=params["destination"])
|
dest=change["logparams"]["dest_title"])
|
||||||
elif action == "interwiki/iw_add":
|
elif action == "interwiki/iw_add":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Added an entry to the interwiki table")
|
embed["title"] = _("Added an entry to the interwiki table")
|
||||||
params["desc"] = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=params["desc"],
|
parsed_comment = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=parsed_comment,
|
||||||
prefix=params["prefix"],
|
prefix=change["logparams"]['0'],
|
||||||
website=params["website"])
|
website=change["logparams"]['1'])
|
||||||
elif action == "interwiki/iw_edit":
|
elif action == "interwiki/iw_edit":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Edited an entry in interwiki table")
|
embed["title"] = _("Edited an entry in interwiki table")
|
||||||
params["desc"] = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=params["desc"],
|
parsed_comment = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=parsed_comment,
|
||||||
prefix=params["prefix"],
|
prefix=change["logparams"]['0'],
|
||||||
website=params["website"])
|
website=change["logparams"]['1'])
|
||||||
elif action == "interwiki/iw_delete":
|
elif action == "interwiki/iw_delete":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Deleted an entry in interwiki table")
|
embed["title"] = _("Deleted an entry in interwiki table")
|
||||||
params["desc"] = _("Prefix: {prefix} | {desc}").format(desc=params["desc"], prefix=params["prefix"])
|
parsed_comment = _("Prefix: {prefix} | {desc}").format(desc=parsed_comment, prefix=change["logparams"]['0'])
|
||||||
elif action == "contentmodel/change":
|
elif action == "contentmodel/change":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Changed the content model of the page {article}").format(article=params["title"])
|
embed["title"] = _("Changed the content model of the page {article}").format(article=change["title"])
|
||||||
params["desc"] = _("Model changed from {old} to {new}: {reason}").format(old=params["oldmodel"],
|
parsed_comment = _("Model changed from {old} to {new}: {reason}").format(old=change["logparams"]["oldmodel"],
|
||||||
new=params["newmodel"],
|
new=change["logparams"]["newmodel"],
|
||||||
reason=params["desc"])
|
reason=parsed_comment)
|
||||||
elif action == "sprite/sprite":
|
elif action == "sprite/sprite":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Edited the sprite for {article}").format(article=params["title"])
|
embed["title"] = _("Edited the sprite for {article}").format(article=change["title"])
|
||||||
elif action == "sprite/sheet":
|
elif action == "sprite/sheet":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Created the sprite sheet for {article}").format(article=params["title"])
|
embed["title"] = _("Created the sprite sheet for {article}").format(article=change["title"])
|
||||||
elif action == "sprite/slice":
|
elif action == "sprite/slice":
|
||||||
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"],
|
||||||
article=params["title"].replace(" ", "_"))
|
article=change["title"].replace(" ", "_"))
|
||||||
embed["title"] = _("Edited the slice for {article}").format(article=params["title"])
|
embed["title"] = _("Edited the slice for {article}").format(article=change["title"])
|
||||||
elif action == "managetags/create":
|
elif action == "managetags/create":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Created a tag \"{tag}\"").format(tag=params["additional"]["tag"])
|
embed["title"] = _("Created a tag \"{tag}\"").format(tag=change["logparams"]["tag"])
|
||||||
recent_changes.init_info()
|
recent_changes.init_info()
|
||||||
elif action == "managetags/delete":
|
elif action == "managetags/delete":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Deleted a tag \"{tag}\"").format(tag=params["additional"]["tag"])
|
embed["title"] = _("Deleted a tag \"{tag}\"").format(tag=change["logparams"]["tag"])
|
||||||
recent_changes.init_info()
|
recent_changes.init_info()
|
||||||
elif action == "managetags/activate":
|
elif action == "managetags/activate":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Activated a tag \"{tag}\"").format(tag=params["additional"]["tag"])
|
embed["title"] = _("Activated a tag \"{tag}\"").format(tag=change["logparams"]["tag"])
|
||||||
elif action == "managetags/deactivate":
|
elif action == "managetags/deactivate":
|
||||||
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Deactivated a tag \"{tag}\"").format(tag=params["additional"]["tag"])
|
embed["title"] = _("Deactivated a tag \"{tag}\"").format(tag=change["logparams"]["tag"])
|
||||||
elif action == "suppressed":
|
elif action == "suppressed":
|
||||||
link = "https://{wiki}.gamepedia.com/".format(wiki=settings["wiki"])
|
link = "https://{wiki}.gamepedia.com/".format(wiki=settings["wiki"])
|
||||||
embed["title"] = _("Action has been hidden by administration.")
|
embed["title"] = _("Action has been hidden by administration.")
|
||||||
else:
|
else:
|
||||||
logging.warning("No entry for {event} with params: {params}".format(event=action, params=params))
|
logging.warning("No entry for {event} with params: {params}".format(event=action, params=change))
|
||||||
embed["author"]["name"] = params["user"]
|
embed["author"]["name"] = change["user"]
|
||||||
embed["author"]["url"] = author_url
|
embed["author"]["url"] = author_url
|
||||||
embed["author"]["icon_url"] = STATIC["icon"]
|
embed["author"]["icon_url"] = settings["appearance"]["webhook"][action]["icon"]
|
||||||
embed["url"] = link
|
embed["url"] = link
|
||||||
if "desc" not in params:
|
embed["description"] = parsed_comment
|
||||||
params["desc"] = ""
|
if colornumber is None:
|
||||||
embed["description"] = params["desc"]
|
if settings["appearance"]["webhook"][action]["color"] is None:
|
||||||
embed["color"] = random.randrange(1, 16777215) if colornumber is None else math.floor(colornumber)
|
embed["color"] = random.randrange(1, 16777215)
|
||||||
embed["timestamp"] = STATIC["timestamp"]
|
else:
|
||||||
if STATIC["tags"]:
|
embed["color"] = settings["appearance"]["webhook"][action]["color"]
|
||||||
|
else:
|
||||||
|
embed["color"] = math.floor(colornumber)
|
||||||
|
embed["timestamp"] = change["timestamp"]
|
||||||
|
if "tags" in change and change["tags"]:
|
||||||
tag_displayname = []
|
tag_displayname = []
|
||||||
if "fields" not in embed:
|
if "fields" not in embed:
|
||||||
embed["fields"] = []
|
embed["fields"] = []
|
||||||
for tag in STATIC["tags"]:
|
for tag in change["tags"]:
|
||||||
if tag in recent_changes.tags:
|
if tag in recent_changes.tags:
|
||||||
if recent_changes.tags[tag] is None:
|
if recent_changes.tags[tag] is None:
|
||||||
continue # Ignore hidden tags
|
continue # Ignore hidden tags
|
||||||
|
@ -535,13 +532,13 @@ def webhook_formatter(change, parseddomment, **params):
|
||||||
else:
|
else:
|
||||||
tag_displayname.append(tag)
|
tag_displayname.append(tag)
|
||||||
embed["fields"].append({"name": _("Tags"), "value": ", ".join(tag_displayname)})
|
embed["fields"].append({"name": _("Tags"), "value": ", ".join(tag_displayname)})
|
||||||
logging.debug("Current params in edit action: {}".format(params))
|
logging.debug("Current params in edit action: {}".format(change))
|
||||||
if "changed_categories" in STATIC and STATIC["changed_categories"] is not None and not (len(STATIC["changed_categories"]["new"]) == 0 and len(STATIC["changed_categories"]["removed"]) == 0):
|
if categories is not None and not (len(categories["new"]) == 0 and len(categories["removed"]) == 0):
|
||||||
if "fields" not in embed:
|
if "fields" not in embed:
|
||||||
embed["fields"] = []
|
embed["fields"] = []
|
||||||
# embed["fields"].append({"name": _("Changed categories"), "value": ", ".join(params["new_categories"][0:15]) + ("" if (len(params["new_categories"]) < 15) else _(" and {} more").format(len(params["new_categories"])-14))})
|
# embed["fields"].append({"name": _("Changed categories"), "value": ", ".join(params["new_categories"][0:15]) + ("" if (len(params["new_categories"]) < 15) else _(" and {} more").format(len(params["new_categories"])-14))})
|
||||||
new_cat = (_("**Added**: ") + ", ".join(list(STATIC["changed_categories"]["new"])[0:16]) + ("\n" if len(STATIC["changed_categories"]["new"])<=15 else _(" and {} more\n").format(len(STATIC["changed_categories"]["new"])-15))) if STATIC["changed_categories"]["new"] else ""
|
new_cat = (_("**Added**: ") + ", ".join(list(categories["new"])[0:16]) + ("\n" if len(categories["new"])<=15 else _(" and {} more\n").format(len(categories["new"])-15))) if categories["new"] else ""
|
||||||
del_cat = (_("**Removed**: ") + ", ".join(list(STATIC["changed_categories"]["removed"])[0:16]) + ("" if len(STATIC["changed_categories"]["removed"])<=15 else _(" and {} more").format(len(STATIC["changed_categories"]["removed"])-15))) if STATIC["changed_categories"]["removed"] else ""
|
del_cat = (_("**Removed**: ") + ", ".join(list(categories["removed"])[0:16]) + ("" if len(categories["removed"])<=15 else _(" and {} more").format(len(categories["removed"])-15))) if categories["removed"] else ""
|
||||||
embed["fields"].append({"name": _("Changed categories"), "value": new_cat + del_cat})
|
embed["fields"].append({"name": _("Changed categories"), "value": new_cat + del_cat})
|
||||||
data["embeds"].append(dict(embed))
|
data["embeds"].append(dict(embed))
|
||||||
data['avatar_url'] = settings["avatars"]["embed"]
|
data['avatar_url'] = settings["avatars"]["embed"]
|
||||||
|
@ -574,191 +571,40 @@ def handle_discord_http(code, formatted_embed, result):
|
||||||
def essential_info(change, changed_categories):
|
def essential_info(change, changed_categories):
|
||||||
"""Prepares essential information for both embed and compact message format."""
|
"""Prepares essential information for both embed and compact message format."""
|
||||||
logging.debug(change)
|
logging.debug(change)
|
||||||
if ("actionhidden" in change or "suppressed" in change) and "suppressed" not in settings["ignored"]: # if event is hidden using supression
|
if ("actionhidden" in change or "suppressed" in change) and "suppressed" not in settings["ignored"]: # if event is hidden using suppression
|
||||||
# webhook_formatter("suppressed",
|
# webhook_formatter("suppressed",
|
||||||
# {"timestamp": change["timestamp"], "color": settings["appearance"]["suppressed"]["color"],
|
# {"timestamp": change["timestamp"], "color": settings["appearance"]["suppressed"]["color"],
|
||||||
# "icon": settings["appearance"]["suppressed"]["icon"]}, user=change["user"])
|
# "icon": settings["appearance"]["suppressed"]["icon"]}, user=change["user"])
|
||||||
return
|
appearance_mode("supressed", change, "", [])
|
||||||
if "commenthidden" not in change:
|
if "commenthidden" not in change:
|
||||||
LinkParser.feed(change["parsedcomment"])
|
LinkParser.feed(change["parsedcomment"])
|
||||||
parsedcomment = LinkParser.new_string
|
parsed_comment = LinkParser.new_string
|
||||||
LinkParser.new_string = ""
|
LinkParser.new_string = ""
|
||||||
else:
|
else:
|
||||||
parsedcomment = _("~~hidden~~")
|
parsed_comment = _("~~hidden~~")
|
||||||
if not parsedcomment:
|
if not parsed_comment:
|
||||||
parsedcomment = _("No description provided")
|
parsed_comment = _("No description provided")
|
||||||
parsedcomment = re.sub(r"(`|_|\*|~|<|>|{|}|\|\|)", "\\\\\\1", parsedcomment, 0)
|
parsed_comment = re.sub(r"(`|_|\*|~|<|>|{|}|\|\|)", "\\\\\\1", parsed_comment, 0)
|
||||||
if change["type"] == "edit" and "edit" not in settings["ignored"]:
|
if change["type"] in ["edit", "new"]:
|
||||||
logging.debug("List of categories in first_pass: {}".format(changed_categories))
|
logging.debug("List of categories in essential_info: {}".format(changed_categories))
|
||||||
if "userhidden" in change:
|
if "userhidden" in change:
|
||||||
change["user"] = _("hidden")
|
change["user"] = _("hidden")
|
||||||
elif change["type"] == "categorize":
|
identification_string = change["type"]
|
||||||
return
|
|
||||||
if settings["appearance"]["mode"] == "webhook":
|
|
||||||
webhook_formatter(change, parsedcomment, changed_categories)
|
|
||||||
elif settings["appearance"]["mode"] == "compact":
|
|
||||||
compact_formatter(change, parsedcomment, changed_categories)
|
|
||||||
else:
|
|
||||||
logging.critical("Unknown formatter!")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
def first_pass(
|
|
||||||
change, changed_categories): # I've decided to split the embed formatter and change handler, maybe it's more messy this way, I don't know
|
|
||||||
|
|
||||||
|
|
||||||
STATIC_VARS = {"timestamp": change["timestamp"], "tags": change["tags"], "redirect": (True if "redirect" in change else False), "ipaction": (True if "anon" in change else False), "changed_categories": changed_categories}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"]["edit"]["color"],
|
|
||||||
"icon": settings["appearance"]["edit"]["icon"]}}
|
|
||||||
webhook_formatter("edit", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"],
|
|
||||||
size=change["newlen"] - change["oldlen"], minor=True if "minor" in change else False)
|
|
||||||
elif change["type"] == "log":
|
elif change["type"] == "log":
|
||||||
combination = "{logtype}/{logaction}".format(logtype=change["logtype"], logaction=change["logaction"])
|
identification_string = "{logtype}/{logaction}".format(logtype=change["logtype"], logaction=change["logaction"])
|
||||||
if combination in settings["ignored"]:
|
if identification_string not in supported_logs:
|
||||||
|
logging.warning(
|
||||||
|
"This event is not implemented in the script. Please make an issue on the tracker attaching the following info: wiki url, time, and this information: {}".format(
|
||||||
|
change))
|
||||||
return
|
return
|
||||||
logging.debug("combination is {}".format(combination))
|
|
||||||
try:
|
|
||||||
STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"][combination]["color"],
|
|
||||||
"icon": settings["appearance"][combination]["icon"]}}
|
|
||||||
except KeyError:
|
|
||||||
STATIC_VARS = {**STATIC_VARS, **{"color": "", "icon": ""}}
|
|
||||||
logging.error("No value in the settings has been given for {}".format(combination))
|
|
||||||
if combination == "protect/protect":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
settings=change["logparams"]["description"], cascade=True if "cascade" in change["logparams"] else False)
|
|
||||||
elif combination == "protect/modify":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
settings=change["logparams"]["description"], cascade=True if "cascade" in change["logparams"] else False)
|
|
||||||
elif combination == "protect/unprotect":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
|
|
||||||
elif combination == "upload/overwrite":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
overwrite=True)
|
|
||||||
elif combination == "upload/upload":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
overwrite=False)
|
|
||||||
elif combination == "delete/delete":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
|
|
||||||
elif combination == "delete/delete_redir":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
|
|
||||||
elif combination == "delete/restore":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
|
|
||||||
elif combination == "delete/revision":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
amount=change["logparams"]["ids"])
|
|
||||||
elif combination == "delete/event":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment)
|
|
||||||
elif combination == "import/upload":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
amount=change["logparams"]["count"])
|
|
||||||
elif combination == "import/interwiki":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment)
|
|
||||||
elif combination == "merge/merge":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
destination=change["logparams"]["dest_title"])
|
|
||||||
elif combination == "move/move":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
supress=True if "suppressredirect" in change["logparams"] else False,
|
|
||||||
target=change["logparams"]['target_title'])
|
|
||||||
elif combination == "move/move_redir":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
target=change["logparams"]["target_title"])
|
|
||||||
elif combination == "protect/move_prot":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["logparams"]["oldtitle_title"], desc=parsedcomment,
|
|
||||||
target=change["title"])
|
|
||||||
elif combination == "block/block":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"],
|
|
||||||
desc=parsedcomment, duration=change["logparams"]["duration"])
|
|
||||||
elif combination == "block/unblock":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"],
|
|
||||||
desc=parsedcomment)
|
|
||||||
elif combination == "block/reblock":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"],
|
|
||||||
desc=parsedcomment)
|
|
||||||
elif combination == "rights/rights":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
old_groups=change["logparams"]["oldgroups"], new_groups=change["logparams"]["newgroups"])
|
|
||||||
elif combination == "rights/autopromote":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
old_groups=change["logparams"]["oldgroups"], new_groups=change["logparams"]["newgroups"])
|
|
||||||
elif combination == "abusefilter/modify":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
|
|
||||||
filternr=change["logparams"]['newId'], historyid=change["logparams"]["historyId"])
|
|
||||||
elif combination == "abusefilter/create":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
|
|
||||||
filternr=change["logparams"]['newId'])
|
|
||||||
elif combination == "interwiki/iw_add":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
|
|
||||||
prefix=change["logparams"]['0'], website=change["logparams"]['1'])
|
|
||||||
elif combination == "interwiki/iw_edit":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
|
|
||||||
prefix=change["logparams"]['0'], website=change["logparams"]['1'])
|
|
||||||
elif combination == "interwiki/iw_delete":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment,
|
|
||||||
prefix=change["logparams"]['0'])
|
|
||||||
elif combination == "curseprofile/comment-created":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
|
|
||||||
commentid=change["logparams"]["4:comment_id"])
|
|
||||||
elif combination == "curseprofile/comment-edited":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
|
|
||||||
commentid=change["logparams"]["4:comment_id"])
|
|
||||||
elif combination == "curseprofile/comment-deleted":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
|
|
||||||
commentid=change["logparams"]["4:comment_id"])
|
|
||||||
elif combination == "curseprofile/profile-edited":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
|
|
||||||
field=change["logparams"]['4:section'], desc=change["parsedcomment"])
|
|
||||||
elif combination == "curseprofile/comment-replied":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1],
|
|
||||||
commentid=change["logparams"]["4:comment_id"])
|
|
||||||
elif combination == "contentmodel/change":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
oldmodel=change["logparams"]["oldmodel"], newmodel=change["logparams"]["newmodel"])
|
|
||||||
elif combination == "sprite/sprite":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
|
|
||||||
elif combination == "sprite/sheet":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
|
|
||||||
elif combination == "sprite/slice":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
|
|
||||||
elif combination == "managetags/create":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
additional=change["logparams"])
|
|
||||||
elif combination == "managetags/delete":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
additional=change["logparams"])
|
|
||||||
elif combination == "managetags/activate":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
additional=change["logparams"])
|
|
||||||
elif combination == "managetags/deactivate":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
additional=change["logparams"])
|
|
||||||
elif combination == "tag/update":
|
|
||||||
webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment)
|
|
||||||
else:
|
|
||||||
logging.warning("No entry matches given change!")
|
|
||||||
logging.warning("Entry: {}".format(change))
|
|
||||||
send(_("Unable to process the event"), _("error"), settings["avatars"]["no_event"])
|
|
||||||
return
|
|
||||||
# elif change["type"] == "external": # not sure what happens then, but it's listed as possible type
|
|
||||||
# logging.warning("External event happened, ignoring.")
|
|
||||||
# print(change)
|
|
||||||
# return
|
|
||||||
elif change["type"] == "new" and "new" not in settings["ignored"]: # new page
|
|
||||||
STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"]["new"]["color"],
|
|
||||||
"icon": settings["appearance"]["new"]["icon"]}}
|
|
||||||
webhook_formatter("new", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment,
|
|
||||||
oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"],
|
|
||||||
size=change["newlen"])
|
|
||||||
elif change["type"] == "categorize":
|
elif change["type"] == "categorize":
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
logging.warning("This event is not implemented in the bot.")
|
logging.warning("This event is not implemented in the script. Please make an issue on the tracker attaching the following info: wiki url, time, and this information: {}".format(change))
|
||||||
logging.debug("Cannot process event {}".format(change))
|
|
||||||
return
|
return
|
||||||
|
if identification_string in settings["ignored"]:
|
||||||
|
return
|
||||||
|
appearance_mode(identification_string, change, parsed_comment, changed_categories)
|
||||||
|
|
||||||
def day_overview_request():
|
def day_overview_request():
|
||||||
logging.info("Fetching daily overview... This may take up to 30 seconds!")
|
logging.info("Fetching daily overview... This may take up to 30 seconds!")
|
||||||
|
@ -1082,7 +928,7 @@ class Recent_Changes_Class(object):
|
||||||
if clean and not (self.recent_id == 0 and change["rcid"] > self.file_id):
|
if clean and not (self.recent_id == 0 and change["rcid"] > self.file_id):
|
||||||
logging.debug("Rejected {val}".format(val=change["rcid"]))
|
logging.debug("Rejected {val}".format(val=change["rcid"]))
|
||||||
continue
|
continue
|
||||||
first_pass(change, categorize_events.get(change.get("revid"), None))
|
essential_info(change, categorize_events.get(change.get("revid"), None))
|
||||||
return change["rcid"]
|
return change["rcid"]
|
||||||
|
|
||||||
def safe_request(self, url):
|
def safe_request(self, url):
|
||||||
|
@ -1170,6 +1016,16 @@ class Recent_Changes_Class(object):
|
||||||
|
|
||||||
|
|
||||||
recent_changes = Recent_Changes_Class()
|
recent_changes = Recent_Changes_Class()
|
||||||
|
# Set the proper formatter
|
||||||
|
if settings["appearance"]["mode"] == "embed":
|
||||||
|
appearance_mode = webhook_formatter
|
||||||
|
elif settings["appearance"]["mode"] == "compact":
|
||||||
|
appearance_mode = compact_formatter
|
||||||
|
else:
|
||||||
|
logging.critical("Unknown formatter!")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Log in and download wiki information
|
||||||
try:
|
try:
|
||||||
if settings["wiki_bot_login"] and settings["wiki_bot_password"]:
|
if settings["wiki_bot_login"] and settings["wiki_bot_password"]:
|
||||||
recent_changes.log_in()
|
recent_changes.log_in()
|
||||||
|
|
Loading…
Reference in a new issue