@Cupik

Ошибка при написании модального окна?

Помогите с кодом, чуть чуть его поменял и он перестал работать. В питоне разбираюсь плохо поэтому прошу

# -*- coding: utf-8 -*-
import disnake
from disnake.ext import commands
from disnake import TextInputStyle

TOKEN=''

bot = commands.Bot(
    command_prefix='/',
    sync_commands_debug=True
)



class RecruitementModal(disnake.ui.Modal):
    def init(self, arg):
        self.arg = arg  # arg - это аргумент, который передается в конструкторе класса RecruitementSelect
      
        components = [
            disnake.ui.TextInput(label="Ваше имя айди и ранг", placeholder="Введите ваше имя и ранг", custom_id="name"),
            disnake.ui.TextInput(label="С кем взаимодействуете", placeholder="Введите имя и айди работника ", custom_id="age"),
            disnake.ui.TextInput(label="Причина", placeholder="Введите причину действия ", custom_id="age")
        ]
        if self.arg == "moderator":
            title = "Повышение сотрудника"
          
        if self.arg == "eventsmod":
            title = "понижение сотрудника"
          
        if self.arg == "принятие сотрудника":
            title = "принятие сотрдника во фракцию"
          
        if self.arg == "увольнение сотрдника":
            title = "Уволнение сотрудника из фракции"
          
        if self.arg == "Выдача выговора":
            title = "Выдача выговора сотруднику"
          
        if self.arg == "Удаление выговора":
            title = "удаление выговора сотруднику"
        
        super().init(title=title, components=components, custom_id="recruitementModal")

    async def callback(self, interaction: disnake.ModalInteraction) -> None:
        name = interaction.text_values["name"]
        age = interaction.text_values["age"]
        embed = disnake.Embed(color=0x2F3136, title="Журнал обновлён!")
        embed.description = f"{interaction.author.mention}, Вы успешно отредактировали журнал аудита! "
        embed.set_thumbnail(url=interaction.author.display_avatar.url)
        await interaction.response.send_message(embed=embed, ephemeral=True)
        channel = interaction.guild.get_channel(1083668696460955718)  # Вставить ID канала куда будут отправляться заявки
        await channel.send(f"{name} {interaction.author.mention}Обновил кадровый аудит. {self.arg}  {age}")

class RecruitementSelect(disnake.ui.Select):
    def init(self):
        options = [
            disnake.SelectOption(label="Повышениe сотрудника", value="moderator", description=""),
          
            disnake.SelectOption(label="Понижение сотрудника", value="eventsmod", description=""),
          
          disnake.SelectOption(label="Принятие сотрдника во фракцию", value="принятие сотрудника", description=""),
          
            disnake.SelectOption(label="Увольнение сотрудника из фракции", value="увольнение сотрдника", description=""),
          
          disnake.SelectOption(label="⛔️Выдача варна сотрднику", value="+varn", description=""),
          
            disnake.SelectOption(label="⛔️Снятие варна сотруднику", value="-varn", description=""),
          
          disnake.SelectOption(label="⛔️Выдача предупреждения сотрднику", value="+pred", description=""),
          
            disnake.SelectOption(label="⛔️Снятие предупреждения сотруднику", value="-pred", description=""),
          
        ]
        super().init(
            placeholder="выберите действие", options=options, min_values=0, max_values=1, custom_id="recruitement"
        )

    async def callback(self, interaction: disnake.MessageInteraction):
        if not interaction.values:
            await interaction.response.defer()
        else:
            await interaction.response.send_modal(RecruitementModal(interaction.values[0]))


class Recruitement(commands.Cog):
    def init(self, bot):
        self.bot = bot
        self.persistents_views_added = False

@bot.slash_command()
async def recruit(self, ctx):
        view = disnake.ui.View()
        view.add_item(RecruitementSelect())
        # Тут можно добавть эмбед с описанием ролей
        await ctx.send('Выбери желаемое действие', view=view)

@commands.Cog.listener()
async def on_connect(self):
        if self.persistents_views_added:
            return

        view = disnake.ui.View(timeout=None)
        view.add_item(RecruitementSelect())
        self.bot.add_view(view,
                          message_id='1096439296434655232')  # Вставить ID сообщения, которое отправится после использования с команда !recruit

bot.run(TOKEN)


Ошибка:

Ignoring exception in slash command 'recruit':
Traceback (most recent call last):
File "/home/runner/test/venv/lib/python3.10/site-packages/disnake/ext/commands/slash_core.py", line 732, in invoke
await call_param_func(self.callback, inter, self.cog, **kwargs)
File "/home/runner/test/venv/lib/python3.10/site-packages/disnake/ext/commands/params.py", line 1022, in call_param_func
return await maybe_coroutine(safe_call, function, **kwargs)
File "/home/runner/test/venv/lib/python3.10/site-packages/disnake/utils.py", line 600, in maybe_coroutine
return await value
File "main.py", line 96, in recruit
await ctx.send('Выбери желаемое действие', view=view)
File "/home/runner/test/venv/lib/python3.10/site-packages/disnake/interactions/base.py", line 672, in send
await sender(
File "/home/runner/test/venv/lib/python3.10/site-packages/disnake/interactions/base.py", line 985, in send_message
await adapter.create_interaction_response(
File "/home/runner/test/venv/lib/python3.10/site-packages/disnake/webhook/async_.py", line 210, in request
raise HTTPException(response, data)
disnake.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In data.components.0.components.0.options: Must be between 1 and 25 in length.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/home/runner/test/venv/lib/python3.10/site-packages/disnake/ext/commands/interaction_bot_base.py", line 1377, in process_application_commands
await app_command.invoke(interaction)
File "/home/runner/test/venv/lib/python3.10/site-packages/disnake/ext/commands/slash_core.py", line 741, in invoke
raise CommandInvokeError(exc) from exc
disnake.ext.commands.errors.CommandInvokeError: Command raised an exception: HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In data.components.0.components.0.options: Must be between 1 and 25 in length.
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы