Skip to main content
Status reactions update an emoji on the user’s message to reflect run state β€” queued, thinking, tool execution, done, or error β€” at a glance without reading reply text.

Quick Start

1

Enable with one flag

from praisonaiagents import Agent
from praisonai.bots import TelegramBot

agent = Agent(name="assistant", instructions="Helpful assistant")
bot = TelegramBot(token="...", agent=agent, status_reactions=True)
bot.start()
2

Customise emoji via dict

bot = TelegramBot(
    token="...",
    agent=agent,
    status_reactions={
        "thinking_emoji": "πŸ’­",
        "tool_emoji": "βš™οΈ",
        "done_emoji": "πŸŽ‰",
        "debounce_delay": 1.0,
    },
)
3

Full control with StatusConfig

from praisonai.bots import TelegramBot, StatusConfig

bot = TelegramBot(
    token="...",
    agent=agent,
    status_reactions=StatusConfig(
        thinking_emoji="πŸ’­",
        immediate_terminal=True,
    ),
)

Configuration Options

OptionTypeDefaultDescription
queued_emojistr"⏳"Shown when the run is queued
thinking_emojistr"πŸ€”"Shown while the LLM is generating
tool_emojistr"πŸ”§"Shown during tool execution
done_emojistr"βœ…"Terminal: success
error_emojistr"❌"Terminal: failure
debounce_delayfloat0.5Seconds before applying intermediate states
immediate_terminalboolTrueApply done/error immediately
Reactions auto-skip on channels where capabilities["reactions"] is False (WhatsApp, Email). On Slack, Unicode emoji map to Slack :text_name: form (e.g. πŸ€” β†’ thinking_face).
Telegram’s reaction API is set-based β€” remove_reaction clears all bot reactions on the message rather than a specific emoji. This is a Telegram API limitation.

Best Practices

Avoids hitting reaction rate limits on busy Telegram groups.
Helps users tell when an external API call is in progress.
Users see done/error states instantly without debounce delay.

Channel Capabilities

Which channels support reactions

Typing Indicators

Complementary typing feedback