在 discord.py 中,如何将多个单词设置为一个参数,但仍然要求用户输入一个参数?

In discord.py how can I set multiple words as one argument, but still require the user to put in an argument?

所以,我不确定标题是否可读,但基本上我想设置一个静音命令。 您可以出于某种原因在其中放置多个单词,但也应该要求您将参数放在那里作为一种故障保护。

这是我目前拥有的:

@bot.command()
@commands.has_permissions(administrator=True) #checking permissions
async def mute(ctx, member:discord.Member, *args):
...
reason = ' '.join(args)
...
await member.send(f"You have been muted because of {reason}")

但是如果有人没有给出原因,我不希望命令执行而是触发 MissingRequiredArgument 错误。在我设置它之前,你只能写一个单词作为参数或者把它放在引号里什么的。这确实以用户需要提出争论的方式取得了成功,但我确实希望它以当前的方式工作。 那可能吗?预先感谢您的帮助!

基于 documentation,您将改为使用 *, args。以下是文档中的代码。

@bot.command()
async def test(ctx, *, arg):
    await ctx.send(arg)

if reason in ['', ' ', None]: raise MissingRequiredArgument

您可以在发送行上方尝试。您还可以按照其他用户所说的进行操作,还可以设置 arg 参数 arg=None 以便它始终为 None 除非有人输入更多内容。如果是 None,请执行与我上面所写类似的操作。