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

Discord.py机器人命令如何传入包含空格的内容参数?

原因

Discord.py 的默认命令解析器以空格作为参数分割依据,你当前代码里定义的data: str参数只会匹配到第一个空格前的文本片段,因此带空格的输入内容只会保留第一个单词。

解决方案

方案1:修改参数定义自动捕获剩余内容(推荐)

仅需要在最后一个参数前添加*分隔符,Discord.py 会自动把该参数之后的所有输入内容(包含全部空格)整体作为单个字符串传入,无需用户调整输入习惯:

async def new_file(ctx, filename: str, *, data: str):
    # 推荐使用with上下文管理器自动处理文件关闭,避免资源泄露
    with open(f'{filename}.txt', 'a+', encoding='utf-8') as newfile:
        newfile.write(data)

修改后直接输入[bot-prefix]new_file testfile This has spaces in it即可正常写入全部内容。

方案2:用户输入时用引号包裹带空格的内容

如果不想调整代码,也可以告知用户在输入带空格的参数时,用双引号/单引号把对应内容包裹起来:
[bot-prefix]new_file testfile "This has spaces in it"
默认解析器会识别到引号包裹的内容是完整的单个参数,无需修改代码即可正常获取全部内容,但需要用户配合调整输入方式。

补充优化建议

原代码手动调用open和close的写法,在程序出现异常时可能出现文件未正常关闭的资源泄露问题,推荐统一改用with上下文管理器操作文件,同时指定encoding='utf-8'避免写入中文或特殊字符时出现乱码。

内容的提问来源于stack exchange,提问作者user13518719

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:24:04