如何根据用户的语言设置,使应用程序命令的名称具有不同的名称
例如,如果一个用户将其discord的语言设置为英语,则用户可以看到英语的应用程序命令名称。另一方面,如果另一个用户将其不和谐语言设置为法语,则用户可以看到法语中的相同应用程序命令的名称。
为此,我尝试使用
app_commands.locale_str
但它不起作用。我认为这是因为
**kwarg
被传递并存储在参数
extras
中,所以它不会影响任何翻译。以下代码显示了我尝试过的代码示例。
@bot.tree.command(name=app_commands.locale_str(
"hello",
fr = 'bonjour',
),
guild=guild)
@app_commands.default_permissions(manage_channels = True)
async def hello(interaction: Interaction) -> None:
await interaction.response.send_message(content='hello')
请问有人可以建议方法来实现我上面解释的命令吗?或者如果有人知道这个方法,请告诉我如何实现。
很遗憾,目前 Discord API 还不直接支持通过用户语言设置自动翻译应用程序命令的名称和描述。
app_commands.locale_str
主要用于本地化命令的参数名称和描述,以及在交互式响应中使用的字符串,而不是命令本身的名称。
也就是说,你可以通过以下两种方法实现类似的效果:
1. 为不同语言创建独立的命令:
你可以为每种支持的语言创建单独的应用程序命令,并在命令名称中包含语言代码或标识符。 例如:
@bot.tree.command(name="hello_en", description="Greets the user (English)", guild=guild)
@app_commands.guilds(guild)
async def hello_en(interaction: Interaction):
await interaction.response.send_message("Hello!")
@bot.tree.command(name="bonjour_fr", description="Salue l'utilisateur (Français)", guild=guild)
@app_commands.guilds(guild)
async def bonjour_fr(interaction: Interaction):
await interaction.response.send_message("Bonjour !")
然后,你可以在你的机器人的其他功能中获取用户的语言设置,并引导他们使用相应语言的命令。
2. 使用 Discord API 进行动态更新:
你可以使用 Discord API 定期更新应用程序命令的名称和描述,以匹配用户的语言设置。 这需要你:
- 获取服务器上用户的语言偏好设置。
- 使用 Discord API 更新应用程序命令的名称和描述,为每个语言版本创建一个新的命令。
这种方法比较复杂,需要更多的 API 调用,但可以提供更无缝的用户体验。
需要注意的是:
- 无论你选择哪种方法,都需要在你的机器人的界面中清楚地传达哪些语言可用。
- 你需要手动翻译所有命令和描述。
希望这些信息能帮到你!
标签:python,discord.py From: 78804140