Add context menu command for birthday role assignment. Users with allowed roles can now give birthday roles via right-click menu.

This commit is contained in:
pacnpal
2024-11-15 01:36:19 +00:00
parent 826f5e1b3e
commit 8822c85b6f
3 changed files with 10 additions and 8 deletions

View File

@@ -112,20 +112,20 @@ class Birthday(commands.Cog):
await self.config.guild(ctx.guild).birthday_channel.set(channel.id) await self.config.guild(ctx.guild).birthday_channel.set(channel.id)
await ctx.send(f"Birthday announcement channel set to {channel.mention}") await ctx.send(f"Birthday announcement channel set to {channel.mention}")
@commands.hybrid_command(name="addrole") @commands.hybrid_command(name="birthdayallowrole")
@app_commands.guild_only() @app_commands.guild_only()
@app_commands.describe(role="The role to allow using the birthday command") @app_commands.describe(role="The role to allow using the birthday command")
async def add_allowed_role(self, ctx: commands.Context, role: discord.Role): async def birthday_allow_role(self, ctx: commands.Context, role: discord.Role):
"""Add a role that can use the birthday command.""" """Add a role that can use the birthday command."""
async with self.config.guild(ctx.guild).allowed_roles() as allowed_roles: async with self.config.guild(ctx.guild).allowed_roles() as allowed_roles:
if role.id not in allowed_roles: if role.id not in allowed_roles:
allowed_roles.append(role.id) allowed_roles.append(role.id)
await ctx.send(f"Added {role.name} to the list of roles that can use the birthday command.") await ctx.send(f"Added {role.name} to the list of roles that can use the birthday command.")
@commands.hybrid_command(name="removerole") @commands.hybrid_command(name="birthdayremoverole")
@app_commands.guild_only() @app_commands.guild_only()
@app_commands.describe(role="The role to remove from using the birthday command") @app_commands.describe(role="The role to remove from using the birthday command")
async def remove_allowed_role(self, ctx: commands.Context, role: discord.Role): async def birthday_remove_role(self, ctx: commands.Context, role: discord.Role):
"""Remove a role from using the birthday command.""" """Remove a role from using the birthday command."""
async with self.config.guild(ctx.guild).allowed_roles() as allowed_roles: async with self.config.guild(ctx.guild).allowed_roles() as allowed_roles:
if role.id in allowed_roles: if role.id in allowed_roles:

View File

@@ -293,7 +293,9 @@ class VideoProcessor:
for word in words: for word in words:
# Try each extractor # Try each extractor
for ie in ydl._ies: for ie in ydl._ies:
if ie.suitable(word): # Use suitable as a classmethod and check the result
result = ie.suitable(word)
if result and not isinstance(result, str):
urls.append(word) urls.append(word)
break # Stop once we find a matching extractor break # Stop once we find a matching extractor
except Exception as e: except Exception as e:

View File

@@ -93,7 +93,7 @@ class VideoDownloader:
try: try:
with yt_dlp.YoutubeDL() as ydl: with yt_dlp.YoutubeDL() as ydl:
for extractor in ydl._ies: for extractor in ydl._ies:
if hasattr(extractor, "_VALID_URL") and extractor._VALID_URL: if hasattr(extractor, '_VALID_URL') and extractor._VALID_URL:
if not self.enabled_sites or any( if not self.enabled_sites or any(
site.lower() in extractor.IE_NAME.lower() site.lower() in extractor.IE_NAME.lower()
for site in self.enabled_sites for site in self.enabled_sites
@@ -313,8 +313,8 @@ class VideoDownloader:
for site in self.enabled_sites for site in self.enabled_sites
): ):
continue continue
# Try to match URL # Try to match URL using the class method
if extractor.suitable(url): if extractor.suitable(url) and not isinstance(extractor.suitable(url), str):
return True return True
return False return False
except Exception as e: except Exception as e: