Реакции
Реакции на постах — множественные emoji со счётчиками, как в Telegram-каналах. Один пользователь может поставить несколько разных эмодзи на один пост.
В отличие от реакций на сообщения чата (message_reactions), реакции на посты глобальные — счётчик складывается по всем подписчикам. Юзер видит одинаковые числа на странице и в чате.
Endpoints
Реакции — обычные пользовательские эндпоинты (не Bot API), вызываются с пользовательским bearer-токеном.
Поставить реакцию
POST /api/posts/{external_id}/reactions
Content-Type: application/json
Authorization: Bearer <user_token>
{"emoji": "🔥"}
Ответ:
{
"ok": true,
"reactions": [
{"emoji": "❤", "count": 12, "user_ids": ["…","…"]},
{"emoji": "🔥", "count": 5, "user_ids": ["…"]}
],
"my_reactions": ["🔥"]
}
Снять реакцию
DELETE /api/posts/{external_id}/reactions?emoji=🔥
Authorization: Bearer <user_token>
Ответ — тот же формат, без снятого эмодзи в my_reactions.
Снять все свои реакции
DELETE /api/posts/{external_id}/reactions
(без query-параметра emoji).
В Bot API
Реакции пользователей видны в getPost / createPost / editPost ответах:
"reactions": [
{"emoji": "❤", "count": 12, "user_ids": ["uuid1","uuid2"]},
{"emoji": "🔥", "count": 5, "user_ids": ["uuid3"]}
]
Боты не могут ставить реакции от своего имени через Bot API (как и в TG).
Совместимость со старым /like
Эндпоинт POST /api/posts/{id}/like сохранён для обратной совместимости — он эквивалентен реакции «❤».
POST /api/posts/{id}/like # = react с emoji "❤"
DELETE /api/posts/{id}/like # = unreact с emoji "❤"
Поле liked_by_me в payload поста — true если пользователь поставил «❤».