Есть ли обработчик кнопок в 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, - это обращение к лэйблу (надписи) на кнопке.