You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:23:14