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
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.embed["author"]["name"] = name
self.embed["author"]["url"] = 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):
if "fields" not in self.embed:
self.embed["fields"] = []
@ -138,7 +143,7 @@ def stack_message_list(messages: list) -> list:
stackable = StackedDiscordMessage(messages[message_group_index])
for message in messages[message_group_index + 1:message_group_index + 10]:
try:
stackable.add_embed(message.embed)
stackable.add_embed(message)
except EmbedListFull:
break
messages.remove(message)
@ -165,13 +170,14 @@ class StackedDiscordMessage(DiscordMessage):
def stack(self, messages: list):
for message in messages:
self.add_embed(message.embed)
self.add_embed(message)
def add_embed(self, embed):
if len(self) + len(embed) > 6000:
def add_embed(self, message):
if len(self) + len(message) > 6000:
raise EmbedListFull
self.length += len(message)
self._setup_embed()
self.embed = embed
self.embed = message.embed
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
embed["description"] = post.get("rawContent", "")
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()
if post_type == "FORUM":
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["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["footer"]["text"] = article_page["title"]
embed.set_footer(article_page["title"])
else:
logger.warning("No entry for {event} with params: {params}".format(event=post_type, params=post))
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)
elif action == "suppressed":
link = create_article_path("", WIKI_ARTICLE_PATH)
embed["title"] = _("Action has been hidden by administration")
embed["author"]["name"] = _("Unknown")
embed.set_author(_("Unknown"))
else:
logger.warning("No entry for {event} with params: {params}".format(event=action, params=change))
link = create_article_path("Special:RecentChanges", WIKI_ARTICLE_PATH)