diff --git a/bot.py b/bot.py index 7edfa03..8c686bc 100644 --- a/bot.py +++ b/bot.py @@ -205,16 +205,16 @@ class DiscordBot(commands.Bot): f"Running on: {platform.system()} {platform.release()} ({os.name})" ) - if self.owner_id: - try: - owner = await self.fetch_user(self.owner_id) - self.logger.info(f"Owner found: {owner.name} (ID: {self.owner_id})") - except discord.NotFound: - self.logger.warning(f"Owner ID {self.owner_id} not found - owner commands may not work") - except Exception as e: - self.logger.error(f"Error fetching owner: {e}") - else: - self.logger.warning("No owner ID set - owner commands will not work") + try: + app_info = await self.application_info() + if app_info.team: + self.logger.info(f"Bot owned by team: {app_info.team.name}") + for member in app_info.team.members: + self.logger.info(f"Team member: {member.name} (ID: {member.id})") + else: + self.logger.info(f"Bot owner: {app_info.owner.name} (ID: {app_info.owner.id})") + except Exception as e: + self.logger.error(f"Error fetching application info: {e}") await self.init_db() await self.load_cogs() diff --git a/cogs/fun/rockpaperscissors.py b/cogs/fun/rockpaperscissors.py index ba7b51c..9d369b5 100644 --- a/cogs/fun/rockpaperscissors.py +++ b/cogs/fun/rockpaperscissors.py @@ -34,7 +34,7 @@ class RockPaperScissors(discord.ui.Select): bot_choice = random.choice(list(choices.keys())) bot_choice_index = choices[bot_choice] - result_embed = discord.Embed(title="Rock Paper Scissors", color=0xBEBEFE) + result_embed = discord.Embed(title="Rock Paper Scissors", color=0x7289DA) result_embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp") winner = (3 + user_choice_index - bot_choice_index) % 3 diff --git a/cogs/general/botinfo.py b/cogs/general/botinfo.py index 62d0acd..4f49368 100644 --- a/cogs/general/botinfo.py +++ b/cogs/general/botinfo.py @@ -19,7 +19,7 @@ class BotInfo(commands.Cog, name="botinfo"): :param context: The hybrid command context. """ embed = discord.Embed( - title="Nyrix Discord Bot", + title="Syntrel Discord Bot", color=0x7289DA, ) embed.set_author(name="Bot Information", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") diff --git a/cogs/general/context_menus.py b/cogs/general/context_menus.py index e44ffc2..1a32a2f 100644 --- a/cogs/general/context_menus.py +++ b/cogs/general/context_menus.py @@ -35,7 +35,7 @@ # embed = discord.Embed( # title="Message without spoilers", # description=message.content.replace("||", ""), -# color=0xBEBEFE, +# color=0x7289DA, # ) # if spoiler_attachment is not None: # embed.set_image(url=attachment.url) @@ -52,7 +52,7 @@ # """ # embed = discord.Embed( # description=f"The ID of {user.mention} is `{user.id}`.", -# color=0xBEBEFE, +# color=0x7289DA, # ) # await interaction.response.send_message(embed=embed, ephemeral=True) # diff --git a/cogs/general/help.py b/cogs/general/help.py index a89a450..3f07dc5 100644 --- a/cogs/general/help.py +++ b/cogs/general/help.py @@ -13,10 +13,7 @@ class Help(commands.Cog, name="help"): interaction: discord.Interaction, current: str, ) -> list[app_commands.Choice[str]]: - categories = ["general", "fun", "moderation", "template"] - - if await self.bot.is_owner(interaction.user): - categories.append("owner") + categories = ["general", "fun", "moderation", "template", "owner"] suggestions = [] for category in categories: @@ -85,8 +82,6 @@ class Help(commands.Cog, name="help"): for cog_name in self.bot.cogs: mapped_category = category_mapping.get(cog_name.lower()) if mapped_category: - if mapped_category == "owner" and not (await self.bot.is_owner(context.author)): - continue available_categories.add(mapped_category) category_list = [] @@ -120,17 +115,6 @@ class Help(commands.Cog, name="help"): await context.author.send(embed=embed) return - if category == "owner" and not (await self.bot.is_owner(context.author)): - embed = discord.Embed( - title="Error", - description="You don't have permission to view owner commands.", - color=0x7289DA - ) - if context.interaction: - await context.interaction.response.send_message(embed=embed, ephemeral=True) - else: - await context.author.send(embed=embed) - return commands_in_category = [] seen_names = set() diff --git a/cogs/general/ping.py b/cogs/general/ping.py index b9f90f6..4dfd2a7 100644 --- a/cogs/general/ping.py +++ b/cogs/general/ping.py @@ -28,7 +28,7 @@ class Ping(commands.Cog, name="ping"): embed = discord.Embed( title="🏓 Pong!", description=f"The bot latency is {round(self.bot.latency * 1000)}ms.", - color=0xBEBEFE, + color=0x7289DA, ) embed.set_author(name="Ping", icon_url="https://yes.nighty.works/raw/y5SEZ9.webp") if getattr(context, "interaction", None): diff --git a/cogs/owner/cog_management.py b/cogs/owner/cog_management.py index 814bc63..59c10a4 100644 --- a/cogs/owner/cog_management.py +++ b/cogs/owner/cog_management.py @@ -42,7 +42,7 @@ class CogManagement(commands.Cog, name="cog_management"): await self.send_embed(context, embed, ephemeral=True) return embed = discord.Embed( - description=f"Successfully loaded the `{cog}` cog.", color=0xBEBEFE + description=f"Successfully loaded the `{cog}` cog.", color=0x7289DA ) embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") await self.send_embed(context, embed) @@ -71,7 +71,7 @@ class CogManagement(commands.Cog, name="cog_management"): await self.send_embed(context, embed, ephemeral=True) return embed = discord.Embed( - description=f"Successfully unloaded the `{cog}` cog.", color=0xBEBEFE + description=f"Successfully unloaded the `{cog}` cog.", color=0x7289DA ) embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") await self.send_embed(context, embed) @@ -101,7 +101,7 @@ class CogManagement(commands.Cog, name="cog_management"): return embed = discord.Embed( title="Cog Management", - description=f"Successfully reloaded the `{cog}` cog.", color=0xBEBEFE + description=f"Successfully reloaded the `{cog}` cog.", color=0x7289DA ) embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") await self.send_embed(context, embed) diff --git a/cogs/owner/say.py b/cogs/owner/say.py index 9b15003..a7a37d6 100644 --- a/cogs/owner/say.py +++ b/cogs/owner/say.py @@ -8,6 +8,16 @@ class Say(commands.Cog, name="say"): def __init__(self, bot) -> None: self.bot = bot + async def send_embed(self, context: Context, embed: discord.Embed, *, ephemeral: bool = False) -> None: + interaction = getattr(context, "interaction", None) + if interaction is not None: + if interaction.response.is_done(): + await interaction.followup.send(embed=embed, ephemeral=ephemeral) + else: + await interaction.response.send_message(embed=embed, ephemeral=ephemeral) + else: + await context.send(embed=embed) + @commands.hybrid_command( name="say", description="The bot will say anything you want.", @@ -36,8 +46,26 @@ class Say(commands.Cog, name="say"): :param context: The hybrid command context. :param message: The message that should be repeated by the bot. """ - embed = discord.Embed(description=message, color=0xBEBEFE) - await context.send(embed=embed) + embed = discord.Embed( + title="Say", + description=message, + color=0x7289DA, + ) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed) + + + async def cog_command_error(self, context: Context, error) -> None: + if isinstance(error, commands.NotOwner): + embed = discord.Embed( + title="Permission Denied", + description="You are not the owner of this bot!", + color=0xE02B2B, + ) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed, ephemeral=True) + else: + raise error async def setup(bot) -> None: diff --git a/cogs/owner/shutdown.py b/cogs/owner/shutdown.py index d570676..12c2c26 100644 --- a/cogs/owner/shutdown.py +++ b/cogs/owner/shutdown.py @@ -6,6 +6,16 @@ from discord.ext.commands import Context class Shutdown(commands.Cog, name="shutdown"): def __init__(self, bot) -> None: self.bot = bot + + async def send_embed(self, context: Context, embed: discord.Embed, *, ephemeral: bool = False) -> None: + interaction = getattr(context, "interaction", None) + if interaction is not None: + if interaction.response.is_done(): + await interaction.followup.send(embed=embed, ephemeral=ephemeral) + else: + await interaction.response.send_message(embed=embed, ephemeral=ephemeral) + else: + await context.send(embed=embed) @commands.hybrid_command( name="shutdown", @@ -18,10 +28,27 @@ class Shutdown(commands.Cog, name="shutdown"): :param context: The hybrid command context. """ - embed = discord.Embed(description="Shutting down. Bye! :wave:", color=0xBEBEFE) - await context.send(embed=embed) + embed = discord.Embed( + title="Shutdown", + description="Shutting down. Bye! ", + color=0x7289DA, + ).set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + + await self.send_embed(context, embed) await self.bot.close() + async def cog_command_error(self, context: Context, error) -> None: + if isinstance(error, commands.NotOwner): + embed = discord.Embed( + title="Permission Denied", + description="You are not the owner of this bot!", + color=0xE02B2B, + ) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed, ephemeral=True) + else: + raise error + async def setup(bot) -> None: await bot.add_cog(Shutdown(bot)) diff --git a/cogs/owner/sync.py b/cogs/owner/sync.py index e929bb2..a10f419 100644 --- a/cogs/owner/sync.py +++ b/cogs/owner/sync.py @@ -8,6 +8,16 @@ class Sync(commands.Cog, name="sync"): def __init__(self, bot) -> None: self.bot = bot + async def send_embed(self, context: Context, embed: discord.Embed, *, ephemeral: bool = False) -> None: + interaction = getattr(context, "interaction", None) + if interaction is not None: + if interaction.response.is_done(): + await interaction.followup.send(embed=embed, ephemeral=ephemeral) + else: + await interaction.response.send_message(embed=embed, ephemeral=ephemeral) + else: + await context.send(embed=embed) + @commands.command( name="sync", description="Synchonizes the slash commands.", @@ -24,24 +34,31 @@ class Sync(commands.Cog, name="sync"): if scope == "global": await context.bot.tree.sync() embed = discord.Embed( + title="Sync", description="Slash commands have been globally synchronized.", - color=0xBEBEFE, + color=0x7289DA, ) - await context.send(embed=embed) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed) return elif scope == "guild": context.bot.tree.copy_global_to(guild=context.guild) await context.bot.tree.sync(guild=context.guild) embed = discord.Embed( + title="Sync", description="Slash commands have been synchronized in this guild.", - color=0xBEBEFE, + color=0x7289DA, ) - await context.send(embed=embed) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed) return embed = discord.Embed( - description="The scope must be `global` or `guild`.", color=0xE02B2B + title="Error", + description="The scope must be `global` or `guild`.", + color=0xE02B2B, ) - await context.send(embed=embed) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed, ephemeral=True) @commands.command( name="unsync", @@ -62,24 +79,44 @@ class Sync(commands.Cog, name="sync"): context.bot.tree.clear_commands(guild=None) await context.bot.tree.sync() embed = discord.Embed( + title="Unsync", description="Slash commands have been globally unsynchronized.", - color=0xBEBEFE, + color=0x7289DA, ) - await context.send(embed=embed) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed) return elif scope == "guild": context.bot.tree.clear_commands(guild=context.guild) await context.bot.tree.sync(guild=context.guild) embed = discord.Embed( + title="Unsync", description="Slash commands have been unsynchronized in this guild.", - color=0xBEBEFE, + color=0x7289DA, ) - await context.send(embed=embed) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed) return embed = discord.Embed( - description="The scope must be `global` or `guild`.", color=0xE02B2B + title="Error", + description="The scope must be `global` or `guild`.", + color=0xE02B2B, ) - await context.send(embed=embed) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed, ephemeral=True) + + + async def cog_command_error(self, context: Context, error) -> None: + if isinstance(error, commands.NotOwner): + embed = discord.Embed( + title="Permission Denied", + description="You are not the owner of this bot!", + color=0xE02B2B, + ) + embed.set_author(name="Owner", icon_url="https://yes.nighty.works/raw/zReOib.webp") + await self.send_embed(context, embed, ephemeral=True) + else: + raise error async def setup(bot) -> None: