Как я могу изменить параметры команды косой черты?

Я использую discord.py. Например, если есть команда с именем «/food». Если пользователь использует «/food asian», существует новый параметр. Новый параметр включает «корейский», «японский», «китайский». И если пользователь использует «/food european». Существует новый параметр, который включает «немецкий», «французский», «английский». Как я могу изменить параметры команды косой черты ?

Можете ли вы отредактировать свой вопрос, включив в него свой код? Что пробовали, почему не работает.

Benjin 28.06.2024 19:15
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

То, что вы пытаетесь сделать, невозможно. Способ регистрации слэш-команд в 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

Вот что получается:

При запуске команды:

При вводе чего-то нет:

Когда вы вводите что-то действительное:

Когда вы выбираете что-то в меню выбора представления:

Используемая документация

Другие вопросы по теме