Я использую discord.py. Например, если есть команда с именем «/food». Если пользователь использует «/food asian», существует новый параметр. Новый параметр включает «корейский», «японский», «китайский». И если пользователь использует «/food european». Существует новый параметр, который включает «немецкий», «французский», «английский». Как я могу изменить параметры команды косой черты ?
То, что вы пытаетесь сделать, невозможно. Способ регистрации слэш-команд в Discord не позволяет изменять параметры на ходу. Однако мы можем сделать что-то немного другое, что позволит нам сделать что-то очень похожее.
Следующий подход заключается в том, чтобы принять первый ввод пользователя и вернуть меню выбора, где он может выбрать второй ответ. Это означает, что вы можете связать другое представление с другим ответом (однако в примере, который я использовал одно и то же представление дважды, вы, конечно, можете использовать разные представления для каждого ответа, чтобы предоставить пользователю больше возможностей).
# --- Imports ---
import discord
import os
from discord import app_commands
from discord.ui import Select
intents = discord.Intents.default()
bot = discord.Client(intents=intents)
tree = app_commands.CommandTree(bot)
# --- Sync Commands ---
@bot.event
async def on_ready():
await tree.sync()
print('tree synced')
# --- View used later to select the food's country or something ---
class View(discord.ui.View):
@discord.ui.select(cls=Select, options=[discord.SelectOption(label=x, value=x) for x in ['France', 'other_country', 'other_other_country']])
async def select_country(self, interaction: discord.Interaction, select):
return await interaction.response.send_message(f'You selected {select.values[0]}')
# --- Command to select food ---
@tree.command()
@app_commands.choices(food=[
app_commands.Choice(name = "Choice_one", value = "1"),
app_commands.Choice(name = "Choice_two", value = "2")
])
async def testing_options(ctx, food: app_commands.Choice[str]):
# Return view
if food == "1": # If the food selected is the first choice
await ctx.response.send_message('Hello', view=View())
else: # If the food is the second choice
await ctx.response.send_message('Hello2', view=View()) # I used the same view twice, but if you want a different select menu, use another view
Можете ли вы отредактировать свой вопрос, включив в него свой код? Что пробовали, почему не работает.