Skip to main content
Run Telegram, Discord, Slack, and other bots for weeks — bounded lock caches and agent-scoped locks keep memory stable with no extra configuration.

Quick Start

from praisonaiagents import Agent
from praisonai.bots import Bot

agent = Agent(name="assistant", instructions="Be helpful")
bot = Bot("telegram", agent=agent)
bot.run()  # Bounded locks are active by default
Nothing extra is required — debounce, session, and run-control paths share the same bounded per-user lock cache.

What’s Bounded by Default

ResourceDefault limitWhen it cleans up
Per-user lock cache10,000 entries, 1 hour TTLIdle, unlocked entries evict automatically
Agent locksOne per agent instanceRemoved when the agent is garbage-collected
Session historiesOpt-in via session_ttlSee Session Persistence
Recreating agents per request is safe. Agent locks no longer reuse stale id(agent) keys, so unrelated users cannot share locks or swap histories.

Operational Knobs

Trim conversation state when you need tighter control than the default lock cache:
from praisonaiagents import Agent
from praisonaiagents.bots import BotConfig
from praisonai.bots import Bot

agent = Agent(name="assistant", instructions="Be helpful")
config = BotConfig(session_ttl=86400)  # Reap idle sessions after 24h

bot = Bot("telegram", agent=agent, config=config)
bot.run()
For mid-run cancellation and stale session cleanup, see Bot Run ControlSessionRunControl.cleanup_stale_sessions(max_age_seconds=3600) removes abandoned run-control state.

Multi-Agent Safety

Earlier releases keyed agent locks on id(agent). CPython may reuse that integer after garbage collection, so long-running gateways that recreated agents per request could silently mix up two users’ histories. Agent locks now follow agent lifetime via WeakKeyDictionary; per-user locks stay bounded even if you never call cleanup helpers.
Released in PR #1972 — Upgrade to pick up the fix. See Session Persistence → Bounded lock caches for details.

Session Persistence

Bot session storage and bounded lock behaviour

Messaging Bots

Platform setup, debounce, and chunking

Inbound DLQ

Persist failed messages for replay

Cross-Platform Mirror

One conversation across every channel