Как добавить параметр выбора в слеш-команду в DISNAKE?

Как создать команду с выбором, подобным тому, что показан на картинке, для моего бота на Disnake?
Изображение к вопросу
  • 3 октября 2023 г. 16:27
Ответы на вопрос 2
В Disnake вы можете добавить параметр выбора (или аргумент выбора) в вашу слеш-команду, используя `OptionChoice` и `OptionType` модуля `disnake`:

```python
from disnake import OptionChoice, OptionType

@bot.slash_command()
async def my_command(ctx, choice: OptionType(
    # Создаем аргумент выбора с несколькими вариантами
    choices=[
        OptionChoice(name="Вариант 1", value="option1"),
        OptionChoice(name="Вариант 2", value="option2"),
        OptionChoice(name="Вариант 3", value="option3")
    ]
)):
    # Используем выбранный вариант
    if choice == "option1":
        await ctx.send("Вы выбрали вариант 1")
    elif choice == "option2":
        await ctx.send("Вы выбрали вариант 2")
    elif choice == "option3":
        await ctx.send("Вы выбрали вариант 3")
```

В приведенном выше примере определена слеш-команда `my_command`, которая принимает один аргумент `choice`. Аргумент `choice` имеет тип `OptionType`, который определен как `OptionType(choices=...)`, где `choices` - это список объектов `OptionChoice`. Каждый объект `OptionChoice` представляет один вариант выбора и состоит из имени (`name`) и значения (`value`).

При выполнении команды пользователь может выбрать один из указанных вариантов, и выбранное значение будет передано в аргумент `choice` команды. В зависимости от выбранного значения можно выполнить определенные действия.

Для отображения слеш-команды с выбором на Discord, необходимо добавить эту команду на сервер и использовать команду `/command` для ее вызова. В отличие от обычных текстовых команд, параметры с выбором отображаются в виде выпадающего списка, где пользователь может выбрать один из вариантов.
Это делается через параметр OptionChoice 

Пример кода:


Поле выбора идёт в формате str(Значение) | int(Ключ)

Поэтому можете простой математикой, делать проверки на ключ такие как match, или if, elif, else проверяя перменную var.
Похожие вопросы