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

Discord Py技术问询:通过消息ID撤回消息及删除旧游戏消息

Discord Py相关问题解答

1. 通过消息ID撤回消息的方法

当然有,核心思路是先通过ID获取消息实例,再执行删除操作,具体实现方式如下:

  • 若已持有消息所在的TextChannel对象:
    # 假设channel是目标频道对象,message_id是要删除的消息ID
    old_message = await channel.fetch_message(message_id)
    await old_message.delete()
    
  • 若仅知道频道ID和消息ID:
    # 假设bot是你的机器人实例,channel_id是目标频道ID
    channel = bot.get_channel(channel_id)
    old_message = await channel.fetch_message(message_id)
    await old_message.delete()
    

注意:机器人必须拥有管理消息的权限,且目标消息存在于机器人可访问的频道内。

2. 解决Connect4游戏状态不同步的问题

你已经存储了旧消息ID,直接删除旧消息就能解决旧按钮干扰的问题,步骤如下:

  1. 从存储文件中读取旧消息的ID和对应的频道ID(建议同时存储频道ID,避免频道匹配错误)
  2. 按照问题1中的方法获取旧消息实例并删除
  3. 重新发送最新状态的游戏消息,此时旧按钮已被移除,不会再影响棋盘状态

额外优化方案:如果不想删除旧消息,也可以使用message.edit()方法直接更新旧消息的组件(按钮)和棋盘显示内容,同步最新状态。但如果旧按钮的回调逻辑已绑定旧的游戏实例,删除旧消息重新发送会是更稳妥的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:45:31