mirror of
https://github.com/neoarz/Syntrel.git
synced 2025-12-25 03:40:11 +01:00
Introduces a new /mcquote command that generates a custom Minecraft achievement quote image using skinmc.net. Updates README and media cog to register and document the new command.
72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
import discord
|
|
from discord.ext import commands
|
|
from discord.ext.commands import Context
|
|
|
|
from .download import download_command
|
|
from .mcquote import mcquote_command
|
|
|
|
|
|
def _require_group_prefix(context: Context) -> bool:
|
|
if getattr(context, "interaction", None):
|
|
return True
|
|
group = getattr(getattr(context, "cog", None), "qualified_name", "").lower()
|
|
if not group:
|
|
return True
|
|
prefix = context.prefix or ""
|
|
content = context.message.content.strip().lower()
|
|
return content.startswith(f"{prefix}{group} ")
|
|
|
|
class Media(commands.GroupCog, name="media"):
|
|
def __init__(self, bot) -> None:
|
|
self.bot = bot
|
|
super().__init__()
|
|
|
|
@commands.group(name="media", invoke_without_command=True)
|
|
async def media_group(self, context: Context):
|
|
embed = discord.Embed(
|
|
title="Media Commands",
|
|
description="Use `.media <subcommand>` or `/media <subcommand>`.",
|
|
color=0x7289DA
|
|
)
|
|
embed.set_author(name="Media", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp")
|
|
embed.add_field(name="Available", value="download, mcquote", inline=False)
|
|
await context.send(embed=embed)
|
|
|
|
async def _invoke_hybrid(self, context: Context, name: str):
|
|
command = self.bot.get_command(name)
|
|
if command is not None:
|
|
await context.invoke(command)
|
|
else:
|
|
await context.send(f"Unknown media command: {name}")
|
|
|
|
@media_group.command(name="download")
|
|
async def media_group_download(self, context: Context, *, url: str):
|
|
await self._invoke_hybrid(context, "download", url=url)
|
|
|
|
@media_group.command(name="mcquote")
|
|
async def media_group_mcquote(self, context: Context, *, text: str):
|
|
await self._invoke_hybrid(context, "mcquote", text=text)
|
|
|
|
@commands.check(_require_group_prefix)
|
|
@commands.hybrid_command(
|
|
name="download",
|
|
description="Download a video from a URL using yt-dlp.",
|
|
)
|
|
async def download(self, context, *, url: str):
|
|
return await download_command()(self, context, url=url)
|
|
|
|
@commands.check(_require_group_prefix)
|
|
@commands.hybrid_command(
|
|
name="mcquote",
|
|
description="Generate a custom Minecraft quote image.",
|
|
)
|
|
async def mcquote(self, context, *, text: str):
|
|
return await mcquote_command()(self, context, text=text)
|
|
|
|
async def setup(bot) -> None:
|
|
cog = Media(bot)
|
|
await bot.add_cog(cog)
|
|
|
|
bot.logger.info("Loaded extension 'media.download'")
|
|
bot.logger.info("Loaded extension 'media.mcquote'")
|