首页 > 解决方案 > Discord.py - 有没有办法使用 *args 或带有多个单词的参数而不是最后一个参数?

问题描述

这是当前命令:

`async def namemembers(self, ctx, members, name, *args):`

这工作得很好,但我想在 *args 之后添加更多参数,或者如果有另一种使用name参数的方法来允许空格和多个单词。如果我尝试做类似的事情:

`async def namemembers(self, ctx, members, name, *args, worlds):`

为了定义世界,它总是说这world是一个缺失的必要参数。“世界”被 a 分割,/但它仍将 a 视为/*args 的一部分。理想情况下,我会有这样的命令:

`async def nameM(self, ctx, name, *, worlds):`

这将允许我使用name多个单词的参数。由于目前以这种方式使用它“允许”我输入多个单词,但机器人无论如何只发回第一个单词。

希望我的问题是有道理的。

标签: pythonbotsdiscordargs

解决方案


No.*args是模棱两可的,因为它需要任意数量的参数,因此 Python 无法知道您何时完成了*args和 on worlds

Python 不知道也不允许你强迫worlds自己成为一个 kwarg。

根据经验,您可以按以下顺序编写带有参数的方法:

def main(arg1, arg2, ..., *args, *kwargs):
    pass

推荐阅读