import discord import aiosqlite from discord.ext import commands from discord.commands import slash_command, SlashCommandGroup from datetime import datetime class ApplySystem(commands.Cog): def __init__(self, bot): self.bot = bot @commands.Cog.listener() async def on_ready(self): self.bot.add_view(ApplySelectMenü()) async with aiosqlite.connect("database/applications.db") as db: async with db.cursor() as cursor: await cursor.execute( """CREATE TABLE IF NOT EXISTS applications ( guild_id INTEGER, accept_msg TEXT, deny_msg TEXT )""" ) await db.commit() apply_group = SlashCommandGroup( name= "setup", description="Apply for a job", ) @apply_group.command( name="apply", description="Apply for a job", ) async def apply(self, ctx): embed = discord.Embed( title="Apply for a job", description="", color=0x8b88f8, ) await ctx.respond(embed=embed, view=ApplySelectMenü()) class ApplySelectMenü(discord.ui.View): def __init__(self): super().__init__(timeout=None) options = [ discord.SelectOption( label="Erstellen", description="Erstelle ein Apply", emoji="✅" ), discord.SelectOption( label="Bearbeiten", description="Bearbeite ein Application", emoji="✏️" ), discord.SelectOption( label="Löschen", description="Lösche eine Application", emoji="❌" ), discord.SelectOption( label="Codes", description="Bearbeite eine Application", emoji="🎯" ), ] @discord.ui.select( placeholder="🀄️ | Erstelle eine Application", min_values=1, max_values=1, options=options, custom_id="apply_select", ) async def callback( self, select: discord.ui.Select, interaction: discord.Interaction ): select.disabled = True await interaction.message.edit(view=self) selected_option = select.values[0] if selected_option == "Erstellen": selectmenü1 = ErstellenSelectMenü() await interaction.response.send_message( embed=discord.Embed( title="Default Title", description="Default Description", ) , view=selectmenü1) if selected_option == "Bearbeiten": await interaction.response.send_message("test 2") if selected_option == "Löschen": await interaction.response.send_message("test 3") if selected_option == "Codes": await interaction.response.send_message("test 4") class ErstellenSelectMenü(discord.ui.View): def __init__(self): super().__init__(timeout=None) options = [ discord.SelectOption( label="Application Channel", description="Set the Channel where the Application starts", ), discord.SelectOption( label="Finished Application Channel", description="Set the Channel where the Application is finished", ), discord.SelectOption( label="Embed Title", description="Set the Message Title from the Application Info embed Title", ), discord.SelectOption( label="Message Create", description="Create a Message for the Application (Requeriments)", ), discord.SelectOption( label="Questions Create", description="Create a Questions for the Application", ), discord.SelectOption( label="Color Select", description="Select a Color for the Application Embed", ), discord.SelectOption( label="Create Accept Message", description="Create a Message for the Accepted Application", ), discord.SelectOption( label="Create Deny Message", description="Create a Message for the Denied Application", ), discord.SelectOption( label="Configure Ticket Open", description="Configure the Ticket Open for the Application", ), discord.SelectOption( label="Finished", description="Finish to Create the Application", ), ] @discord.ui.select( placeholder="🀄️ | Create a Application", min_values=1, max_values=1, options=options, custom_id="apply_select", ) async def callback( self, select: discord.ui.Select, interaction: discord.Interaction ): await interaction.message.edit(view=self) selected_option = select.values[0] if selected_option == "Application Channel": await interaction.response.send_message("Test 1") if selected_option == "Finished Application Channel": await interaction.response.send_message("Test 2", ephemeral= True) if selected_option == "Embed Title": await interaction.response.send_modal(TitleModal()) if selected_option == "Message Create": await interaction.response.send_modal(MessageModal()) if selected_option == "Questions Create": await interaction.response.send_message("Test 3", ephemeral= True) if selected_option == "Color Select": await interaction.response.send_message( view=ColorSelect(msg=interaction), ephemeral=True ) if selected_option == "Create Accept Message": await interaction.response.send_modal(AcceptModal()) if selected_option == "Create Deny Message": await interaction.response.send_modal(DenyModal()) if selected_option == "Configure Ticket Open": await interaction.response.send_message("Test 4", ephemeral= True) if selected_option == "Finished": await interaction.response.send_message("Test 5", ephemeral= True) class TitleModal(discord.ui.Modal): def __init__(self): super().__init__( discord.ui.InputText( label="Application Title", placeholder="Write your Application Title here", ), title="Application Title", ) async def callback(self, interaction: discord.Interaction): embed = interaction.message.embeds[0].copy() embed.title = ( self.children[0].value if self.children[0].value else "No Title set" ) await interaction.response.edit_message(embed=embed) class MessageModal(discord.ui.Modal): def __init__(self): super().__init__( discord.ui.InputText( label="Message Create", placeholder="Write your Message here", style=discord.InputTextStyle.paragraph, ), title="Message Create", ) async def callback(self, interaction: discord.Interaction): embed = interaction.message.embeds[0].copy() embed.description = ( self.children[0].value if self.children[0].value else "No Message set" ) await interaction.response.edit_message(embed=embed) options = [ discord.SelectOption(label="White", value="0xFFFFFF", emoji="⚪"), discord.SelectOption(label="Black", value="0x000000", emoji="⚫"), discord.SelectOption(label="Teal", value="0x1ABC9C", emoji="💠"), discord.SelectOption(label="Dark Teal", value="0x11806A", emoji="🌀"), discord.SelectOption(label="Green", value="0x2ECC71", emoji="🟢"), discord.SelectOption(label="Dark Green", value="0x1F8B4C", emoji="🍀"), discord.SelectOption(label="Blue", value="0x3498DB", emoji="🔵"), discord.SelectOption(label="Dark Blue", value="0x206694", emoji="📘"), discord.SelectOption(label="Purple", value="0x9B59B6", emoji="🟣"), discord.SelectOption(label="Dark Purple", value="0x71368A", emoji="🔮"), discord.SelectOption(label="Magenta", value="0xE91E63", emoji="🌸"), discord.SelectOption(label="Dark Magenta", value="0xAD1457", emoji="🎆"), discord.SelectOption(label="Yellow", value="0xFEE75C", emoji="💛"), discord.SelectOption(label="Gold", value="0xF1C40F", emoji="🌟"), discord.SelectOption(label="Orange", value="0xE67E22", emoji="🟠"), discord.SelectOption(label="Dark Orange", value="0xA84300", emoji="🍊"), discord.SelectOption(label="Red", value="0xE74C3C", emoji="🔴"), discord.SelectOption(label="Dark Red", value="0x992D22", emoji="🌹"), discord.SelectOption(label="Light Grey", value="0x979C9F", emoji="⚪"), discord.SelectOption(label="Dark Grey", value="0x607D8B", emoji="⚫"), ] class ColorSelect(discord.ui.View): def __init__(self, msg): self.msg = msg super().__init__(timeout=None) @discord.ui.select( placeholder="🀄️ | Select a Color", options=options, custom_id="editor_dropdown_color", ) async def callback(self, select: discord.ui.Select, ctx: discord.Interaction): select.disabled = True emb = self.msg.message.embeds[0].copy() emb.color = int(select.values[0], 16) await self.msg.followup.edit_message(self.msg.message.id, embed=emb) await ctx.response.edit_message(view=self) class AcceptModal(discord.ui.Modal): def __init__(self): super().__init__( discord.ui.InputText( label="Application Accept Message", placeholder="Write your Application accept message here", ), title="Accept Message", ) async def callback(self, interaction: discord.Interaction): await interaction.response.send_message("Accept Message set", ephemeral= True) class DenyModal(discord.ui.Modal): def __init__(self): super().__init__( discord.ui.InputText( label="Application Deny Message", placeholder="Write your Application deny Message here", ), title="Deny Message", ) async def callback(self, interaction: discord.Interaction): await interaction.response.send_message("Deny Message set", ephemeral= True) def setup(bot): bot.add_cog(ApplySystem(bot))