Fix stacked embed length check

This commit is contained in:
Markus-Rost 2020-12-22 11:47:26 +01:00
parent dbd57899ac
commit df3194d3af
3 changed files with 15 additions and 10 deletions

View file

@ -106,12 +106,17 @@ class DiscordMessage:
raise EmbedListFull raise EmbedListFull
self.webhook_object["embeds"].append(self.embed) self.webhook_object["embeds"].append(self.embed)
def set_author(self, name: str, url: str, icon_url=""): def set_author(self, name: str, url="", icon_url=""):
self.length += len(name) self.length += len(name)
self.embed["author"]["name"] = name self.embed["author"]["name"] = name
self.embed["author"]["url"] = url self.embed["author"]["url"] = url
self.embed["author"]["icon_url"] = icon_url self.embed["author"]["icon_url"] = icon_url
def set_footer(self, text: str, icon_url=""):
self.length += len(text)
self.embed["footer"]["text"] = text
self.embed["footer"]["icon_url"] = icon_url
def add_field(self, name, value, inline=False): def add_field(self, name, value, inline=False):
if "fields" not in self.embed: if "fields" not in self.embed:
self.embed["fields"] = [] self.embed["fields"] = []
@ -138,7 +143,7 @@ def stack_message_list(messages: list) -> list:
stackable = StackedDiscordMessage(messages[message_group_index]) stackable = StackedDiscordMessage(messages[message_group_index])
for message in messages[message_group_index + 1:message_group_index + 10]: for message in messages[message_group_index + 1:message_group_index + 10]:
try: try:
stackable.add_embed(message.embed) stackable.add_embed(message)
except EmbedListFull: except EmbedListFull:
break break
messages.remove(message) messages.remove(message)
@ -165,13 +170,14 @@ class StackedDiscordMessage(DiscordMessage):
def stack(self, messages: list): def stack(self, messages: list):
for message in messages: for message in messages:
self.add_embed(message.embed) self.add_embed(message)
def add_embed(self, embed): def add_embed(self, message):
if len(self) + len(embed) > 6000: if len(self) + len(message) > 6000:
raise EmbedListFull raise EmbedListFull
self.length += len(message)
self._setup_embed() self._setup_embed()
self.embed = embed self.embed = message.embed
self.finish_embed_message() self.finish_embed_message()

View file

@ -107,7 +107,7 @@ async def feeds_embed_formatter(post_type, post, message_target, wiki, article_p
else: # Fallback when model is not available else: # Fallback when model is not available
embed["description"] = post.get("rawContent", "") embed["description"] = post.get("rawContent", "")
if post["forumName"] is not None: if post["forumName"] is not None:
embed["footer"]["text"] = post["forumName"].replace("_", " ") embed.set_footer(post["forumName"].replace("_", " "))
embed["timestamp"] = datetime.datetime.fromtimestamp(post["creationDate"]["epochSecond"], tz=datetime.timezone.utc).isoformat() embed["timestamp"] = datetime.datetime.fromtimestamp(post["creationDate"]["epochSecond"], tz=datetime.timezone.utc).isoformat()
if post_type == "FORUM": if post_type == "FORUM":
if not post["isReply"]: if not post["isReply"]:
@ -174,7 +174,7 @@ async def feeds_embed_formatter(post_type, post, message_target, wiki, article_p
embed.event_type = "discussion/comment/reply" embed.event_type = "discussion/comment/reply"
embed["url"] = "{url}?commentId={commentId}&replyId={replyId}".format(url=article_page["fullUrl"], commentId=post["threadId"], replyId=post["id"]) embed["url"] = "{url}?commentId={commentId}&replyId={replyId}".format(url=article_page["fullUrl"], commentId=post["threadId"], replyId=post["id"])
embed["title"] = _("Replied to a comment on {article}").format(article=article_page["title"]) embed["title"] = _("Replied to a comment on {article}").format(article=article_page["title"])
embed["footer"]["text"] = article_page["title"] embed.set_footer(article_page["title"])
else: else:
logger.warning("No entry for {event} with params: {params}".format(event=post_type, params=post)) logger.warning("No entry for {event} with params: {params}".format(event=post_type, params=post))
embed["title"] = _("Unknown event `{event}`").format(event=post_type) embed["title"] = _("Unknown event `{event}`").format(event=post_type)

View file

@ -1101,8 +1101,7 @@ async def embed_formatter(action, change, parsed_comment, categories, recent_cha
link = create_article_path("User:"+change["logparams"]["newuser"], WIKI_ARTICLE_PATH) link = create_article_path("User:"+change["logparams"]["newuser"], WIKI_ARTICLE_PATH)
elif action == "suppressed": elif action == "suppressed":
link = create_article_path("", WIKI_ARTICLE_PATH) link = create_article_path("", WIKI_ARTICLE_PATH)
embed["title"] = _("Action has been hidden by administration") embed.set_author(_("Unknown"))
embed["author"]["name"] = _("Unknown")
else: else:
logger.warning("No entry for {event} with params: {params}".format(event=action, params=change)) logger.warning("No entry for {event} with params: {params}".format(event=action, params=change))
link = create_article_path("Special:RecentChanges", WIKI_ARTICLE_PATH) link = create_article_path("Special:RecentChanges", WIKI_ARTICLE_PATH)