相关文章推荐

Discord.py的多字参数,另一个选择?

1 人关注

我知道我可以使用 *args ,我知道我可以使用 *, arg ,我知道我可以在命令周围使用引号,使它们作为一个参数阅读。最后一个选项似乎很吸引人,但有没有办法让机器人自动假设某个参数周围有引号,以允许多个词?也许允许我想说多少就说多少,直到一个特定的字符被使用,然后它就进入下一个参数?我不能用*args来做这个,因为最后的参数也需要允许多字。在不重建命令的情况下,我怎样才能允许一个参数接受多个单词?

我以前见过一个机器人这样做,但那是在js中,所以我实际上认为这可能是不可能的,但我不知道。

3 个评论
你能解释一下,你想做的是什么?
我希望能够输入这样的命令。替换代码0】,但只有当我输入 /name "hello my name is" --world --land 时才有可能这样做。基本上,我需要能够在最后使用多个参数(世界和土地各是一个过滤器,用 -- 分开)。目前的参数是 (self, ctx, nickname, *, filtered) ,我希望昵称部分能够允许多个字,而不需要多个字
你是否考虑过使用regex?
python
arguments
discord.py
args
Break
Break
发布于 2020-07-27
1 个回答
EpicRaisin
EpicRaisin
发布于 2020-08-19
已采纳
0 人赞同

这个函数将让你做到这一点。它将循环浏览字符串,将每个字符添加到一个单独的字符串中,如果它遇到指定的分隔符,它将把该字符串追加到一个列表中。它一直这样做,直到到达给定字符串的末尾。

def seperArgs(arg,delimeter):
    finalArgs = []
    toAppend = ''
    index = 0
    for i in arg:
        if(i == delimeter):
            finalArgs.append(toAppend.strip())
            toAppend = ''
        else:
            toAppend += i
        if(index == len(arg) - 1):
            finalArgs.append(toAppend.strip())
            toAppend = ''
        index += 1
    return finalArgs
 
推荐文章