setMessageReaction
setMessageReaction
Ставит или снимает реакцию (эмодзи) на сообщение. Повторный вызов с тем же эмодзи — снимает реакцию.
await bot.set_message_reaction(chat_id, message_id, emoji)
Параметры
| Параметр | Тип | Описание |
|---|---|---|
chat_id | int | ID чата |
message_id | int | ID сообщения |
emoji | str | Эмодзи реакции, например "👍" или "❤️" |
Возвращает: 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_id | int | ID чата |
message_id | int | ID сообщения |
user_id | int | Кто поставил реакцию |
emoji | str | Эмодзи |
action | str | "added", "replaced", "removed" |
reactions | list[ReactionCount] | Все текущие реакции на сообщение |
ReactionCount
| Поле | Тип | Описание |
|---|---|---|
emoji | str | Эмодзи |
count | int | Количество |
2 просмотра