Skip to content

[Feature] Native Telegram reactions for low-noise acknowledgements #1328

@dimonb

Description

@dimonb

🎯 The Goal / Use Case

Telegram users expect lightweight acknowledgement patterns such as reacting with an emoji instead of always sending a full text reply.
For short interactions like “thanks”, “ok”, “seen”, “approved”, or simple emotional feedback, PicoClaw currently needs to send a normal message, which creates unnecessary noise in private chats, groups, and forum topics. This is especially noticeable in active Telegram threads where a reaction is a more natural response than another bot message.
The goal is to let PicoClaw use native Telegram reactions as a first-class response mode, with the option to also send a text reply when needed.

💡 Proposed Solution

Add first-class support for Telegram message reactions as a native agent capability.

The feature should allow the agent to:

  • react to the current inbound Telegram message
  • react to the parent / replied-to message when relevant
  • react to a specific known Telegram message ID when needed
  • choose between reaction only and reaction + text reply

To keep the behavior predictable and safe, allowed emojis should be controlled by config via
channels.telegram.allowed_reaction_emoji, with a sensible default allowlist.

When the agent chooses a reaction-only response, PicoClaw should suppress the final text reply so the visible result is just the emoji reaction, not a redundant extra message (it should be controlled by bot).

🛠 Potential Implementation (Optional)

A practical implementation path would be:

  • add / keep a Telegram-specific reaction tool that is only available in Telegram conversations
  • implement channel-level reaction sending through the Telegram Bot API setMessageReaction
  • route reaction execution through the channel manager so tools do not call Telegram directly
  • use existing Telegram reply context to resolve current, parent, or explicit message_id targets
  • support also_reply=true for cases where the agent should both react and send text
  • when also_reply=false, mark the turn as handled externally so typing / placeholder state is cleaned up without emitting an extra outbound message
  • cover the behavior with tests for emoji allowlist validation, target resolution, Telegram API payload generation, and reaction-only flow suppression
  • document the config in Telegram docs and optionally expose allowed_reaction_emoji in the web config UI

🚦 Impact & Roadmap Alignment

  • This is a Core Feature
  • This is a Nice-to-Have / Enhancement
  • This aligns with the current Roadmap

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions