🌙

setMessageReaction

setMessageReaction

Ставит или снимает реакцию (эмодзи) на сообщение. Повторный вызов с тем же эмодзи — снимает реакцию.

await bot.set_message_reaction(chat_id, message_id, emoji)

Параметры

ПараметрТипОписание
chat_idintID чата
message_idintID сообщения
emojistrЭмодзи реакции, например "👍" или "❤️"

Возвращает: bool

Через метод сообщения

await msg.react("👍")

Примеры

Подтвердить получение:

@dp.message(filters.command("done"))
async def done(msg):
    await msg.react("✅")
    await msg.answer("Выполнено!")

Реагировать на определённое слово:

@dp.message(filters.text(r"спасибо"))
async def thanks(msg):
    await msg.react("❤️")

Обработка событий реакций от пользователей

Когда пользователь ставит реакцию на сообщение бота, приходит апдейт message_reaction:

@dp.message_reaction()
async def on_reaction(reaction):
    print(f"Пользователь {reaction.user_id} поставил {reaction.emoji}")
    print(f"Действие: {reaction.action}")  # "added", "replaced", "removed"
    print(f"Все реакции: {reaction.reactions}")

# Фильтр по конкретному эмодзи
@dp.message_reaction(filters.reaction("👍"))
async def on_like(reaction):
    print(f"Лайк от {reaction.user_id} на сообщение {reaction.message_id}")

# Фильтр по нескольким эмодзи
@dp.message_reaction(filters.reaction("👍", "❤️", "🔥"))
async def on_positive(reaction):
    print("Позитивная реакция!")

Тип MessageReaction

ПолеТипОписание
chat_idintID чата
message_idintID сообщения
user_idintКто поставил реакцию
emojistrЭмодзи
actionstr"added", "replaced", "removed"
reactionslist[ReactionCount]Все текущие реакции на сообщение

ReactionCount

ПолеТипОписание
emojistrЭмодзи
countintКоличество
2 просмотра