Python 3.x 如何操作@client.command()节中的message.content而不丢失RequiredArgument错误

Python 3.x 如何操作@client.command()节中的message.content而不丢失RequiredArgument错误,python-3.x,discord,discord.py,Python 3.x,Discord,Discord.py,我创建了一个ticket命令,在该命令中,一个人发送“>ticket”,然后发送一个问题。但是,当我在同一个函数中使用ctx和msg时,我会得到错误: discord.ext.commands.errors.MissingRequiredArgument:msg是缺少的必需参数。 当我在函数中切换ctx和msg的顺序时,ctx会出错 @client.command() 异步def票据(ctx,msg): 如果msg.content.startswith('>ticket'): 打印('已生成票据

我创建了一个ticket命令,在该命令中,一个人发送“>ticket”,然后发送一个问题。但是,当我在同一个函数中使用ctx和msg时,我会得到错误:
discord.ext.commands.errors.MissingRequiredArgument:msg是缺少的必需参数。
当我在函数中切换ctx和msg的顺序时,ctx会出错

@client.command()
异步def票据(ctx,msg):
如果msg.content.startswith('>ticket'):
打印('已生成票据')

我尝试了在2和之间使用*的方法,这给了我相同的错误。我还试着把这个if语句放在
on_message
函数中,但这使得当我输入“>ticket”时命令不会运行,只执行
on_message
函数中的代码。

你可以使用
ctx.message
,但问题是,你正在使用一个命令。它已经被命名为
ticket
(除了
>ticket
,您不能以任何其他方式调用它),您是否再次检查它是否是正确的命令?没有任何意义

消息的其余部分将在
msg
变量中,因此您不必将其删除。如果您仅将其用作
>票证
,则不会向函数传递额外参数,因此,正如您的错误所示,它将
丢失

阻止引发错误的一种方法是,通过给它一个默认值,使其成为可选的,然后检查是否传递了任何内容

@client.command()
异步def票据(ctx,*,msg=None):
如果msg为None:
打印(“未传递任何参数!”)
其他:
打印(f“消息的其余部分是:{msg}”)

我稍后在该函数中使用命令的ctx部分发送embedsHow时,只需将ctx传递给它并使用ctx.message获取消息,因此我应该将消息设置为
ctx.message.startswith(“>ticket”)
?您应该具有
async def ticket(ctx):
您可以使用命令下的
msg=ctx.message
获取消息我尝试这种方法时出现以下错误
RuntimeWarning:Enable tracemalloc获取对象分配回溯
我正在检查开始,以便以后可以剥离命令部分,只保留它们在命令之后发送的消息指挥部。抱歉搞混了。如果需要参数,请在函数中传递它们,这也没有意义。我认为您不知道命令是如何工作的,请看一下“非常感谢”,它解决了我的问题!
>ticket

>>> No arguments were passed!

>ticket something something

>>> The rest of the message is: something something