Есть ли обработчик кнопок в discord py 2.0 или discord_components?

Есть ли обработчик кнопок в discord py 2.0 или discord_components?

По типу on_raw_reaction_add, только с кнопками.


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

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

Ответ: Да, обработчик ивента нажатия на кнопку существует

Пример:

# необходимые импорты
import discord
from discord_components import DiscordComponents, Button, ButtonStyle

CLIENT = discord.Client() # инициализация класса-клиента
TOKEN = 'abc'

@CLIENT.event
async def on_button_click(res): # обработчик ивента нажатия на кнопку
    decision_type = res.component.label # то, что написано на кнопке
    if decision_type == 'старт':
       await res.respond('Вы нажали кнопку с лэйблом "старт"') # client-side ответ пользователю, который будет виден только пользователю, нажавшему нопку

DiscordComponents(CLIENT, change_discord_methods=True) # перепись методов ванильных дискорд классов для добавления функционала кнопок 
CLIENT.run(TOKEN) # запуск бота

P.S. Можно обращаться и к уникальному id-атрибуту кнопок и сравнивать их с id в каком-нибудь словаре, но более распространенным и developer-friendly вариантом, к которому прибегает большинство разработчиков ботов для Discord, - это обращение к лэйблу (надписи) на кнопке.

→ Ссылка