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

Pycord 2.4.1按钮交互异常发送临时消息求助

问题排查方向:Pycord按钮交互强制临时消息

核心问题

使用Python 3.9 + Pycord 2.4.1开发的Discord机器人,未修改代码的情况下,按钮交互的回复突然变成临时消息(ephemeral)。即使显式指定ephemeral=False也无效,点击示例中的Accept按钮后回复仍为临时状态。

示例代码:

@discord.ui.button(label='Accept', emoji='👍', style=discord.ButtonStyle.primary, custom_id='Accept')
async def accept_callback(self, button, inter):
    async with lock:
        srv = srv_switch(inter)
        loc = 'en' if inter.guild.preferred_locale.lower() != 'pt-br' else 'br'
        king = self.bot.get_guild(inter.guild.id).get_role(classes[srv]['contests'].get_king_role_id())
        chal = self.bot.get_guild(inter.guild.id).get_role(classes[srv]['contests'].get_chal_role_id())
        if king in inter.user.roles:
            if chal.members:
                await inter.response.send_message(strings.text_chal_accept[loc].format(chal.members[0].mention),
                                                  view=Victory(self.bot))
            else:
                await inter.response.send_message(strings.text_chal_issue[loc])
        else:
            await inter.response.send_message(strings.text_aint_king[loc].format(inter.user.display_name))

排查方向

  • Pycord版本异动:用pip show py-cord确认当前安装版本是否为指定的2.4.1。若被自动更新到新版本,可能存在ephemeral参数默认行为变更或bug,可重新安装指定版本:pip install py-cord==2.4.1
  • Discord平台规则限制:检查机器人在服务器的权限,确认拥有发送消息等基础文本权限。另外,若按钮附着的原始消息是临时消息,Discord会强制后续交互回复也为临时状态,这是平台层面的限制,和Pycord参数无关。
  • 上下文状态异常:排查inter(交互对象)的初始状态,是否在按钮渲染时被隐性设置了ephemeral=True。比如生成按钮的消息是否为临时消息,或者服务器的自动审核规则是否限制了消息可见范围。
  • 隐性代码/配置变更:检查classes、strings等配置文件是否被意外修改,或者lock锁逻辑是否导致响应流程异常。可临时注释async with lock:块,测试回复是否恢复正常。
  • 会话缓存异常:重启机器人,清除本地缓存(若有),重新建立与Discord API的连接。长连接会话状态异常可能导致响应参数失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:47:25