This commit is contained in:
Frisk 2021-06-20 02:43:43 +02:00
parent 02dce0f3ae
commit a69cbecffd
No known key found for this signature in database
GPG key ID: 213F7C15068AF8AC
4 changed files with 42 additions and 12 deletions

View file

@ -73,7 +73,7 @@ def compact_abuselog(ctx: Context, change: dict):
# abusefilter/modify - AbuseFilter filter modification
@formatter.embed(event="abuselog/modify")
@formatter.embed(event="abusefilter/modify")
def embed_abuselog_modify(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change)
@ -84,7 +84,7 @@ def embed_abuselog_modify(ctx: Context, change: dict):
return embed
@formatter.compact(event="abuselog/modify")
@formatter.compact(event="abusefilter/modify")
def compact_abuselog_modify(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change)
link = clean_link(create_article_path(
@ -103,7 +103,7 @@ def compact_abuselog_modify(ctx: Context, change: dict):
# abusefilter/create - AbuseFilter filter creation
@formatter.embed(event="abuselog/create")
@formatter.embed(event="abusefilter/create")
def embed_abuselog_create(ctx: Context, change: dict):
embed = DiscordMessage(ctx.message_type, ctx.event, ctx.webhook_url)
embed_helper(ctx, embed, change)
@ -111,7 +111,7 @@ def embed_abuselog_create(ctx: Context, change: dict):
embed["title"] = _("Created abuse filter number {number}").format(number=change["logparams"]['newId'])
return embed
@formatter.compact(event="abuselog/create")
@formatter.compact(event="abusefilter/create")
def compact_abuselog_create(ctx: Context, change: dict):
author, author_url = compact_author(ctx, change)
link = clean_link(

View file

@ -16,20 +16,21 @@
# along with RcGcDw. If not, see <http://www.gnu.org/licenses/>.
import logging, schedule, requests
from typing import Dict, Any
from typing import Dict, Any, Optional
from src.configloader import settings
#from src.discussion_formatters import embed_formatter, compact_formatter
from src.misc import datafile, prepare_paths, run_hooks
from src.discord.queue import messagequeue, send_to_discord
from src.discord.message import DiscordMessageMetadata
from src.discord.message import DiscordMessageMetadata, DiscordMessage
from src.session import session
from src.exceptions import ArticleCommentError
from src.exceptions import ArticleCommentError, NoFormatter
from src.api.util import default_message
from src.api.context import Context
from src.api.hooks import formatter_hooks, pre_hooks, post_hooks
# Create a custom logger
discussion_logger = logging.getLogger("rcgcdw.disc")
@ -122,7 +123,15 @@ def parse_discussion_post(post, comment_pages):
event_type = f"discussion/{post_type.lower()}"
context.set_comment_page(comment_page)
run_hooks(pre_hooks, context, post)
discord_message = default_message(event_type, formatter_hooks)(context, post)
try:
discord_message = default_message(event_type, formatter_hooks)(context, post)
except NoFormatter:
return
except:
if settings.get("error_tolerance", 1) > 0:
discord_message: Optional[DiscordMessage] = None # It's handled by send_to_discord, we still want other code to run
else:
raise
metadata = DiscordMessageMetadata("POST")
run_hooks(post_hooks, discord_message, metadata, context, post)
send_to_discord(discord_message, metadata)

View file

@ -32,6 +32,10 @@ class ServerError(Exception):
"""Exception for when a request fails because of Server error"""
pass
class NoFormatter(Exception):
"""Exception to throw when there are no formatters"""
pass
class ClientError(Exception):
"""Exception for when a request failes because of Client error"""

View file

@ -33,7 +33,7 @@ from src.misc import add_to_dict, datafile, WIKI_API_PATH, LinkParser, run_hooks
from src.api.util import create_article_path, default_message
from src.discord.queue import send_to_discord
from src.discord.message import DiscordMessage, DiscordMessageMetadata
from src.exceptions import MWError, ServerError, MediaWikiError, BadRequest, ClientError
from src.exceptions import MWError, ServerError, MediaWikiError, BadRequest, ClientError, NoFormatter
from src.i18n import rcgcdw
from src.wiki import Wiki
@ -75,7 +75,7 @@ if settings["limitrefetch"] != -1 and os.path.exists("lastchange.txt") is True:
def no_formatter(ctx: Context, change: dict) -> None:
logger.warning(f"There is no formatter specified for {ctx.event}! Ignoring event.")
return
raise NoFormatter
formatter_hooks["no_formatter"] = no_formatter
@ -205,7 +205,16 @@ def rc_processor(change, changed_categories):
run_hooks(pre_hooks, context, change)
if ("actionhidden" in change or "suppressed" in change) and "suppressed" not in settings["ignored"]: # if event is hidden using suppression
context.event = "suppressed"
discord_message: Optional[DiscordMessage] = default_message("suppressed", formatter_hooks)(context, change)
try:
discord_message: Optional[DiscordMessage] = default_message("suppressed", formatter_hooks)(context, change)
except NoFormatter:
return
except:
if settings.get("error_tolerance", 1) > 0:
discord_message: Optional[
DiscordMessage] = None # It's handled by send_to_discord, we still want other code to run
else:
raise
else:
if "commenthidden" not in change:
LinkParser.feed(change.get("parsedcomment", ""))
@ -267,7 +276,15 @@ def abuselog_processing(entry):
context = Context(settings["appearance"]["mode"], settings["webhookURL"], client)
run_hooks(pre_hooks, context, entry)
context.event = action
discord_message: Optional[DiscordMessage] = default_message(action, formatter_hooks)(context, entry)
try:
discord_message: Optional[DiscordMessage] = default_message(action, formatter_hooks)(context, entry)
except NoFormatter:
return
except:
if settings.get("error_tolerance", 1) > 0:
discord_message: Optional[DiscordMessage] = None # It's handled by send_to_discord, we still want other code to run
else:
raise
metadata = DiscordMessageMetadata("POST")
run_hooks(post_hooks, discord_message, metadata, context, entry)
discord_message.finish_embed()