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

Nextcord/Discord.py机器人重启后按钮失效问题求助

解决Nextcord机器人重启后按钮失效的问题

问题原因

使用timeout=None的持久化视图时,未在机器人启动阶段注册该视图。机器人重启后,无法关联之前发送的按钮与对应回调逻辑,导致按钮点击无响应。

解决方案

在机器人就绪事件中注册TicketButton视图,确保重启后Nextcord能识别并处理该视图的交互请求。

修改后的完整代码:

class TicketButton(nextcord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)

    @nextcord.ui.button(label="Заявка", style=nextcord.ButtonStyle.blurple)
    async def zayavka(self, button: nextcord.ui.Button, interaction: nextcord.Interaction):
        await interaction.response.send_modal(EmbedModal())

@bot.command()
async def createticket(ctx):
    em = nextcord.Embed(color=nextcord.Color.blue())
    em.add_field(name="**Подача заявки👮**", value="Нажмите на кнопку ниже для открытия поля заполнения заявки", inline=False)
    em.add_field(name="", value="*Подать заявку снова будет невозможно!*", inline=False)
    await ctx.send(embed=em, view=TicketButton())

# 机器人就绪时注册持久化视图
@bot.event
async def on_ready():
    print(f"已登录为 {bot.user}")
    bot.add_view(TicketButton())

关键说明

  • bot.add_view(TicketButton())会将视图注册为持久化监听,即使机器人重启,也能匹配到之前发送的按钮交互事件。
  • 需确保EmbedModal类已正确定义并可正常运行,否则按钮点击后仍会出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:25:26