From 47fb8be77f0d1c400bc7109ec539f9f94a6ddaf2 Mon Sep 17 00:00:00 2001 From: mudkipdev Date: Fri, 29 Sep 2023 18:57:59 -0600 Subject: [PATCH] fix editing description --- scnewsbot/extensions/announcements.py | 47 ++++++++++++++++++++------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/scnewsbot/extensions/announcements.py b/scnewsbot/extensions/announcements.py index d26a095..70b295b 100644 --- a/scnewsbot/extensions/announcements.py +++ b/scnewsbot/extensions/announcements.py @@ -47,13 +47,24 @@ async def get_follow_up_message( def is_announcement(announcement: discord.Message, /) -> bool: return ( - announcement.author == announcement.guild.me + announcement + and announcement.author == announcement.guild.me and len(announcement.embeds) == 1 and not announcement.content and not announcement.components ) +def is_video_message(announcement: discord.Message, /) -> bool: + return ( + announcement + and announcement.author == announcement.guild.me + and len(announcement.embeds) == 1 + and not announcement.mentions + and announcement.content + ) + + def reformat_description(description: str) -> str: split_description = description.split("\n") @@ -126,7 +137,7 @@ class AnnouncementCog(commands.Cog, name="Announcements"): video_message = await get_follow_up_message(message, limit=-1) ping_message = await get_follow_up_message(message, limit=1) - if video_message: + if is_video_message(video_message): await video_message.delete() if ping_message: await ping_message.delete() @@ -277,20 +288,27 @@ class Announcement: if len(split_message) == 2: ping_preview = split_message[1] - url = None + url = "" description = embed.description video_message = await get_follow_up_message(message, limit=-1) + if not is_video_message(video_message): + video_message = None + if embed.description is not None: - if len(embed.description.split("\n\n")) > 0: - url = embed.description.split("\n\n")[0] - description = "\n\n".join(description.split("\n\n")[1:]) + content = embed.description + + if "\n\n" in embed.description: + url = embed.description.split("\n\n")[0] + "\n\n" + content = embed.description.split("\n\n")[1:] + + description = url + "\n".join(content) return cls( title=embed.title, - url=url, + url=url or None, description=description, - video_url=video_message.content, + video_url=video_message.content if video_message else None, image_url=embed.image.url, channel=message.channel, ping=ping, @@ -407,8 +425,11 @@ class AnnouncementBuilderView(discord.ui.View): return self.stop() + await interaction.response.send_message( - "Cancelled posting/editing this announcement." + "Cancelled editing this announcement." + if self.announcement_builder.edit + else "Cancelled posting this announcement." ) @discord.ui.button(custom_id="anonymous", label="Anonymous?", row=2) @@ -484,9 +505,11 @@ class AnnouncementBuilderView(discord.ui.View): video_message = await get_follow_up_message( self.announcement_builder.message, limit=-1 ) - await video_message.edit( - content=self.announcement_builder.announcement.video_url - ) + + if is_video_message(video_message): + await video_message.edit( + content=self.announcement_builder.announcement.video_url + ) return