Discord.py中使用*arg/**kwarg获取msg.content时出现内容重复问题
问题原因与解决方案
嘿,我一眼就看到你代码里的问题啦😉
为什么会出现内容重复?
你这段代码的核心问题出在循环拼接字符串的逻辑上:
var = str(msg.content) for arg in var: var += arg
这里var一开始是msg.content的内容(比如bonk bonkers),然后你遍历var的每一个字符,把每个字符都追加到var自己后面。相当于原字符串被反复拼接,最后var就变成了原字符串 + 原字符串的所有字符,自然就出现了重复内容。等你把空格替换成+之后,结果就变成了bonk+bonkersbonk+bonkers。
怎么解决?
其实你完全不需要这个多余的循环,直接处理原字符串就能达到目标。根据你的需求,这里有两种常见的实现方式:
1. 直接把整个命令里的空格替换成+
如果只是想把msg.content里所有空格换成+,一行代码就能搞定:
if msg.content.startswith('bonk'): var = msg.content.replace(' ', '+') print(var)
输入bonk bonkers的话,输出就是bonk+bonkers。
2. 拆分命令与参数(更灵活的写法)
如果你需要区分命令bonk和后面的参数,可以用split(maxsplit=1)来拆分,这样能避免命令本身被拆分:
if msg.content.startswith('bonk'): # 只拆分一次,把命令和参数分开 command_parts = msg.content.split(maxsplit=1) if len(command_parts) == 2: # 有参数的情况,把参数里的空格换成+,再和命令拼接 var = f"{command_parts[0]}+{command_parts[1].replace(' ', '+')}" else: # 只有bonk命令,没有参数 var = command_parts[0] print(var)
这种写法更适合复杂的命令场景,比如输入bonk hello world,会输出bonk+hello+world。
内容的提问来源于stack exchange,提问作者Edikku
相关产品推荐
相关产品推荐

