регистрация нажатия эмодзи

Как сделать, чтобы бот отслеживал нажатие реакции под эмбедом вызванным командой, как на этой картинке?

по этому примеру


Ответы (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)
→ Ссылка