diff --git a/src/discord.py b/src/discord.py index 9c9b707..5e8ba18 100644 --- a/src/discord.py +++ b/src/discord.py @@ -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() diff --git a/src/formatters/discussions.py b/src/formatters/discussions.py index e77d106..b7ea5b5 100644 --- a/src/formatters/discussions.py +++ b/src/formatters/discussions.py @@ -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) diff --git a/src/formatters/rc.py b/src/formatters/rc.py index fa53261..52716c8 100644 --- a/src/formatters/rc.py +++ b/src/formatters/rc.py @@ -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)