Skip to main content
Each channel declares what it supports — live message edits, reactions, typing indicators, and text limits — so engines adapt automatically without platform-specific agent code.

Quick Start

from praisonaiagents import Agent
from praisonai.bots import TelegramBot, SlackBot, DiscordBot

agent = Agent(name="assistant", instructions="Helpful assistant")

# Same agent — each channel streams/reacts to whatever it supports
TelegramBot(token="...", agent=agent, streaming=True, status_reactions=True).start()
SlackBot(token="...", agent=agent, streaming=True, status_reactions=True).start()
DiscordBot(token="...", agent=agent, streaming=True, status_reactions=True).start()

Capability Reference

CapabilityTypeMeaning
live_editboolChannel can edit a previously sent message in place
reactionsboolChannel supports adding/removing emoji reactions
typingboolChannel supports a typing/working indicator
text_limitintMax characters per message (0 = unlimited)
edit_rate_limitfloatMin seconds between edits (auto-applied)
reaction_rate_limitfloatMin seconds between reactions (auto-applied)

Per-Channel Matrix

Channellive_editreactionstypingtext_limitedit_rate_limit
TelegramYesYesYes4096default
SlackYesYesNo400001.0
DiscordYesYesYes2000default
WhatsAppNoNoNo4096
EmailNoNoNounlimited

Graceful Degradation

DraftStreamer, StatusReactions, and TypingManager inspect bot.capabilities and silently no-op when a feature is unsupported — WhatsApp still delivers a single final message; Email skips reactions entirely.

Custom Adapters

@property
def capabilities(self):
    return {
        "live_edit": True,
        "reactions": False,
        "typing": True,
        "text_limit": 2000,
        "edit_rate_limit": 1.0,
        "reaction_rate_limit": 0.5,
    }

Streaming Replies

Live draft message edits

Status Reactions

Run-state emoji reactions

Typing Indicators

Keepalive typing indicators

Messaging Bots

Full bot setup guide