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

Discord bot迁移至app_commands后无法编辑交互响应的问题咨询

解决Discord app_commands交互响应无法编辑的问题

你的代码存在两个关键问题导致编辑失败:

  1. interaction.response.send_message不会返回可编辑的Message对象,直接用其返回值调用edit必然报错。
  2. 同步的time.sleep会阻塞异步事件循环,导致机器人无法处理后续操作,必须替换为异步的asyncio.sleep。

修正后的代码如下:

import asyncio
import discord
from discord import app_commands

# 假设你的CommandTree和客户端已完成正确初始化
tree = app_commands.CommandTree(discord.Client(intents=discord.Intents.default()))

@tree.command(name="test")
async def test(interaction: discord.Interaction):
    # 发送初始交互响应
    await interaction.response.send_message("string")
    # 异步等待1秒(替代同步阻塞的time.sleep)
    await asyncio.sleep(1)
    # 获取已发送的原始响应消息对象
    original_message = await interaction.original_response()
    # 编辑消息内容
    await original_message.edit(content="new string")

核心说明

  • 调用interaction.response.send_message完成响应后,必须通过interaction.original_response()方法获取对应的Message实例,才能执行编辑操作。
  • 异步环境下必须使用asyncio.sleep(),避免阻塞整个机器人的事件循环,保证其他请求能正常处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:55:02