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

如何在discord.py中将多个单词设置为单个命令?

问题原因
  • discord.py 默认的命令解析逻辑会按空格切割用户发送的消息,第一个空格前的内容会被识别为命令名,剩余内容会被当做命令参数处理。你在aliases里配置带空格的字符串,自然无法被解析器匹配到,所以不会触发对应命令。
实现多词触发命令的两种方案

方案1:直接定义带空格的命令名

直接在command装饰器的name参数中填写完整的多词命令即可,不需要用aliases配置:

@client.command(name="how old are you")
async def age(ctx):
    await ctx.send('I am 30')

配置完成后,发送[你的命令前缀]how old are you就能触发该命令,比如你的前缀是!,就发送!how old are you。

方案2:通过on_message事件手动匹配(灵活度更高)

如果你有大量多词命令,或者需要实现无前缀的触发,可以直接在on_message事件里做字符串匹配,不需要走官方的命令解析逻辑:

@client.event
async def on_message(message):
    # 排除机器人自己发的消息
    if message.author == client.user:
        return
    # 匹配多词触发内容,这里可以根据需求加前缀判断
    if message.content.strip() == "how old are you":
        await message.channel.send('I am 30')
    # 不要漏掉这行,否则其他正常的命令会失效
    await client.process_commands(message)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:48:04