регистрация нажатия эмодзи
Как сделать, чтобы бот отслеживал нажатие реакции под эмбедом вызванным командой, как на этой картинке?
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
Когда при помощи команды создается сообщение с эмбедом, сохраняем его id в какую-либо переменную:
msgid = None
@bot.command()
async def create_embed(ctx):
global msgid # работает с глобальной переменной, так как доступ к ней нужен из разных функций
embed = # здесь создаем embed
msg = await ctx.send(embed = embed) # при отправке сообщения создаем его же объект
msgid = msg.id # записываем id сообщения в переменную
После чего используем событие on_raw_reaction_add(payload) для работы с объектом, к которому была добавлена реакция.
Проверяем, чтобы эта реакция была не от бота. А также чтобы id сообщения с новой реакцией совпадал с msgid.
При необходимости считывания нескольких сообщений, можно записывать не переменную msgid, а список (list)
@bot.event
async def on_raw_reaction_add(payload):
global msgid
if (payload.user_id != bot.user.id) and (payload.message_id == msgid):
print('Нажата реакция перед сообщением', payload.message_id)
