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

Discord机器人@client.command下无法编辑自身消息报协程未await错误如何解决

问题原因

报错的核心原因是命名冲突:

  • 你定义的命令函数名和你用来获取名言的原函数都叫inspire
  • 当你在wait_msg.edit里调用inspire()时,实际调用的是被@client.command装饰后的协程命令对象,不是你原本用来生成返回文本的函数,而协程必须要await才能执行,所以才抛出了「coroutine was never awaited」的警告。

你在@client.event装饰器下逻辑可以正常运行,是因为event对应的处理函数没有和获取名言的inspire函数重名,不会触发冲突问题。

修复方案

方案1:重命名命令函数,避免命名冲突

如果你的名言获取函数是普通同步函数,直接修改命令函数名即可:

# 你原本用来获取名言的函数,保持原名
def inspire():
    # 原有生成名言的逻辑
    return "生成的名言内容"

# 命令函数改名,避免重名
@client.command()
async def get_inspire(context):
    wait_msg = await context.send("Finding a quote for ya...")
    await wait_msg.edit(content=inspire())

方案2:如果名言获取函数本身是异步协程,补充await逻辑

如果你的inspire函数本身是异步的,除了重命名命令函数外,还要先await获取名言的结果再传入edit方法:

# 异步的名言获取函数
async def inspire():
    # 原有异步请求名言接口的逻辑
    return "异步获取的名言内容"

@client.command()
async def get_inspire(context):
    wait_msg = await context.send("Finding a quote for ya...")
    # 先await异步函数拿到结果
    quote_content = await inspire()
    await wait_msg.edit(content=quote_content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:09:04