Как завершить взаимодействие с кнопкой Disnake

У меня есть прослушиватель on_button_click, в котором прослушиваются все нажатия кнопок. Но у меня есть взаимодействие, редактирующее исходное сообщение, в котором при нажатии кнопок выскакивает "Ошибка взаимодействия". Я пробовал в конце участка кода вставлять return, но не венчалось успехом.

Код (часть вырезана, так как код огромный):

@commands.Cog.listener()
async def on_button_click(self, inter: disnake.MessageInteraction):
    button_id = inter.component.custom_id
    message_inter: disnake.Message = inter.message
    guild = inter.guild
    author: disnake.User = inter.author

    if button_id.startswith("leaderboard_"):
        data = button_id.split("_")

        page = int(data[2])

        if data[1] == "balance":
            data = then.get_balance_top(page)

            next_page = False
            if data["pages"] > 1 and page < data["pages"]:
                next_page = True

            prev_page = False
            if page != 1:
                prev_page = True

            components = [
                disnake.ui.Button(
                    style = disnake.ButtonStyle.gray,
                    emoji = Icon.back,
                    disabled = not prev_page,
                    custom_id = f"leaderboard_balance_{page}_b"
                ),
                disnake.ui.Button(
                    style = disnake.ButtonStyle.gray,
                    emoji = Icon.refresh,
                    custom_id = f"leaderboard_balance_{page}_r"
                ),
                disnake.ui.Button(
                    style = disnake.ButtonStyle.gray,
                    emoji = Icon.forward,
                    custom_id = f"leaderboard_balance_{page}_f",
                    disabled = not next_page
                )
            ]
            color = config.embed_color
            message = disnake.Embed(
                title = f"{Icon.money} Топ баланса сервера",
                timestamp = inter.created_at,
                color = color
            )

            await message_inter.edit(embed = message, components = components)

Ответы (1 шт):

Автор решения: ArkaDarkTime

Если вы хотите чтоб кнопка(и) была доступна всегда:\

  • Если создавали кнопку(и) через View:
    Укажите параметр timeout none:
view = disnake.ui.View(timeout=None)

Если отправили кнопки через components, то ошибки быть не должно

  • Если вы хотите убрать сообщение "Ошибка взаимодействия", но оставить кнопку неактивной, то, насколько мне известно, это нельзя сделать.

Удачи, отпишитесь если нужно что-то еще!

→ Ссылка