Что вызывает ошибку "disnake dropdown"?

Почему при нажатии на опцию в выпадающем списке ничего не происходит в этом коде? Вот соответствующая часть кода:
  • 23 марта 2024 г. 6:29
Ответы на вопрос 2
import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.command()
async def test(ctx):
    select = disnake.ui.Select(placeholder='Choose an option', options=[
        disnake.SelectOption(label='Option 1', value='1'),
        disnake.SelectOption(label='Option 2', value='2')
    ])

    await ctx.send(content='Please select an option:', components=[select])

@bot.event
async def on_select(ctx, interaction):
    if interaction.data['values'][0] == '1':
        await ctx.send('You selected Option 1')
    elif interaction.data['values'][0] == '2':
        await ctx.send('You selected Option 2')

bot.run('TOKEN')

Ошибка "disnake dropdown" возникает, потому что в библиотеке Disnake отсутствует класс "dropdown". Вместо этого используется класс "disnake.ui.Select", чтобы создавать выпадающие списки.

При нажатии на опцию в выпадающем списке ничего не происходит, потому что не определен слушатель события on_select для обработки выбора пользователем опции. Добавьте следующий код к вашему проекту, чтобы определить этот слушатель события:

```python
@bot.event
async def on_select(ctx, interaction):
    if interaction.custom_id == select.custom_id:
        selected_option = interaction.values[0]
        if selected_option == '1':
            await ctx.send('You selected Option 1')
        elif selected_option == '2':
            await ctx.send('You selected Option 2')
```

После этого, при выборе опции в выпадающем списке, соответствующее сообщение будет отправлено в чат.
В чём проблема?
В том что класс staffapp наследуется от commands.Cog, а не ui.Modal. Эффекта от того что вы сделаете в произвольном классе функцию callback не будет.
На русском есть очень подробная документация .
Похожие вопросы