mirror of
https://github.com/neoarz/Syntrel.git
synced 2025-12-25 11:40:12 +01:00
Added a _require_group_prefix check to all hybrid commands in each cog to ensure commands are only executed when invoked with the appropriate group prefix. Also updated error handling in bot.py to silently ignore CheckFailure errors. This improves command organization and prevents accidental command execution outside their intended context.
57 lines
2.3 KiB
Python
57 lines
2.3 KiB
Python
import discord
|
|
from discord.ext import commands
|
|
from discord.ext.commands import Context
|
|
|
|
from .translate import translate_command
|
|
|
|
class Utilities(commands.GroupCog, name="utils"):
|
|
def __init__(self, bot) -> None:
|
|
self.bot = bot
|
|
super().__init__()
|
|
|
|
@commands.group(name="utilities", aliases=["utils"], invoke_without_command=True)
|
|
async def utilities_group(self, context: Context):
|
|
embed = discord.Embed(
|
|
title="Utilities Commands",
|
|
description="Use `.utils <subcommand>` or `/utils <subcommand>`.",
|
|
color=0x7289DA
|
|
)
|
|
embed.set_author(name="Utilities", icon_url="https://yes.nighty.works/raw/8VLDcg.webp")
|
|
embed.add_field(name="Available", value="translate", inline=False)
|
|
await context.send(embed=embed)
|
|
|
|
async def _invoke_hybrid(self, context: Context, name: str, **kwargs):
|
|
command = self.bot.get_command(name)
|
|
if command is not None:
|
|
await context.invoke(command, **kwargs)
|
|
else:
|
|
await context.send(f"Unknown utilities command: {name}")
|
|
|
|
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} ")
|
|
|
|
@utilities_group.command(name="translate")
|
|
async def utilities_group_translate(self, context: Context, text: str = None, to_lang: str = "en", from_lang: str = None):
|
|
await self._invoke_hybrid(context, "translate", text=text, to_lang=to_lang, from_lang=from_lang)
|
|
|
|
@commands.check(_require_group_prefix)
|
|
@commands.hybrid_command(
|
|
name="translate",
|
|
description="Translate text to another language"
|
|
)
|
|
async def translate(self, context, text: str = None, to_lang: str = "en", from_lang: str = None):
|
|
return await translate_command()(self, context, text=text, to_lang=to_lang, from_lang=from_lang)
|
|
|
|
async def setup(bot) -> None:
|
|
cog = Utilities(bot)
|
|
await bot.add_cog(cog)
|
|
|
|
bot.logger.info("Loaded extension 'utilities.translate'")
|