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
相关产品推荐
相关产品推荐

