You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been running a fork with full Telegram emoji reactions support for a few weeks now, and it's turned out to be surprisingly useful in practice. Wanted to share the experience and see if there's interest in getting this upstream.
What it does
Two directions:
Agent → Telegram: The agent can set emoji reactions on messages via a react_to_message MCP tool. This is great for lightweight acknowledgment — instead of sending a text message like "Got it, working on it", the agent just drops a 👀 or 👌 on your message. You know it saw your request, and your chat stays clean.
Telegram → Agent: When a user reacts to the bot's message, it creates a synthetic trigger message so the agent can respond. For example, putting 👎 on a bot response effectively means "that's wrong" and the agent can course-correct. A 🤔 means "I'm confused, explain more." You configure this behavior in CLAUDE.md, so it's fully customizable per group.
There's also passive context enrichment — reactions on messages show up as XML attributes (reactions="😁x2,👍x1") so the agent sees the social context of a conversation.
Why it's useful
The biggest win is the task acknowledgment pattern. When you give the bot a task in a group chat, there's always that awkward moment where you don't know if it's processing or stuck. With reactions, you can configure the bot to immediately react with 👀 ("saw it") before doing anything else. Then 👌 when it starts working. The actual text response comes when there's something meaningful to say. It makes the interaction feel way more natural.
Also, incoming reaction triggers mean you can give quick feedback without typing. 👍 on a completed task = thread is done. 👎 = something's wrong. Works great in group chats where you don't want to @mention the bot for every small signal.
Implementation
The implementation touches ~9 files:
setReaction method on Channel interface (optional, so non-Telegram channels just skip it)
bot_messages + reactions SQLite tables for tracking
message_reaction handler in the Telegram channel (grammY)
msg_id attribute on message XML (agents need this to target reactions)
IPC handler for the reaction MCP tool
Authorization checks (agent can only react in its own group's chats)
I've been running this in production with both host mode and container mode, works reliably.
Relation to existing PRs
I see there's already some great work on reactions:
My implementation is standalone (doesn't depend on the add-reactions base from #784), but the end result is similar. Happy to align with whatever direction makes sense for the project — whether that's contributing to the existing PRs, adapting my implementation to build on #784's base, or something else.
I can put together a clean PR following the skill/branch contribution model if there's interest. Just wanted to gauge the appetite first and see if there's a preferred approach.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Hey everyone!
I've been running a fork with full Telegram emoji reactions support for a few weeks now, and it's turned out to be surprisingly useful in practice. Wanted to share the experience and see if there's interest in getting this upstream.
What it does
Two directions:
Agent → Telegram: The agent can set emoji reactions on messages via a
react_to_messageMCP tool. This is great for lightweight acknowledgment — instead of sending a text message like "Got it, working on it", the agent just drops a 👀 or 👌 on your message. You know it saw your request, and your chat stays clean.Telegram → Agent: When a user reacts to the bot's message, it creates a synthetic trigger message so the agent can respond. For example, putting 👎 on a bot response effectively means "that's wrong" and the agent can course-correct. A 🤔 means "I'm confused, explain more." You configure this behavior in CLAUDE.md, so it's fully customizable per group.
There's also passive context enrichment — reactions on messages show up as XML attributes (
reactions="😁x2,👍x1") so the agent sees the social context of a conversation.Why it's useful
The biggest win is the task acknowledgment pattern. When you give the bot a task in a group chat, there's always that awkward moment where you don't know if it's processing or stuck. With reactions, you can configure the bot to immediately react with 👀 ("saw it") before doing anything else. Then 👌 when it starts working. The actual text response comes when there's something meaningful to say. It makes the interaction feel way more natural.
Also, incoming reaction triggers mean you can give quick feedback without typing. 👍 on a completed task = thread is done. 👎 = something's wrong. Works great in group chats where you don't want to @mention the bot for every small signal.
Implementation
The implementation touches ~9 files:
setReactionmethod on Channel interface (optional, so non-Telegram channels just skip it)bot_messages+reactionsSQLite tables for trackingmessage_reactionhandler in the Telegram channel (grammY)msg_idattribute on message XML (agents need this to target reactions)I've been running this in production with both host mode and container mode, works reliably.
Relation to existing PRs
I see there's already some great work on reactions:
My implementation is standalone (doesn't depend on the
add-reactionsbase from #784), but the end result is similar. Happy to align with whatever direction makes sense for the project — whether that's contributing to the existing PRs, adapting my implementation to build on #784's base, or something else.I can put together a clean PR following the skill/branch contribution model if there's interest. Just wanted to gauge the appetite first and see if there's a preferred approach.
Cheers!
Beta Was this translation helpful? Give feedback.
All reactions