Нашел вот такой модуль для бота в дискорд: используется команда, которое создает Embed с выбором 3 должностей с помощью SelectMenu. При выборе должности создается форма для записи ответов на соответствующие вопросы. Но при подачи этой формы возникает ошибка: "Что-то пошло не так. повторите попытку." Ниже прикреплю скрины и скрипт команды. import discord from discord import ui from discord.ext import commands class Select(discord.ui.Select): def __init__(self): options = [ discord.SelectOption(label='Worker [F]', description='Подать заявку.'), discord.SelectOption(label='Worker [M]', description='Подать заявку.'), discord.SelectOption(label='Referee', description='Подать заявку.') ] super().__init__(placeholder='Выбери должность', max_values=1, min_values=1, options=options) async def callback(self, interaction: discord.Interaction): try: if self.values[0] == "Worker [F]": await interaction.response.send_modal(WorkerfModal()) elif self.values[0] == "Worker [M]": await interaction.response.send_modal(WorkermModal()) elif self.values[0] == "Referee": await interaction.response.send_modal(RefereeModal()) else: await interaction.response.send_message('Error!', ephemeral=True) except Exception as e: await interaction.response.send_message(f"Ошибка в Select: {e}", ephemeral=True) print(f"Select callback error: {e}") class SelectView(discord.ui.View): def __init__(self): super().__init__(timeout=None) self.add_item(Select()) class WorkerfModal(discord.ui.Modal): def __init__(self): super().__init__(title='Заявка на Worker [F]') # Передача заголовка через __init__ # Поля ввода self.add_item(discord.ui.InputText(label='Ваше имя и возраст', required=True, max_length=40)) self.add_item(discord.ui.InputText(label='Был ли опыт на других серверах?', required=True, placeholder='Не забудь оставить ссылочки', max_length=100)) self.add_item(discord.ui.InputText(label='Почему именно ты?', required=True, max_length=500)) self.add_item(discord.ui.InputText(label='Сколько часов готов уделять серверу в день?', required=True, placeholder='Также укажи свой часовой пояс', max_length=50)) async def on_submit(self, interaction: discord.Interaction): try: log_channel = discord.utils.get(interaction.guild.channels, id=1310291077156044920) if log_channel is None: await interaction.response.send_message('Не удалось найти лог-канал. Сообщите администратору.', ephemeral=True) return user = interaction.user emb = discord.Embed( title='**Заявка на Worker [F]**', description=f'Имя и возраст: {self.children[0].value} \nОпыт: {self.children[1].value} \nО себе: {self.children[2].value} \nВремя и часовой пояс: {self.children[3].value} \n {user.mention}', color=0xa33bff ) await interaction.response.send_message('Ваша заявка будет рассмотрена в ближайшее время', ephemeral=True) await log_channel.send(embed=emb) except Exception as e: await interaction.response.send_message(f"Произошла ошибка при отправке заявки: {e}", ephemeral=True) print(f"Error in WorkerfModal on_submit: {e}") class WorkermModal(discord.ui.Modal): def __init__(self): super().__init__(title='Заявка на Worker [M]') self.add_item(discord.ui.InputText(label='Ваше имя и возраст', required=True, max_length=40)) self.add_item(discord.ui.InputText(label='Был ли опыт на других серверах?', required=True, placeholder='Не забудь оставить ссылочки', max_length=100)) self.add_item(discord.ui.InputText(label='Почему именно ты?', required=True, max_length=500)) self.add_item(discord.ui.InputText(label='Сколько часов готов уделять серверу в день?', required=True, placeholder='Также укажи свой часовой пояс', max_length=50)) async def on_submit(self, interaction: discord.Interaction): log_channel = discord.utils.get(interaction.guild.channels, id=1310291077156044920) if log_channel is None: await interaction.response.send_message('Не удалось найти лог-канал. Сообщите администратору.', ephemeral=True) return user = interaction.user emb = discord.Embed( title='**Заявка на Worker [M]**', description=f'Имя и возраст: {self.children[0].value} \nОпыт: {self.children[1].value} \nО себе: {self.children[2].value} \nВремя и часовой пояс: {self.children[3].value} \n {user.mention}', color=0xa33bff ) await interaction.response.send_message('Ваша заявка будет рассмотрена в ближайшее время', ephemeral=True) await log_channel.send(embed=emb) class RefereeModal(discord.ui.Modal): def __init__(self): super().__init__(title='Заявка на Referee') self.add_item(discord.ui.InputText(label='Ваше имя и возраст', required=True, max_length=40)) self.add_item(discord.ui.InputText(label='Был ли опыт на других серверах?', required=True, placeholder='Не забудь оставить ссылочки', max_length=100)) self.add_item(discord.ui.InputText(label='Почему именно ты?', required=True, max_length=500)) self.add_item(discord.ui.InputText(label='Сколько часов готов уделять серверу в день?', required=True, placeholder='Также укажи свой часовой пояс', max_length=50)) async def on_submit(self, interaction: discord.Interaction): log_channel = discord.utils.get(interaction.guild.channels, id=1310291077156044920) if log_channel is None: await interaction.response.send_message('Не удалось найти лог-канал. Сообщите администратору.', ephemeral=True) return user = interaction.user emb = discord.Embed( title='**Заявка на Referee**', description=f'Имя и возраст: {self.children[0].value} \n' f'Опыт: {self.children[1].value} \n' f'О себе: {self.children[2].value} \n' f'Время и часовой пояс: {self.children[3].value} \n' f'{user.mention}', color=0xa33bff ) await interaction.response.send_message('Ваша заявка будет рассмотрена в ближайшее время', ephemeral=True) await log_channel.send(embed=emb) class StaffModal(commands.Cog): def __init__(self, bot: commands.Bot): self.bot = bot @commands.slash_command( name='staff', description='Регистрация на персонал') @commands.has_permissions(administrator=True) async def create_staff_modal(self, ctx): emb = discord.Embed( title='**Подача заявки на вступление в Стафф**', description="Здесь вы можете подать свою заявку на вступление в Стафф.\nУбедительная просьба не менять никнейм после подачи заявки, так как в данном случае у нас не будет возможности связаться с вами.", color=0xA33BFF ) await ctx.send(embed=emb, view=SelectView()) def setup(bot: commands.Bot) -> None: bot.add_cog(StaffModal(bot)) Python import discord from discord import ui from discord.ext import commands class Select(discord.ui.Select): def __init__(self): options = [ discord.SelectOption(label='Worker [F]', description='Подать заявку.'), discord.SelectOption(label='Worker [M]', description='Подать заявку.'), discord.SelectOption(label='Referee', description='Подать заявку.') ] super().__init__(placeholder='Выбери должность', max_values=1, min_values=1, options=options) async def callback(self, interaction: discord.Interaction): try: if self.values[0] == "Worker [F]": await interaction.response.send_modal(WorkerfModal()) elif self.values[0] == "Worker [M]": await interaction.response.send_modal(WorkermModal()) elif self.values[0] == "Referee": await interaction.response.send_modal(RefereeModal()) else: await interaction.response.send_message('Error!', ephemeral=True) except Exception as e: await interaction.response.send_message(f"Ошибка в Select: {e}", ephemeral=True) print(f"Select callback error: {e}") class SelectView(discord.ui.View): def __init__(self): super().__init__(timeout=None) self.add_item(Select()) class WorkerfModal(discord.ui.Modal): def __init__(self): super().__init__(title='Заявка на Worker [F]') # Передача заголовка через __init__ # Поля ввода self.add_item(discord.ui.InputText(label='Ваше имя и возраст', required=True, max_length=40)) self.add_item(discord.ui.InputText(label='Был ли опыт на других серверах?', required=True, placeholder='Не забудь оставить ссылочки', max_length=100)) self.add_item(discord.ui.InputText(label='Почему именно ты?', required=True, max_length=500)) self.add_item(discord.ui.InputText(label='Сколько часов готов уделять серверу в день?', required=True, placeholder='Также укажи свой часовой пояс', max_length=50)) async def on_submit(self, interaction: discord.Interaction): try: log_channel = discord.utils.get(interaction.guild.channels, id=1310291077156044920) if log_channel is None: await interaction.response.send_message('Не удалось найти лог-канал. Сообщите администратору.', ephemeral=True) return user = interaction.user emb = discord.Embed( title='**Заявка на Worker [F]**', description=f'Имя и возраст: {self.children[0].value} \nОпыт: {self.children[1].value} \nО себе: {self.children[2].value} \nВремя и часовой пояс: {self.children[3].value} \n {user.mention}', color=0xa33bff ) await interaction.response.send_message('Ваша заявка будет рассмотрена в ближайшее время', ephemeral=True) await log_channel.send(embed=emb) except Exception as e: await interaction.response.send_message(f"Произошла ошибка при отправке заявки: {e}", ephemeral=True) print(f"Error in WorkerfModal on_submit: {e}") class WorkermModal(discord.ui.Modal): def __init__(self): super().__init__(title='Заявка на Worker [M]') self.add_item(discord.ui.InputText(label='Ваше имя и возраст', required=True, max_length=40)) self.add_item(discord.ui.InputText(label='Был ли опыт на других серверах?', required=True, placeholder='Не забудь оставить ссылочки', max_length=100)) self.add_item(discord.ui.InputText(label='Почему именно ты?', required=True, max_length=500)) self.add_item(discord.ui.InputText(label='Сколько часов готов уделять серверу в день?', required=True, placeholder='Также укажи свой часовой пояс', max_length=50)) async def on_submit(self, interaction: discord.Interaction): log_channel = discord.utils.get(interaction.guild.channels, id=1310291077156044920) if log_channel is None: await interaction.response.send_message('Не удалось найти лог-канал. Сообщите администратору.', ephemeral=True) return user = interaction.user emb = discord.Embed( title='**Заявка на Worker [M]**', description=f'Имя и возраст: {self.children[0].value} \nОпыт: {self.children[1].value} \nО себе: {self.children[2].value} \nВремя и часовой пояс: {self.children[3].value} \n {user.mention}', color=0xa33bff ) await interaction.response.send_message('Ваша заявка будет рассмотрена в ближайшее время', ephemeral=True) await log_channel.send(embed=emb) class RefereeModal(discord.ui.Modal): def __init__(self): super().__init__(title='Заявка на Referee') self.add_item(discord.ui.InputText(label='Ваше имя и возраст', required=True, max_length=40)) self.add_item(discord.ui.InputText(label='Был ли опыт на других серверах?', required=True, placeholder='Не забудь оставить ссылочки', max_length=100)) self.add_item(discord.ui.InputText(label='Почему именно ты?', required=True, max_length=500)) self.add_item(discord.ui.InputText(label='Сколько часов готов уделять серверу в день?', required=True, placeholder='Также укажи свой часовой пояс', max_length=50)) async def on_submit(self, interaction: discord.Interaction): log_channel = discord.utils.get(interaction.guild.channels, id=1310291077156044920) if log_channel is None: await interaction.response.send_message('Не удалось найти лог-канал. Сообщите администратору.', ephemeral=True) return user = interaction.user emb = discord.Embed( title='**Заявка на Referee**', description=f'Имя и возраст: {self.children[0].value} \n' f'Опыт: {self.children[1].value} \n' f'О себе: {self.children[2].value} \n' f'Время и часовой пояс: {self.children[3].value} \n' f'{user.mention}', color=0xa33bff ) await interaction.response.send_message('Ваша заявка будет рассмотрена в ближайшее время', ephemeral=True) await log_channel.send(embed=emb) class StaffModal(commands.Cog): def __init__(self, bot: commands.Bot): self.bot = bot @commands.slash_command( name='staff', description='Регистрация на персонал') @commands.has_permissions(administrator=True) async def create_staff_modal(self, ctx): emb = discord.Embed( title='**Подача заявки на вступление в Стафф**', description="Здесь вы можете подать свою заявку на вступление в Стафф.\nУбедительная просьба не менять никнейм после подачи заявки, так как в данном случае у нас не будет возможности связаться с вами.", color=0xA33BFF ) await ctx.send(embed=emb, view=SelectView()) def setup(bot: commands.Bot) -> None: bot.add_cog(StaffModal(bot))
richmen1222, если честно, щас смотрю на код и не могу точно сказать из-за чего все таки заработало. Но я изменил функцию callback в модуле Select и модуль SelectView переместил ниже модулей с ролями (прибег к помощи нейросети). Исправленный вариант callback: async def callback(self, interaction: discord.Interaction): role = self.values[0] if role == "Worker [F]": await interaction.response.send_modal(WorkerfForm("Worker [F]")) elif role == "Worker [M]": await interaction.response.send_modal(WorkermForm("Worker [M]")) else: await interaction.response.send_message("Неизвестная роль.", ephemeral=True). Так же убрал приписку discord в скобках модуля, и там где она в них используется. Точно не знаю что из этого помогло избавится от ошибки, думаю ты лучше поймешь (может быть что-то еще пропустил, но вроде бы все остальное осталось то же)