From 41e272fb0d03fc14e8db01b0720409219b1fde72 Mon Sep 17 00:00:00 2001 From: Markus-Rost <37275477+Markus-Rost@users.noreply.github.com> Date: Mon, 11 Apr 2022 16:00:24 +0200 Subject: [PATCH] add newusers/reclaim close #240 --- extensions/base/mediawiki.py | 19 +++++++++++++++++++ scripts/configbuilder.py | 2 +- settings.json.example | 7 ++++++- test/mockserver/configs/settings1.json | 7 ++++++- test/mockserver/configs/settings2.json | 7 ++++++- test/test_11311_migration.py | 4 ++-- 6 files changed, 40 insertions(+), 6 deletions(-) diff --git a/extensions/base/mediawiki.py b/extensions/base/mediawiki.py index fa480b4..db2eed4 100644 --- a/extensions/base/mediawiki.py +++ b/extensions/base/mediawiki.py @@ -1003,6 +1003,25 @@ def compact_newusers_newusers(ctx, change): return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content) +# newusers/reclaim - New user reclaimed + + +@formatter.embed(event="newusers/reclaim", mode="embed") +def embed_newusers_reclaim(ctx, change): + embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url) + embed_helper(ctx, embed, change) + embed["url"] = create_article_path(sanitize_to_url("User:{}".format(change["user"]))) + embed["title"] = _("Reclaimed account") + return embed + + +@formatter.compact(event="newusers/reclaim") +def compact_newusers_reclaim(ctx, change): + author, author_url = compact_author(ctx, change) + content = _("Account [{author}]({author_url}) was reclaimed").format(author=author, author_url=author_url) + return DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url, content=content) + + # contentmodel/change - Changing the content model of a page diff --git a/scripts/configbuilder.py b/scripts/configbuilder.py index 8677506..27ce7c8 100644 --- a/scripts/configbuilder.py +++ b/scripts/configbuilder.py @@ -311,7 +311,7 @@ class AdvancedSettings: @staticmethod def set_ignored_events(): - 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/comment-purged", "curseprofile/profile-edited", "curseprofile/comment-replied", "contentmodel/change", "sprite/sprite", "sprite/sheet", "sprite/slice", "managetags/create", "managetags/delete", "managetags/activate", "managetags/deactivate", "cargo/createtable", "cargo/deletetable", "cargo/recreatetable", "cargo/replacetable", "upload/revert", "newusers/create", "newusers/autocreate", "newusers/create2", "newusers/byemail", "newusers/newusers", "edit", "new", "external"] + 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/comment-purged", "curseprofile/profile-edited", "curseprofile/comment-replied", "contentmodel/change", "sprite/sprite", "sprite/sheet", "sprite/slice", "managetags/create", "managetags/delete", "managetags/activate", "managetags/deactivate", "cargo/createtable", "cargo/deletetable", "cargo/recreatetable", "cargo/replacetable", "upload/revert", "newusers/create", "newusers/autocreate", "newusers/create2", "newusers/byemail", "newusers/newusers", "newusers/reclaim", "edit", "new", "external"] option = default_or_custom( input( "Provide a list of entry types that are supposed to be ignored. Separate them using commas. Example: external, edit, upload/overwrite. (default: external)\n"), diff --git a/settings.json.example b/settings.json.example index 59e04a9..4d220a7 100644 --- a/settings.json.example +++ b/settings.json.example @@ -17,7 +17,7 @@ "embed": "", "compact": "" }, - "ignored": ["external", "newusers/create", "newusers/autocreate", "newusers/create2", "newusers/byemail", "newusers/newusers"], + "ignored": ["external", "newusers/create", "newusers/autocreate", "newusers/create2", "newusers/byemail", "newusers/newusers", "newusers/reclaim"], "show_updown_messages": true, "ignored_namespaces": [], "extensions_dir": "extensions", @@ -361,6 +361,11 @@ "color": 65280, "emoji": "🗿" }, + "newusers/reclaim": { + "icon": "", + "color": 65280, + "emoji": "🗿" + }, "managewiki/delete": { "icon": "", "color": 8421504, diff --git a/test/mockserver/configs/settings1.json b/test/mockserver/configs/settings1.json index fafa778..9579470 100644 --- a/test/mockserver/configs/settings1.json +++ b/test/mockserver/configs/settings1.json @@ -17,7 +17,7 @@ "embed": "", "compact": "" }, - "ignored": ["external", "newusers/create", "newusers/autocreate", "newusers/create2", "newusers/byemail", "newusers/newusers"], + "ignored": ["external", "newusers/create", "newusers/autocreate", "newusers/create2", "newusers/byemail", "newusers/newusers", "newusers/reclaim"], "show_updown_messages": true, "ignored_namespaces": [], "extensions_dir": "extensions", @@ -363,6 +363,11 @@ "color": 65280, "emoji": "🗿" }, + "newusers/reclaim": { + "icon": "", + "color": 65280, + "emoji": "🗿" + }, "managewiki/delete": { "icon": "", "color": 8421504, diff --git a/test/mockserver/configs/settings2.json b/test/mockserver/configs/settings2.json index 4bdaecc..2c3714d 100644 --- a/test/mockserver/configs/settings2.json +++ b/test/mockserver/configs/settings2.json @@ -17,7 +17,7 @@ "embed": "", "compact": "" }, - "ignored": ["external", "newusers/create", "newusers/autocreate", "newusers/create2", "newusers/byemail", "newusers/newusers"], + "ignored": ["external", "newusers/create", "newusers/autocreate", "newusers/create2", "newusers/byemail", "newusers/newusers", "newusers/reclaim"], "show_updown_messages": true, "ignored_namespaces": [], "extensions_dir": "extensions", @@ -363,6 +363,11 @@ "color": 65280, "emoji": "🗿" }, + "newusers/reclaim": { + "icon": "", + "color": 65280, + "emoji": "🗿" + }, "managewiki/delete": { "icon": "", "color": 8421504, diff --git a/test/test_11311_migration.py b/test/test_11311_migration.py index 9909ed1..c634da0 100644 --- a/test/test_11311_migration.py +++ b/test/test_11311_migration.py @@ -17,8 +17,8 @@ import unittest import importlib import json -test_file = """{"cooldown":60,"wiki_url":"https://wreckit-woodhouse.fandom.com/","rc_enabled":true,"lang":"en","header":{"user-agent":"RcGcDw/{version}"},"limit":10,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitrefetch":28,"wikiname":"Wreck It Woodhouse","avatars":{"connection_failed":"https://i.imgur.com/2jWQEt1.png","connection_restored":"","no_event":"","embed":"","compact":""},"ignored":["external","newusers/create","newusers/autocreate","newusers/create2","newusers/byemail","newusers/newusers"],"show_updown_messages":true,"ignored_namespaces":[],"overview":false,"overview_time":"00:00","send_empty_overview":false,"license_detection":true,"license_regex_detect":"\\\\{\\\\{(license|lizenz|licence|copyright)","license_regex":"\\\\{\\\\{(license|lizenz|licence|copyright)(\\\\ |\\\\|)(?P.*?)\\\\}\\\\}","disallow_regexes":[],"wiki_bot_login":"","wiki_bot_password":"","show_added_categories":true,"show_bots":false,"show_abuselog":false,"hide_ips":false,"discord_message_cooldown":0,"auto_suppression":{"enabled":false,"db_location":":memory:"},"logging":{"version":1,"disable_existing_loggers":false,"formatters":{"standard":{"format":"%(name)s - %(levelname)s: %(message)s"}},"handlers":{"default":{"formatter":"standard","class":"logging.StreamHandler","stream":"ext://sys.stdout"}},"loggers":{"":{"level":0,"handlers":["default"]},"rcgcdw":{},"rcgcdw.misc":{}}},"appearance":{"mode":"embed","embed":{"show_edit_changes":false,"show_footer":true,"embed_images":true,"daily_overview":{"color":16312092,"icon":""},"new":{"icon":"https://i.imgur.com/6HIbEq8.png","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"edit":{"icon":"","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"upload/overwrite":{"icon":"https://i.imgur.com/egJpa81.png","color":12390624},"upload/upload":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"upload/revert":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"delete/delete":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/delete_redir":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/restore":{"icon":"https://i.imgur.com/9MnROIU.png","color":null},"delete/revision":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"delete/event":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"merge/merge":{"icon":"https://i.imgur.com/uQMK9XK.png","color":null},"move/move":{"icon":"https://i.imgur.com/eXz9dog.png","color":null},"move/move_redir":{"icon":"https://i.imgur.com/UtC3YX2.png","color":null},"block/block":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"block/unblock":{"icon":"https://i.imgur.com/bvtBJ8o.png","color":1},"block/reblock":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"protect/protect":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/modify":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/move_prot":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/unprotect":{"icon":"https://i.imgur.com/2wN3Qcq.png","color":null},"import/upload":{"icon":"","color":null},"import/interwiki":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"rights/rights":{"icon":"","color":null},"rights/autopromote":{"icon":"","color":null},"abusefilter/abusefilter":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/modify":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/create":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"interwiki/iw_add":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_edit":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_delete":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"curseprofile/comment-created":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-edited":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-deleted":{"icon":"","color":null},"curseprofile/comment-purged":{"icon":"","color":null},"curseprofile/comment-replied":{"icon":"https://i.imgur.com/hkyYsI1.png","color":null},"curseprofile/profile-edited":{"icon":"","color":null},"contentmodel/change":{"icon":"","color":null},"cargo/deletetable":{"icon":"","color":null},"cargo/createtable":{"icon":"","color":null},"cargo/replacetable":{"icon":"","color":null},"cargo/recreatetable":{"icon":"","color":null},"sprite/sprite":{"icon":"","color":null},"sprite/sheet":{"icon":"","color":null},"sprite/slice":{"icon":"","color":null},"managetags/create":{"icon":"","color":null},"managetags/delete":{"icon":"","color":null},"managetags/activate":{"icon":"","color":null},"managetags/deactivate":{"icon":"","color":null},"tag/update":{"icon":"","color":null},"suppressed":{"icon":"https://i.imgur.com/1gps6EZ.png","color":8092539},"discussion/forum/post":{"icon":"","color":null},"discussion/forum/reply":{"icon":"","color":null},"discussion/forum/poll":{"icon":"","color":null},"discussion/forum/quiz":{"icon":"","color":null},"discussion/wall/post":{"icon":"","color":null},"discussion/wall/reply":{"icon":"","color":null},"discussion/comment/post":{"icon":"","color":null},"discussion/comment/reply":{"icon":"","color":null}}},"fandom_discussions":{"enabled":false,"wiki_id":1885853,"wiki_url":"https://wikibot.fandom.com/","cooldown":60,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limit":5,"appearance":{"mode":"embed","embed":{"show_content":true}},"show_forums":[]}}""" -result_file = """{"cooldown":60,"wiki_url":"https://wreckit-woodhouse.fandom.com/","rc_enabled":true,"lang":"en","header":{"user-agent":"RcGcDw/{version}"},"limit":10,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitrefetch":28,"wikiname":"Wreck It Woodhouse","avatars":{"connection_failed":"https://i.imgur.com/2jWQEt1.png","connection_restored":"","no_event":"","embed":"","compact":""},"ignored":["external","newusers/create","newusers/autocreate","newusers/create2","newusers/byemail","newusers/newusers"],"show_updown_messages":true,"ignored_namespaces":[],"overview":false,"overview_time":"00:00","send_empty_overview":false,"license_detection":true,"license_regex_detect":"\\\\{\\\\{(license|lizenz|licence|copyright)","license_regex":"\\\\{\\\\{(license|lizenz|licence|copyright)(\\\\ |\\\\|)(?P.*?)\\\\}\\\\}","disallow_regexes":[],"wiki_bot_login":"","wiki_bot_password":"","show_added_categories":true,"show_bots":false,"show_abuselog":false,"hide_ips":false,"discord_message_cooldown":0,"auto_suppression":{"enabled":false,"db_location":":memory:"},"logging":{"version":1,"disable_existing_loggers":false,"formatters":{"standard":{"format":"%(name)s - %(levelname)s: %(message)s"}},"handlers":{"default":{"formatter":"standard","class":"logging.StreamHandler","stream":"ext://sys.stdout"}},"loggers":{"":{"level":0,"handlers":["default"]},"rcgcdw":{},"rcgcdw.misc":{}}},"appearance":{"mode":"embed","embed":{"show_edit_changes":false,"show_footer":true,"embed_images":true,"daily_overview":{"color":16312092,"icon":""},"new":{"icon":"https://i.imgur.com/6HIbEq8.png","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"edit":{"icon":"","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"upload/overwrite":{"icon":"https://i.imgur.com/egJpa81.png","color":12390624},"upload/upload":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"upload/revert":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"delete/delete":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/delete_redir":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/restore":{"icon":"https://i.imgur.com/9MnROIU.png","color":null},"delete/revision":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"delete/event":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"merge/merge":{"icon":"https://i.imgur.com/uQMK9XK.png","color":null},"move/move":{"icon":"https://i.imgur.com/eXz9dog.png","color":null},"move/move_redir":{"icon":"https://i.imgur.com/UtC3YX2.png","color":null},"block/block":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"block/unblock":{"icon":"https://i.imgur.com/bvtBJ8o.png","color":1},"block/reblock":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"protect/protect":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/modify":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/move_prot":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/unprotect":{"icon":"https://i.imgur.com/2wN3Qcq.png","color":null},"import/upload":{"icon":"","color":null},"import/interwiki":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"rights/rights":{"icon":"","color":null},"rights/autopromote":{"icon":"","color":null},"abusefilter/abusefilter":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/modify":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/create":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"interwiki/iw_add":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_edit":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_delete":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"curseprofile/comment-created":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-edited":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-deleted":{"icon":"","color":null},"curseprofile/comment-purged":{"icon":"","color":null},"curseprofile/comment-replied":{"icon":"https://i.imgur.com/hkyYsI1.png","color":null},"curseprofile/profile-edited":{"icon":"","color":null},"contentmodel/change":{"icon":"","color":null},"cargo/deletetable":{"icon":"","color":null},"cargo/createtable":{"icon":"","color":null},"cargo/replacetable":{"icon":"","color":null},"cargo/recreatetable":{"icon":"","color":null},"sprite/sprite":{"icon":"","color":null},"sprite/sheet":{"icon":"","color":null},"sprite/slice":{"icon":"","color":null},"managetags/create":{"icon":"","color":null},"managetags/delete":{"icon":"","color":null},"managetags/activate":{"icon":"","color":null},"managetags/deactivate":{"icon":"","color":null},"tag/update":{"icon":"","color":null},"suppressed":{"icon":"https://i.imgur.com/1gps6EZ.png","color":8092539},"discussion/forum/post":{"icon":"","color":null},"discussion/forum/reply":{"icon":"","color":null},"discussion/forum/poll":{"icon":"","color":null},"discussion/forum/quiz":{"icon":"","color":null},"discussion/wall/post":{"icon":"","color":null},"discussion/wall/reply":{"icon":"","color":null},"discussion/comment/post":{"icon":"","color":null},"discussion/comment/reply":{"icon":"","color":null}}},"fandom_discussions":{"enabled":false,"wiki_id":1885853,"wiki_url":"https://wikibot.fandom.com/","cooldown":60,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limit":5,"appearance":{"mode":"embed","embed":{"show_content":true}},"show_forums":[]}}""" +test_file = """{"cooldown":60,"wiki_url":"https://wreckit-woodhouse.fandom.com/","rc_enabled":true,"lang":"en","header":{"user-agent":"RcGcDw/{version}"},"limit":10,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitrefetch":28,"wikiname":"Wreck It Woodhouse","avatars":{"connection_failed":"https://i.imgur.com/2jWQEt1.png","connection_restored":"","no_event":"","embed":"","compact":""},"ignored":["external","newusers/create","newusers/autocreate","newusers/create2","newusers/byemail","newusers/newusers","newusers/reclaim"],"show_updown_messages":true,"ignored_namespaces":[],"overview":false,"overview_time":"00:00","send_empty_overview":false,"license_detection":true,"license_regex_detect":"\\\\{\\\\{(license|lizenz|licence|copyright)","license_regex":"\\\\{\\\\{(license|lizenz|licence|copyright)(\\\\ |\\\\|)(?P.*?)\\\\}\\\\}","disallow_regexes":[],"wiki_bot_login":"","wiki_bot_password":"","show_added_categories":true,"show_bots":false,"show_abuselog":false,"hide_ips":false,"discord_message_cooldown":0,"auto_suppression":{"enabled":false,"db_location":":memory:"},"logging":{"version":1,"disable_existing_loggers":false,"formatters":{"standard":{"format":"%(name)s - %(levelname)s: %(message)s"}},"handlers":{"default":{"formatter":"standard","class":"logging.StreamHandler","stream":"ext://sys.stdout"}},"loggers":{"":{"level":0,"handlers":["default"]},"rcgcdw":{},"rcgcdw.misc":{}}},"appearance":{"mode":"embed","embed":{"show_edit_changes":false,"show_footer":true,"embed_images":true,"daily_overview":{"color":16312092,"icon":""},"new":{"icon":"https://i.imgur.com/6HIbEq8.png","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"edit":{"icon":"","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"upload/overwrite":{"icon":"https://i.imgur.com/egJpa81.png","color":12390624},"upload/upload":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"upload/revert":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"delete/delete":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/delete_redir":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/restore":{"icon":"https://i.imgur.com/9MnROIU.png","color":null},"delete/revision":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"delete/event":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"merge/merge":{"icon":"https://i.imgur.com/uQMK9XK.png","color":null},"move/move":{"icon":"https://i.imgur.com/eXz9dog.png","color":null},"move/move_redir":{"icon":"https://i.imgur.com/UtC3YX2.png","color":null},"block/block":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"block/unblock":{"icon":"https://i.imgur.com/bvtBJ8o.png","color":1},"block/reblock":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"protect/protect":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/modify":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/move_prot":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/unprotect":{"icon":"https://i.imgur.com/2wN3Qcq.png","color":null},"import/upload":{"icon":"","color":null},"import/interwiki":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"rights/rights":{"icon":"","color":null},"rights/autopromote":{"icon":"","color":null},"abusefilter/abusefilter":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/modify":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/create":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"interwiki/iw_add":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_edit":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_delete":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"curseprofile/comment-created":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-edited":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-deleted":{"icon":"","color":null},"curseprofile/comment-purged":{"icon":"","color":null},"curseprofile/comment-replied":{"icon":"https://i.imgur.com/hkyYsI1.png","color":null},"curseprofile/profile-edited":{"icon":"","color":null},"contentmodel/change":{"icon":"","color":null},"cargo/deletetable":{"icon":"","color":null},"cargo/createtable":{"icon":"","color":null},"cargo/replacetable":{"icon":"","color":null},"cargo/recreatetable":{"icon":"","color":null},"sprite/sprite":{"icon":"","color":null},"sprite/sheet":{"icon":"","color":null},"sprite/slice":{"icon":"","color":null},"managetags/create":{"icon":"","color":null},"managetags/delete":{"icon":"","color":null},"managetags/activate":{"icon":"","color":null},"managetags/deactivate":{"icon":"","color":null},"tag/update":{"icon":"","color":null},"suppressed":{"icon":"https://i.imgur.com/1gps6EZ.png","color":8092539},"discussion/forum/post":{"icon":"","color":null},"discussion/forum/reply":{"icon":"","color":null},"discussion/forum/poll":{"icon":"","color":null},"discussion/forum/quiz":{"icon":"","color":null},"discussion/wall/post":{"icon":"","color":null},"discussion/wall/reply":{"icon":"","color":null},"discussion/comment/post":{"icon":"","color":null},"discussion/comment/reply":{"icon":"","color":null}}},"fandom_discussions":{"enabled":false,"wiki_id":1885853,"wiki_url":"https://wikibot.fandom.com/","cooldown":60,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limit":5,"appearance":{"mode":"embed","embed":{"show_content":true}},"show_forums":[]}}""" +result_file = """{"cooldown":60,"wiki_url":"https://wreckit-woodhouse.fandom.com/","rc_enabled":true,"lang":"en","header":{"user-agent":"RcGcDw/{version}"},"limit":10,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitrefetch":28,"wikiname":"Wreck It Woodhouse","avatars":{"connection_failed":"https://i.imgur.com/2jWQEt1.png","connection_restored":"","no_event":"","embed":"","compact":""},"ignored":["external","newusers/create","newusers/autocreate","newusers/create2","newusers/byemail","newusers/newusers","newusers/reclaim"],"show_updown_messages":true,"ignored_namespaces":[],"overview":false,"overview_time":"00:00","send_empty_overview":false,"license_detection":true,"license_regex_detect":"\\\\{\\\\{(license|lizenz|licence|copyright)","license_regex":"\\\\{\\\\{(license|lizenz|licence|copyright)(\\\\ |\\\\|)(?P.*?)\\\\}\\\\}","disallow_regexes":[],"wiki_bot_login":"","wiki_bot_password":"","show_added_categories":true,"show_bots":false,"show_abuselog":false,"hide_ips":false,"discord_message_cooldown":0,"auto_suppression":{"enabled":false,"db_location":":memory:"},"logging":{"version":1,"disable_existing_loggers":false,"formatters":{"standard":{"format":"%(name)s - %(levelname)s: %(message)s"}},"handlers":{"default":{"formatter":"standard","class":"logging.StreamHandler","stream":"ext://sys.stdout"}},"loggers":{"":{"level":0,"handlers":["default"]},"rcgcdw":{},"rcgcdw.misc":{}}},"appearance":{"mode":"embed","embed":{"show_edit_changes":false,"show_footer":true,"embed_images":true,"daily_overview":{"color":16312092,"icon":""},"new":{"icon":"https://i.imgur.com/6HIbEq8.png","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"edit":{"icon":"","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"upload/overwrite":{"icon":"https://i.imgur.com/egJpa81.png","color":12390624},"upload/upload":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"upload/revert":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"delete/delete":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/delete_redir":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/restore":{"icon":"https://i.imgur.com/9MnROIU.png","color":null},"delete/revision":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"delete/event":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"merge/merge":{"icon":"https://i.imgur.com/uQMK9XK.png","color":null},"move/move":{"icon":"https://i.imgur.com/eXz9dog.png","color":null},"move/move_redir":{"icon":"https://i.imgur.com/UtC3YX2.png","color":null},"block/block":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"block/unblock":{"icon":"https://i.imgur.com/bvtBJ8o.png","color":1},"block/reblock":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"protect/protect":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/modify":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/move_prot":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/unprotect":{"icon":"https://i.imgur.com/2wN3Qcq.png","color":null},"import/upload":{"icon":"","color":null},"import/interwiki":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"rights/rights":{"icon":"","color":null},"rights/autopromote":{"icon":"","color":null},"abusefilter/abusefilter":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/modify":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/create":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"interwiki/iw_add":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_edit":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_delete":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"curseprofile/comment-created":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-edited":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-deleted":{"icon":"","color":null},"curseprofile/comment-purged":{"icon":"","color":null},"curseprofile/comment-replied":{"icon":"https://i.imgur.com/hkyYsI1.png","color":null},"curseprofile/profile-edited":{"icon":"","color":null},"contentmodel/change":{"icon":"","color":null},"cargo/deletetable":{"icon":"","color":null},"cargo/createtable":{"icon":"","color":null},"cargo/replacetable":{"icon":"","color":null},"cargo/recreatetable":{"icon":"","color":null},"sprite/sprite":{"icon":"","color":null},"sprite/sheet":{"icon":"","color":null},"sprite/slice":{"icon":"","color":null},"managetags/create":{"icon":"","color":null},"managetags/delete":{"icon":"","color":null},"managetags/activate":{"icon":"","color":null},"managetags/deactivate":{"icon":"","color":null},"tag/update":{"icon":"","color":null},"suppressed":{"icon":"https://i.imgur.com/1gps6EZ.png","color":8092539},"discussion/forum/post":{"icon":"","color":null},"discussion/forum/reply":{"icon":"","color":null},"discussion/forum/poll":{"icon":"","color":null},"discussion/forum/quiz":{"icon":"","color":null},"discussion/wall/post":{"icon":"","color":null},"discussion/wall/reply":{"icon":"","color":null},"discussion/comment/post":{"icon":"","color":null},"discussion/comment/reply":{"icon":"","color":null}}},"fandom_discussions":{"enabled":false,"wiki_id":1885853,"wiki_url":"https://wikibot.fandom.com/","cooldown":60,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limit":5,"appearance":{"mode":"embed","embed":{"show_content":true}},"show_forums":[]}}""" class TestMWFormatter(unittest.TestCase):