diff --git a/cogs/media/mcquote.py b/cogs/media/mcquote.py index 3d683a3..6ad77cb 100644 --- a/cogs/media/mcquote.py +++ b/cogs/media/mcquote.py @@ -6,6 +6,23 @@ from discord.ext import commands import aiohttp import random +async def send_error_message(context, description: str): + embed = discord.Embed( + title="Error", + description=description, + color=0xE02B2B, + ) + embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") + + interaction = getattr(context, "interaction", None) + if interaction is not None: + if not interaction.response.is_done(): + await interaction.response.send_message(embed=embed, ephemeral=True) + else: + await interaction.followup.send(embed=embed, ephemeral=True) + else: + await context.send(embed=embed, ephemeral=True) + def mcquote_command(): @commands.hybrid_command( name="mcquote", @@ -14,55 +31,24 @@ def mcquote_command(): @commands.cooldown(1, 10, commands.BucketType.user) async def mcquote(self, context, *, text: str = None): if not text: - embed = discord.Embed( - title="Error", - description="Please provide text for the Minecraft quote.", - color=0xE02B2B, - ) - embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") - - interaction = getattr(context, "interaction", None) - if interaction is not None: - if not interaction.response.is_done(): - await interaction.response.send_message(embed=embed, ephemeral=True) - else: - await interaction.followup.send(embed=embed, ephemeral=True) - else: - await context.send(embed=embed, ephemeral=True) + await send_error_message(context, "Please provide text for the Minecraft quote.") return if len(text) > 25: - embed = discord.Embed( - title="Error", - description="Text must be 25 characters or less.", - color=0xE02B2B, - ) - embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") - - interaction = getattr(context, "interaction", None) - if interaction is not None: - if not interaction.response.is_done(): - await interaction.response.send_message(embed=embed, ephemeral=True) - else: - await interaction.followup.send(embed=embed, ephemeral=True) - else: - await context.send(embed=embed, ephemeral=True) + await send_error_message(context, "Text must be 25 characters or less.") return - processing_embed = discord.Embed( - title="Minecraft Quote (Processing)", - description=" Generating quote... This may take a moment.", - color=0x7289DA, - ) - processing_embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") - interaction = getattr(context, "interaction", None) if interaction is not None: if not interaction.response.is_done(): - await interaction.response.send_message(embed=processing_embed, ephemeral=True) - else: - await interaction.followup.send(embed=processing_embed, ephemeral=True) + await interaction.response.defer(ephemeral=False) else: + processing_embed = discord.Embed( + title="Minecraft Quote (Processing)", + description=" Generating quote... This may take a moment.", + color=0x7289DA, + ) + processing_embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") processing_msg = await context.send(embed=processing_embed) quote_text = text.replace(" ", "+") @@ -89,55 +75,40 @@ def mcquote_command(): with open(temp_file_path, 'rb') as f: file = discord.File(f, filename="mcquote.png") - interaction = getattr(context, "interaction", None) if interaction is not None: - await context.channel.send(embed=embed) - await context.channel.send(file=file) - try: - await interaction.delete_original_response() - except: - pass + await interaction.followup.send(embeds=[embed], files=[file]) else: await processing_msg.delete() - await context.channel.send(embed=embed) - await context.channel.send(file=file) + await context.send(embeds=[embed], files=[file]) os.remove(temp_file_path) except aiohttp.ClientError: - embed = discord.Embed( - title="Error", - description="Failed to generate Minecraft quote. Please try again later.", - color=0xE02B2B, - ) - embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") - - interaction = getattr(context, "interaction", None) if interaction is not None: - try: - await interaction.delete_original_response() - except: - pass - await interaction.followup.send(embed=embed, ephemeral=True) + await interaction.followup.send(embed=discord.Embed( + title="Error", + description="Failed to generate Minecraft quote. Please try again later.", + color=0xE02B2B, + ).set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp"), ephemeral=True) else: await processing_msg.delete() - await context.send(embed=embed, ephemeral=True) + await context.send(embed=discord.Embed( + title="Error", + description="Failed to generate Minecraft quote. Please try again later.", + color=0xE02B2B, + ).set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp"), ephemeral=True) except Exception as e: - embed = discord.Embed( - title="Error", - description=f"An unexpected error occurred: {str(e)}", - color=0xE02B2B, - ) - embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") - - interaction = getattr(context, "interaction", None) if interaction is not None: - try: - await interaction.delete_original_response() - except: - pass - await interaction.followup.send(embed=embed, ephemeral=True) + await interaction.followup.send(embed=discord.Embed( + title="Error", + description=f"An unexpected error occurred: {str(e)}", + color=0xE02B2B, + ).set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp"), ephemeral=True) else: await processing_msg.delete() - await context.send(embed=embed, ephemeral=True) + await context.send(embed=discord.Embed( + title="Error", + description=f"An unexpected error occurred: {str(e)}", + color=0xE02B2B, + ).set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp"), ephemeral=True) return mcquote