Отслеживание нажатия кнопок discord.py

Делаю кнопки у сообщения дискорд. Моя задача сделать обработчик кнопок таким образом, что б срабатывал даже при перезапуске бота.

Сейчас мне удалось сделать вывод и обработку кнопки в рамках одной функции. Это работает так:

import discord
from discord.ext import commands
from discord.ui import Button, View

intents = discord.Intents.all()
bot = commands.Bot(command_prefix="!", intents=intents)


@bot.command()
async def test(ctx):
    button1 = Button(label='Click', style=discord.ButtonStyle.green,  emoji='?')
    button2 = Button(label='Click2', style=discord.ButtonStyle.danger)

    async def button_callback(interaction):
        await interaction.response.send_message('Hi!', ephemeral=True)

    button1.callback = button_callback

    view = View()
    view.add_item(button1)
    view.add_item(button2)

    await ctx.send('Hi', view=view)

    await bot.wait_for("button_click")

Здесь сообщение выводит кнопки и при нажатии на кнопку происходит действие.

Я бы хотел сделать создание кнопок у команды, но обработку в отдельной функции. на просторах интернета нашел это, но функция вообще не работает:

@bot.event
async def on_button_click(interaction):
    print("asd")

Нашел даже что к параметрам кнопки можно добавить custom_id. Но как обработать найти не смог(


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

Автор решения: Alexey V

При обработке interaction можно взять interaction.data и там указывается custom_id

→ Ссылка