Discord.py 多字参数,另一种选择?
Discord.py multi word arguments, another option?
我知道我可以使用 *args
,我知道我可以使用 *, arg
,我知道我可以在命令周围使用引号,使它们作为一个参数来读取。最后一个选项似乎很吸引人,但有没有办法让机器人自动假设在某个参数周围有引号以允许多个单词?也许在使用特定字符之前允许尽可能多的单词,然后它会进入下一个参数?我不能为此使用 *args 因为最后一个参数也需要允许多个单词。不重构命令,如何允许一个参数接受多个单词?
我以前见过一个机器人这样做,但它是在 js 中,所以我实际上认为这可能是不可能的,但 idk。
这个函数会让你做到这一点。它将遍历字符串,将每个字符添加到一个单独的字符串中,如果遇到指定的分隔符,它将将该字符串附加到列表中。它一直这样做,直到到达给定字符串的末尾。
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
print(seperArgs('hello my name is -world -land','-'))
#should print: ['hello my name is', 'world', 'land']
我知道我可以使用 *args
,我知道我可以使用 *, arg
,我知道我可以在命令周围使用引号,使它们作为一个参数来读取。最后一个选项似乎很吸引人,但有没有办法让机器人自动假设在某个参数周围有引号以允许多个单词?也许在使用特定字符之前允许尽可能多的单词,然后它会进入下一个参数?我不能为此使用 *args 因为最后一个参数也需要允许多个单词。不重构命令,如何允许一个参数接受多个单词?
我以前见过一个机器人这样做,但它是在 js 中,所以我实际上认为这可能是不可能的,但 idk。
这个函数会让你做到这一点。它将遍历字符串,将每个字符添加到一个单独的字符串中,如果遇到指定的分隔符,它将将该字符串附加到列表中。它一直这样做,直到到达给定字符串的末尾。
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
print(seperArgs('hello my name is -world -land','-'))
#should print: ['hello my name is', 'world', 'land']