Refactor ControlPanelView to utilize voice channel references
Some checks are pending
Run pre-commit / Run pre-commit (push) Waiting to run
Some checks are pending
Run pre-commit / Run pre-commit (push) Waiting to run
This update modifies the ControlPanelView class to retrieve voice channel information from interaction messages, ensuring accurate AutoRoom management. It also updates the context handling for allow/deny actions, improving the overall functionality and user experience of the AutoRoom feature.
This commit is contained in:
parent
f986a23d2b
commit
84410f9b20
1 changed files with 57 additions and 15 deletions
|
@ -20,8 +20,14 @@ class ControlPanelView(ui.View):
|
||||||
if not interaction.message:
|
if not interaction.message:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Get the voice channel from the message
|
||||||
|
voice_channel = interaction.guild.get_channel(interaction.message.reference.channel_id)
|
||||||
|
if not isinstance(voice_channel, discord.VoiceChannel):
|
||||||
|
await interaction.response.send_message("Could not find the voice channel.", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
# Get the AutoRoom info
|
# Get the AutoRoom info
|
||||||
autoroom_info = await self.cog.get_autoroom_info(interaction.channel)
|
autoroom_info = await self.cog.get_autoroom_info(voice_channel)
|
||||||
if not autoroom_info:
|
if not autoroom_info:
|
||||||
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
||||||
return
|
return
|
||||||
|
@ -32,7 +38,9 @@ class ControlPanelView(ui.View):
|
||||||
return
|
return
|
||||||
|
|
||||||
# Make the AutoRoom public
|
# Make the AutoRoom public
|
||||||
await self.cog._process_allow_deny(interaction, "allow")
|
ctx = await self.cog.bot.get_context(interaction.message)
|
||||||
|
ctx.author = interaction.user
|
||||||
|
await self.cog._process_allow_deny(ctx, "allow")
|
||||||
await interaction.response.send_message("AutoRoom is now public.", ephemeral=True)
|
await interaction.response.send_message("AutoRoom is now public.", ephemeral=True)
|
||||||
|
|
||||||
@discord.ui.button(label="🔒 Locked", style=discord.ButtonStyle.grey, custom_id="autoroom_locked")
|
@discord.ui.button(label="🔒 Locked", style=discord.ButtonStyle.grey, custom_id="autoroom_locked")
|
||||||
|
@ -41,8 +49,14 @@ class ControlPanelView(ui.View):
|
||||||
if not interaction.message:
|
if not interaction.message:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Get the voice channel from the message
|
||||||
|
voice_channel = interaction.guild.get_channel(interaction.message.reference.channel_id)
|
||||||
|
if not isinstance(voice_channel, discord.VoiceChannel):
|
||||||
|
await interaction.response.send_message("Could not find the voice channel.", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
# Get the AutoRoom info
|
# Get the AutoRoom info
|
||||||
autoroom_info = await self.cog.get_autoroom_info(interaction.channel)
|
autoroom_info = await self.cog.get_autoroom_info(voice_channel)
|
||||||
if not autoroom_info:
|
if not autoroom_info:
|
||||||
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
||||||
return
|
return
|
||||||
|
@ -53,7 +67,9 @@ class ControlPanelView(ui.View):
|
||||||
return
|
return
|
||||||
|
|
||||||
# Make the AutoRoom locked
|
# Make the AutoRoom locked
|
||||||
await self.cog._process_allow_deny(interaction, "lock")
|
ctx = await self.cog.bot.get_context(interaction.message)
|
||||||
|
ctx.author = interaction.user
|
||||||
|
await self.cog._process_allow_deny(ctx, "lock")
|
||||||
await interaction.response.send_message("AutoRoom is now locked.", ephemeral=True)
|
await interaction.response.send_message("AutoRoom is now locked.", ephemeral=True)
|
||||||
|
|
||||||
@discord.ui.button(label="🔐 Private", style=discord.ButtonStyle.red, custom_id="autoroom_private")
|
@discord.ui.button(label="🔐 Private", style=discord.ButtonStyle.red, custom_id="autoroom_private")
|
||||||
|
@ -62,8 +78,14 @@ class ControlPanelView(ui.View):
|
||||||
if not interaction.message:
|
if not interaction.message:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Get the voice channel from the message
|
||||||
|
voice_channel = interaction.guild.get_channel(interaction.message.reference.channel_id)
|
||||||
|
if not isinstance(voice_channel, discord.VoiceChannel):
|
||||||
|
await interaction.response.send_message("Could not find the voice channel.", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
# Get the AutoRoom info
|
# Get the AutoRoom info
|
||||||
autoroom_info = await self.cog.get_autoroom_info(interaction.channel)
|
autoroom_info = await self.cog.get_autoroom_info(voice_channel)
|
||||||
if not autoroom_info:
|
if not autoroom_info:
|
||||||
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
||||||
return
|
return
|
||||||
|
@ -74,7 +96,9 @@ class ControlPanelView(ui.View):
|
||||||
return
|
return
|
||||||
|
|
||||||
# Make the AutoRoom private
|
# Make the AutoRoom private
|
||||||
await self.cog._process_allow_deny(interaction, "deny")
|
ctx = await self.cog.bot.get_context(interaction.message)
|
||||||
|
ctx.author = interaction.user
|
||||||
|
await self.cog._process_allow_deny(ctx, "deny")
|
||||||
await interaction.response.send_message("AutoRoom is now private.", ephemeral=True)
|
await interaction.response.send_message("AutoRoom is now private.", ephemeral=True)
|
||||||
|
|
||||||
@discord.ui.button(label="👥 Add User", style=discord.ButtonStyle.blurple, custom_id="autoroom_add_user")
|
@discord.ui.button(label="👥 Add User", style=discord.ButtonStyle.blurple, custom_id="autoroom_add_user")
|
||||||
|
@ -83,8 +107,14 @@ class ControlPanelView(ui.View):
|
||||||
if not interaction.message:
|
if not interaction.message:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Get the voice channel from the message
|
||||||
|
voice_channel = interaction.guild.get_channel(interaction.message.reference.channel_id)
|
||||||
|
if not isinstance(voice_channel, discord.VoiceChannel):
|
||||||
|
await interaction.response.send_message("Could not find the voice channel.", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
# Get the AutoRoom info
|
# Get the AutoRoom info
|
||||||
autoroom_info = await self.cog.get_autoroom_info(interaction.channel)
|
autoroom_info = await self.cog.get_autoroom_info(voice_channel)
|
||||||
if not autoroom_info:
|
if not autoroom_info:
|
||||||
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
||||||
return
|
return
|
||||||
|
@ -104,8 +134,14 @@ class ControlPanelView(ui.View):
|
||||||
if not interaction.message:
|
if not interaction.message:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Get the voice channel from the message
|
||||||
|
voice_channel = interaction.guild.get_channel(interaction.message.reference.channel_id)
|
||||||
|
if not isinstance(voice_channel, discord.VoiceChannel):
|
||||||
|
await interaction.response.send_message("Could not find the voice channel.", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
# Get the AutoRoom info
|
# Get the AutoRoom info
|
||||||
autoroom_info = await self.cog.get_autoroom_info(interaction.channel)
|
autoroom_info = await self.cog.get_autoroom_info(voice_channel)
|
||||||
if not autoroom_info:
|
if not autoroom_info:
|
||||||
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
await interaction.response.send_message("This is not an AutoRoom.", ephemeral=True)
|
||||||
return
|
return
|
||||||
|
@ -152,8 +188,16 @@ class UserSelectModal(ui.Modal, title="Select User"):
|
||||||
await interaction.response.send_message("User not found in this server.", ephemeral=True)
|
await interaction.response.send_message("User not found in this server.", ephemeral=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Get the voice channel from the message
|
||||||
|
voice_channel = interaction.guild.get_channel(interaction.message.reference.channel_id)
|
||||||
|
if not isinstance(voice_channel, discord.VoiceChannel):
|
||||||
|
await interaction.response.send_message("Could not find the voice channel.", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
# Process the allow/deny action
|
# Process the allow/deny action
|
||||||
await self.cog._process_allow_deny(interaction, self.action, member_or_role=user)
|
ctx = await self.cog.bot.get_context(interaction.message)
|
||||||
|
ctx.author = interaction.user
|
||||||
|
await self.cog._process_allow_deny(ctx, self.action, member_or_role=user)
|
||||||
await interaction.response.send_message(f"User {user.mention} has been {'allowed' if self.action == 'allow' else 'denied'} access.", ephemeral=True)
|
await interaction.response.send_message(f"User {user.mention} has been {'allowed' if self.action == 'allow' else 'denied'} access.", ephemeral=True)
|
||||||
|
|
||||||
class ControlPanel:
|
class ControlPanel:
|
||||||
|
@ -174,11 +218,7 @@ class ControlPanel:
|
||||||
if not owner:
|
if not owner:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Get the voice channel's text chat
|
# Create the embed
|
||||||
text_channel = autoroom.guild.get_channel(autoroom.id)
|
|
||||||
if not text_channel:
|
|
||||||
return
|
|
||||||
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="AutoRoom Control Panel",
|
title="AutoRoom Control Panel",
|
||||||
description=f"Control panel for {autoroom.mention}\nOwner: {owner.mention}",
|
description=f"Control panel for {autoroom.mention}\nOwner: {owner.mention}",
|
||||||
|
@ -196,4 +236,6 @@ class ControlPanel:
|
||||||
view = ControlPanelView(self.cog)
|
view = ControlPanelView(self.cog)
|
||||||
|
|
||||||
# Send the embed
|
# Send the embed
|
||||||
await text_channel.send(embed=embed, view=view)
|
message = await autoroom.send(embed=embed, view=view)
|
||||||
|
# Store the message ID for reference
|
||||||
|
await self.config.channel(autoroom).control_panel_message_id.set(message.id)
|
Loading…
Add table
Reference in a new issue