更新 Discord 机器人代码而不丢失嵌入交互

问题描述 投票:0回答:1

我正在使用 python 制作一个不和谐的机器人,但是每当我的机器人发布带有可交互按钮的嵌入,然后我重新运行或部署机器人代码的新更新时,当我尝试与该按钮交互时,交互失败。即使重新运行代码后,是否仍能保持嵌入可交互?

这是示例代码:

menu = View()
open_button = Button(
    label=os.getenv("CLOSE_TICKET_COMMAND_OPEN_TICKET"),
    style=discord.ButtonStyle.secondary
)
open_button.callback = self.open_ticket_callback
menu.add_item(open_button)

delete_button = Button(
    label=os.getenv("CLOSE_TICKET_COMMAND_DELETE_TICKET"),
    style=discord.ButtonStyle.danger
)
delete_button.callback = self.delete_ticket_callback
menu.add_item(delete_button)

embed = discord.Embed(
    title="",
    description=os.getenv("CLOSE_TICKET_COMMAND_CLOSED_BY").format(
    user=interaction.user.mention),
    color=discord.Color(5308575)
)
await channel.send(embed=embed, view=menu)

我每次重新启动代码时都尝试重新发送嵌入,但我想要一个更有效的解决方案。

python discord.py
1个回答
0
投票

您正在寻找的是持续的观点。 要使视图持久化,以便在重新启动后也能正常工作,它需要满足以下两件事:

  1. View的超时时间必须设置为None
  2. 视图中的每个项目都必须有一个 custom_id 设置

您可以在此处找到更多信息。 您还可以添加一个名为

on_interaction
的机器人事件,它会监听 every 交互,然后检查
interaction.message
是否是您想要的视图消息,然后执行操作。

© www.soinside.com 2019 - 2024. All rights reserved.