Skip to content

Commit

Permalink
Fix embed options not applying when replying
Browse files Browse the repository at this point in the history
  • Loading branch information
joinemm committed Nov 19, 2023
1 parent 1619513 commit 4fbbec9
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 38 deletions.
59 changes: 23 additions & 36 deletions cogs/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import discord
from discord.ext import commands, tasks
from loguru import logger
from modules.media_embedders import InstagramEmbedder, TikTokEmbedder
from modules.media_embedders import BaseEmbedder, InstagramEmbedder, TikTokEmbedder
from modules.misobot import MisoBot

from modules import emoji_literals, queries, util
Expand Down Expand Up @@ -331,11 +331,27 @@ async def get_autoembed_options(
guild_id,
provider,
)
print(options_data)
if options_data:
return options_data

return None, None
return None, True

async def embed_posts(
self, posts: list, message: discord.Message, embedder: BaseEmbedder
):
options, should_reply = await self.get_autoembed_options(
message.guild.id, embedder.NAME
)
embed_options = embedder.get_options(options) if options else None
for post in posts:
async with message.channel.typing():
if should_reply:
await embedder.send_reply(message, post, embed_options)
else:
await embedder.send_contextless(
message.channel, message.author, post, embed_options
)
await util.suppress(message)

async def parse_media_auto_embed(
self, message: discord.Message, media_settings: dict
Expand All @@ -344,42 +360,13 @@ async def parse_media_auto_embed(
embedder = InstagramEmbedder(self.bot)
posts = embedder.extract_links(message.content, include_shortcodes=False)
if posts:
options, should_reply = await self.get_autoembed_options(
message.guild.id, "instagram"
)
for post in posts:
async with message.channel.typing():
if not should_reply:
await embedder.send_contextless(
message.channel,
message.author,
post,
embedder.get_options(options) if options else None,
)
else:
await embedder.send_reply(message, post)
await util.suppress(message)
await self.embed_posts(posts, message, embedder)

if media_settings["tiktok"]:
embedder = TikTokEmbedder(self.bot)
links = embedder.extract_links(message.content)
if links:
options, should_reply = await self.get_autoembed_options(
message.guild.id,
"tiktok",
)
for link in links:
async with message.channel.typing():
if not should_reply:
await embedder.send_contextless(
message.channel,
message.author,
link,
embedder.get_options(options) if options else None,
)
else:
await embedder.send_reply(message, link)
await util.suppress(message)
posts = embedder.extract_links(message.content)
if posts:
await self.embed_posts(posts, message, embedder)

@staticmethod
async def easter_eggs(message: discord.Message):
Expand Down
15 changes: 13 additions & 2 deletions modules/media_embedders.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ def filesize_limit(guild: discord.Guild | None):

class BaseEmbedder:
NO_RESULTS_ERROR = "..."
NAME = "..."
EMOJI = "..."

def __init__(self, bot) -> None:
self.bot: MisoBot = bot
Expand Down Expand Up @@ -157,7 +159,10 @@ async def download_media(
return media_url

async def send(
self, ctx: commands.Context, media: Any, options: Options | None = None
self,
ctx: commands.Context,
media: Any,
options: Options | None = None,
):
"""Send the media to given context"""
message_contents = await self.create_message(
Expand All @@ -181,7 +186,10 @@ async def send_contextless(
message_contents["view"].approved_deletors.append(author)

async def send_reply(
self, message: discord.Message, media: Any, options: Options | None = None
self,
message: discord.Message,
media: Any,
options: Options | None = None,
):
"""Send the media as a reply to another message"""
message_contents = await self.create_message(
Expand All @@ -195,6 +203,7 @@ async def send_reply(


class InstagramEmbedder(BaseEmbedder):
NAME = "instagram"
EMOJI = "<:ig:937425165162262528>"
NO_RESULTS_ERROR = "Found no Instagram links to embed!"

Expand Down Expand Up @@ -283,6 +292,7 @@ async def create_message(


class TikTokEmbedder(BaseEmbedder):
NAME = "tiktok"
EMOJI = "<:tiktok:1050401570090647582>"
NO_RESULTS_ERROR = "Found no TikTok links to embed!"

Expand Down Expand Up @@ -346,6 +356,7 @@ async def create_message(


class TwitterEmbedder(BaseEmbedder):
NAME = "twitter"
EMOJI = "<:x_:1135484782642466897>"
NO_RESULTS_ERROR = "Found no Twitter/X links to embed!"

Expand Down

0 comments on commit 4fbbec9

Please sign in to comment.