diff --git a/cogs/general/botinfo.py b/cogs/general/botinfo.py index 47cf10b..62d0acd 100644 --- a/cogs/general/botinfo.py +++ b/cogs/general/botinfo.py @@ -32,7 +32,7 @@ class BotInfo(commands.Cog, name="botinfo"): value=f"/ (Slash Commands) or {self.bot.bot_prefix} for normal commands", inline=False, ) - if context.interaction: + if getattr(context, "interaction", None): await context.interaction.response.send_message(embed=embed, ephemeral=True) else: await context.send(embed=embed) diff --git a/cogs/general/feedback.py b/cogs/general/feedback.py index 43471f7..2a31971 100644 --- a/cogs/general/feedback.py +++ b/cogs/general/feedback.py @@ -41,7 +41,8 @@ class Feedback(commands.Cog, name="feedback"): title="Thank You!", description="Your feedback has been submitted, the owners have been notified about it.", color=0x7289DA, - ).set_author(name="Feedback System", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") + ).set_author(name="Feedback System", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp"), + ephemeral=True, ) app_owner = (await self.bot.application_info()).owner diff --git a/cogs/general/help.py b/cogs/general/help.py index febc43e..876ffbe 100644 --- a/cogs/general/help.py +++ b/cogs/general/help.py @@ -42,7 +42,6 @@ class Help(commands.Cog, name="help"): "botinfo": "general", "serverinfo": "general", "ping": "general", - "invite": "general", "feedback": "general", # "context_menus": "general", @@ -63,6 +62,7 @@ class Help(commands.Cog, name="help"): "cog_management": "owner", "shutdown": "owner", "say": "owner", + "invite": "owner", "testcommand": "template" } @@ -134,14 +134,32 @@ class Help(commands.Cog, name="help"): return commands_in_category = [] + seen_names = set() for cog_name in self.bot.cogs: if category_mapping.get(cog_name.lower()) == category: cog = self.bot.get_cog(cog_name) if cog: commands_list = cog.get_commands() for command in commands_list: + name = command.name + if name in seen_names: + continue description = command.description.partition("\n")[0] if command.description else "No description available" - commands_in_category.append((command.name, description)) + commands_in_category.append((name, description)) + seen_names.add(name) + + for app_command in self.bot.tree.get_commands(): + bound_cog = getattr(app_command, "binding", None) + if bound_cog is None: + continue + bound_cog_name = getattr(bound_cog, "qualified_name", "").lower() + if category_mapping.get(bound_cog_name) != category: + continue + if app_command.name in seen_names: + continue + description = app_command.description.partition("\n")[0] if getattr(app_command, "description", None) else "No description available" + commands_in_category.append((app_command.name, description)) + seen_names.add(app_command.name) if not commands_in_category: embed = discord.Embed( diff --git a/cogs/general/ping.py b/cogs/general/ping.py index 445a25f..b9f90f6 100644 --- a/cogs/general/ping.py +++ b/cogs/general/ping.py @@ -31,7 +31,10 @@ class Ping(commands.Cog, name="ping"): color=0xBEBEFE, ) embed.set_author(name="Ping", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") - await context.send(embed=embed) + if getattr(context, "interaction", None): + await context.interaction.response.send_message(embed=embed, ephemeral=True) + else: + await context.send(embed=embed) async def setup(bot) -> None: diff --git a/cogs/general/serverinfo.py b/cogs/general/serverinfo.py index c025f2b..1c499c9 100644 --- a/cogs/general/serverinfo.py +++ b/cogs/general/serverinfo.py @@ -1,16 +1,7 @@ -""" -Copyright © Krypton 2019-Present - https://github.com/kkrypt0nn (https://krypton.ninja) -Description: -🐍 A simple template to start to code your own and personalized Discord bot in Python - -Version: 6.4.0 -""" - import discord from discord.ext import commands from discord.ext.commands import Context - class ServerInfo(commands.Cog, name="serverinfo"): def __init__(self, bot) -> None: self.bot = bot @@ -19,33 +10,50 @@ class ServerInfo(commands.Cog, name="serverinfo"): name="serverinfo", description="Get some useful (or not) information about the server.", ) + @commands.guild_only() # This decorator ensures the command only works in servers async def serverinfo(self, context: Context) -> None: """ Get some useful (or not) information about the server. - :param context: The hybrid command context. """ + # Additional check (though @commands.guild_only() should handle this) + if context.guild is None: + await context.send("This command can only be used in a server, not in DMs!") + return + roles = [role.name for role in context.guild.roles] num_roles = len(roles) if num_roles > 50: roles = roles[:50] roles.append(f">>>> Displaying [50/{num_roles}] Roles") roles = ", ".join(roles) - + embed = discord.Embed( - title="**Server Name:**", description=f"{context.guild}", color=0xBEBEFE - ) + title="**Server Name:**", + description=f"{context.guild}", + color=0x7289DA + ).set_author(name="Server Information", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") + if context.guild.icon is not None: embed.set_thumbnail(url=context.guild.icon.url) + embed.add_field(name="Server ID", value=context.guild.id) embed.add_field(name="Member Count", value=context.guild.member_count) embed.add_field( - name="Text/Voice Channels", value=f"{len(context.guild.channels)}" + name="Text/Voice Channels", + value=f"{len(context.guild.channels)}" + ) + embed.add_field( + name=f"Roles ({len(context.guild.roles)})", + value=roles ) - embed.add_field(name=f"Roles ({len(context.guild.roles)})", value=roles) embed.set_footer(text=f"Created at: {context.guild.created_at}") - await context.send(embed=embed) - + + if getattr(context, "interaction", None): + await context.interaction.response.send_message(embed=embed, ephemeral=True) + else: + await context.send(embed=embed) async def setup(bot) -> None: await bot.add_cog(ServerInfo(bot)) + diff --git a/cogs/general/invite.py b/cogs/owner/invite.py similarity index 86% rename from cogs/general/invite.py rename to cogs/owner/invite.py index 1cbfc92..7c93e9a 100644 --- a/cogs/general/invite.py +++ b/cogs/owner/invite.py @@ -1,11 +1,3 @@ -""" -Copyright © Krypton 2019-Present - https://github.com/kkrypt0nn (https://krypton.ninja) -Description: -🐍 A simple template to start to code your own and personalized Discord bot in Python - -Version: 6.4.0 -""" - import os import discord from discord.ext import commands