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

Discord开发:编辑消息时如何移除按钮?现有代码问题求助

解决Discord.py按钮点击后移除按钮的问题

你的代码存在两个核心问题:

  • 回调函数里编辑的是第一条发送的message对象,但按钮实际在第二条通过ctx.send("test", view=view)发送的消息上,两者不是同一个对象,所以按钮不会被移除。
  • 就算编辑正确的消息,也需要显式设置view=None,否则原视图会保留。

修改后的代码如下:

import asyncio
import discord
from discord.ui import Button, View

@client.command()
async def test(ctx):
    await ctx.send("**TEST**\n**IS THIS WORKING?**")
    await asyncio.sleep(3)
    
    button = Button(style=discord.ButtonStyle.green, emoji="◀", custom_id="button")
    view = View()
    view.add_item(button)
    
    # 保存带按钮的消息对象
    button_message = await ctx.send("test", view=view)
    
    async def button_callback(interaction):
        # 编辑带按钮的消息,设置view=None移除按钮
        await button_message.edit(content="**edited message and removed buttons!**", view=None)
    
    button.callback = button_callback

关键改动点:

  • 新增button_message变量存储带按钮的消息对象,确保回调编辑的是正确的目标消息
  • 在edit方法中添加view=None参数,通过清空视图实现移除按钮的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:00:52