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

discord.py如何绕过多词命令参数需加引号的限制?

解决discord.py命令无需引号传递多词参数的方案

这是discord.py默认参数解析逻辑导致的:解析器默认以空格作为参数分隔符,单个位置参数只会匹配第一个空格前的内容,因此只能拿到第一个单词。可以通过以下两种方式实现无引号传递多词参数:


方案1:使用贪婪参数捕获(最常用)

在需要接收多词内容的参数前添加*,标识,discord.py会将命令后面的所有剩余内容合并为单个字符串传入该参数,无需用户添加引号。
代码示例:

@bot.command()
async def example(ctx, *, text):
    await ctx.send(text)

此时用户输入example Hello world,text变量会拿到完整的Hello world内容,可直接返回。

如果命令还有其他前置参数,只需要将贪婪参数放在所有参数的最后即可,示例:

# 先接收@用户参数,再接收多词消息内容
@bot.command()
async def send(ctx, target_user: discord.User, *, message_content):
    await target_user.send(message_content)

方案2:手动提取原始消息内容

如果有自定义解析需求,可以直接从消息对象中提取完整内容,手动去掉前缀和命令名即可:

@bot.command()
async def example(ctx):
    # 去掉命令前缀和命令名,拿到剩余所有内容
    full_content = ctx.message.content.removeprefix(f"{ctx.prefix}{ctx.invoked_with}").strip()
    await ctx.send(full_content)

该方法灵活性更高,可适配复杂的自定义参数解析场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:48:02