Create persistent buttons for role selection prompt

This commit is contained in:
fanyx 2024-01-23 12:09:51 +01:00
parent dc7e141756
commit d84845b79e
2 changed files with 36 additions and 19 deletions

30
main.py
View File

@ -9,15 +9,22 @@ from discord.ext.commands import Greedy, Context
from discord import app_commands from discord import app_commands
from src.roles import AddRoleButton, RemoveRoleButton from src.roles import AddRoleButton, RemoveRoleButton
from src.ui import RoleSelectView
class Bot(commands.Bot): class Bot(commands.Bot):
def __init__(self):
super().__init__(command_prefix=",", intents=discord.Intents.default())
self.intents.message_content = True
async def setup_hook(self) -> None:
self.add_view(RoleSelectView())
return await super().setup_hook()
with open('config.yaml', 'r') as file: with open('config.yaml', 'r') as file:
config = safe_load(file) config = safe_load(file)
# Bot # Bot
intents=discord.Intents.default() client = Bot()
intents.message_content = True
client = Bot(intents=intents, command_prefix=",")
# Command Groups # Command Groups
roles = app_commands.Group(name="roles", description="Manage role dialogues") roles = app_commands.Group(name="roles", description="Manage role dialogues")
@ -26,22 +33,7 @@ roles = app_commands.Group(name="roles", description="Manage role dialogues")
## Group: roles ## Group: roles
@roles.command(name="create") @roles.command(name="create")
async def roles_create_button(interaction: discord.Interaction): async def roles_create_button(interaction: discord.Interaction):
view = discord.ui.View() await interaction.response.send_message(view=RoleSelectView())
view.add_item(
AddRoleButton(
style=discord.ButtonStyle.primary,
label="Add Roles",
emoji=discord.PartialEmoji.from_str(emojize(":check_mark_button:"))
)
)
view.add_item(
RemoveRoleButton(
style=discord.ButtonStyle.secondary,
label="Remove Roles",
emoji=discord.PartialEmoji.from_str(emojize(":cross_mark:"))
)
)
await interaction.response.send_message(view=view)
# Sync using ,sync ~ # Sync using ,sync ~
@client.command() @client.command()

25
src/ui.py Normal file
View File

@ -0,0 +1,25 @@
from discord import Interaction, ButtonStyle, PartialEmoji
from discord.ui import View
from emoji import emojize
from src.roles import AddRoleButton, RemoveRoleButton
class RoleSelectView(View):
def __init__(self):
super().__init__(timeout=None)
self.add_item(
AddRoleButton(
style=ButtonStyle.primary,
label="Add Roles",
emoji=PartialEmoji.from_str(emojize(":check_mark_button:")),
custom_id="role_select:add"
)
)
self.add_item(
RemoveRoleButton(
style=ButtonStyle.secondary,
label="Remove Roles",
emoji=PartialEmoji.from_str(emojize(":cross_mark:")),
custom_id="role_select:remove"
)
)