Как добавить выбор переменных в discord slassh comand?
У меня есть рабочая slash команда, но т.к. есть переменные для ввода двух параметров, я отсылаю людям ссылку на гугл документы со списком ключевых команд. Это не совсем удобно и красиво, недавно узнал, что в дискорде существует выбор переменных в слэш командах, вот такой:
https://i.stack.imgur.com/yjLu7.png https://i.stack.imgur.com/d3jwc.png
Я использую disnake, поэтому мой код выглядит так:
files_path = r"General/VseIkon"
@bot.slash_command(name='random_icon', description = "отправляет случайный значок профиля", sync_commands_debug=True)
async def random_icon(inter: disnake.ApplicationCommandInteraction):
await inter.response.defer()
await asyncio.sleep(1)
files_list = os.listdir(files_path)
file_name = random.choice(files_list)
name = file_name.replace('.png', '')
await inter.edit_original_response(f'Вам выпал значок профиля: **«{name}»**', file=discord.File(f'General/VseIkon/{file_name}'))
with open("counter.txt", "a") as f:
f.write("random_icon " + str(datetime.now()) + "\n")
В идеале, я хочу, чтобы пользователю при вводе команды и выборе первого параметра предлагался выбор из списка который я впишу в код, и в зависимости от того, что он выберет, во второй переменной будет выбор переменных которые относятся именно к первому.
Если кто-то знает, как это сделать, помогите пожалуйста.
Ответы (1 шт):
Возьмём самый простой пример. Создадим варианты Один и Два:
В name будет значение которое будет видно пользователю.
В value значение на которое мы будем присылать ответ.
@app_commands.choices(test=[
app_commands.Choice(name="Один", value="test1"),
app_commands.Choice(name="Два", value="test2")
])
Теперь перейдём к самой команде. Нам необходимо создать аргумент в котором будут эти варианты:
async def _test(interaction: discord.Interaction, test: app_commands.Choice[str])
Готово. Осталось реализовать разные ответы на два этих аргумента:
if test.value == 'test1':
#ответ на выбор "Один"
if test.value == 'test2':
#ответ на выбор "Два"