Telegram Integration — Setup and Usage
One bot per project. Each AI worker gets its own topic in a Telegram Supergroup — messages are automatically routed to the right worker and the reply comes back in the same topic.
What it looks like in action
Supergroup "My Project"
├── 📌 General ← general chat (not bound)
├── 🔵 Developer ← messages → Developer worker
└── 🟢 Consultant ← messages → Consultant worker
You write in the Developer topic → Arc OS processes it through Claude → the reply appears in the same topic.
Telegram and the CRM Dashboard are two channels to the same worker. You can start a conversation in Telegram and continue in the CRM — the context is preserved.
Setup
Step 1 — Create a bot in BotFather
- Open @BotFather in Telegram
- Send
/newbot - Enter the bot's name (for example:
My Project) - Enter a username — it must end with
bot(for example:my_project_arc_bot) - BotFather returns a token in the format
123456789:AABBccDDee...
⚠️ Save the token — you will need it when configuring the CRM.
Step 2 — Create a Supergroup with Topics
2.1 Create the group
Telegram Desktop / Mobile:
- Tap the pencil icon → New Group
- Add any member (you can remove them later)
- Give the group a name → Create
2.2 Enable Topics
- Open the group settings (tap the name at the top)
- Edit → find the Topics section
- Turn on the toggle — Telegram automatically converts the group into a Supergroup
2.3 Find the Supergroup ID
The Supergroup ID always starts with -100.
Option A — via @userinfobot:
- Forward any message from the group to @userinfobot
- The bot returns the ID in the format
-1001234567890
Option B — via Telegram Web:
- Open the group on web.telegram.org
- The address bar will contain a URL like
#-1001234567890 - Copy the number including the minus sign
Step 3 — Add the bot as an administrator
- Open the group settings → Administrators
- Add Admin → in the search field enter
@your_bot_username(the full username with@) - Pick the bot from the list → OK
- The default permissions are fine — leave them as is
⚠️ The bot won't appear in the search if you type a partial username or omit the
@. Enter the exact@username.
Step 4 — Create topics for the workers
In the group tap + → New Topic:
- Name the topics after the workers:
Developer,Consultant, or custom names - You can pick colors/icons for convenience
Step 5 — Connect in the CRM
- Open arc-os.co → select the project → Project Settings
- Find the Channels section → click Connect Telegram
5.1 Enter the bot details
| Field | What to enter |
|---|---|
| Bot Token | The token from BotFather (123456789:AABBcc...) |
| Supergroup ID | The group ID (-1001234567890) |
Click Verify & get topics.
5.2 Verification
The CRM checks:
- ✅ The token is valid
- ✅ The bot is a group administrator
- ✅ The topic list is loaded
5.3 Bind topics to workers
For each topic, pick a worker from the dropdown:
Developer → [developer ▾]
Consultant → [consultant ▾]
General → [(not bound)]
Click Save bindings.
Step 6 — Test
- Write any message in the Developer topic
- The bot replies in the same topic on behalf of the Developer worker
- Repeat for Consultant
Daily Usage
Working via topics (recommended)
Just write the task text in the right topic — no prefixes needed:
[Developer topic]
Fix the bug in the login form — the email field is not validated
[Consultant topic]
Analyze the architecture of the auth module — what can be improved?
If a topic is not bound to a worker, the default worker replies.
Commands in a private chat with the bot
In a private chat with the bot you can switch workers manually via prefixes:
| Prefix | Worker | Purpose |
|---|---|---|
/c <text> |
Consultant | Analysis, strategy, read-only |
/d <text> |
Developer | Code, files, terminal |
/w:<worker_id> <text> |
Custom | Any worker from the registry |
| (no prefix) | Active | The last one used |
Examples:
/c Analyze the architecture of the auth module
/d Fix the bug in the login form
/w:sentinel Run a security audit of the latest changes
A message without a prefix goes to the currently active worker — after /d Fix the bug, subsequent messages without a prefix also go to Developer.
Inline buttons under the reply
Control buttons appear after every AI worker reply:
Process control:
| Button | Action |
|---|---|
| 🛑 STOP | Stop Claude (if it went off track or got stuck) |
| ⏸️ PAUSE | Pause — useful to wait for something before continuing |
| ▶️ RESUME | Resume a paused process |
Context and feedback:
| Button | Action |
|---|---|
| 💡 BTW | Add context — the next message will be appended as context to the next request |
| 🛠️ Fix It | Retry the task with automatic corrections |
| 👍 | Positive feedback — recorded in metrics |
| 👎 | Negative feedback — automatically creates a correction rule that will be applied to future requests |
Navigation:
| Button | Action |
|---|---|
| 🏷️ Skills | Show the skills that were used for the reply |
| 📊 View Log | Open the session log in the CRM |
Context and memory
- Each worker has its own memory (up to 50 messages)
- Reply to a message → its text is added as context to the request
- The Context Router automatically picks the top-5 skills relevant to your message
- 👎 feedback → the system remembers the mistake and accounts for it in future requests
Bot management commands
| Command | Description |
|---|---|
/ping |
Check that the bot is alive + uptime |
/thread |
Size of the current context (message count) |
/quality |
Quality metrics: calls, feedback, average response time |
/issue list |
List the project's open issues |
/issue create <title> |
Create a new issue |
/issue switch <id> |
Switch the active issue |
/continue |
Resume the session in the Cloud container |
/specs |
List specifications (draft / review / approved) |
/approve <id> |
Approve a specification |
/reject <id> [reason] |
Reject a specification |
Relationship with the CRM Dashboard
Telegram topic ──┐
├──► Child Bot ──► Claude ──► Reply
CRM Dashboard ──┘ │
▼
Telegram + CRM (simultaneously)
- Messages from the CRM are processed every 500ms
- Replies appear in both Telegram and the CRM simultaneously
- Attachments (images, PDF) are supported via the CRM Dashboard
- You can start a conversation in Telegram and continue in the CRM — the context is preserved
Disconnecting the bot
CRM → Project Settings → Channels → Disconnect.
This removes the token and all topic bindings. The bot stays in the group — remove it from the administrators manually if needed.
Troubleshooting
| Problem | Solution |
|---|---|
| The bot does not reply in a topic | Check that the bot is a group administrator. Check the topic binding in CRM → Channels. In a private chat → /ping |
| Long response time | Developer (Opus) is slower than Consultant (Sonnet). For analysis and questions use Consultant |
| The reply gets cut off | Telegram's 4096-character limit — the bot automatically splits into [1/3], [2/3], etc. |
| The bot can't be found when adding it to the group | Enter the full username with @: @arc_os_project_bot |
| "Invalid bot token" during verification | Check the token — the format is digits:letters, no spaces |
| "Bot is not admin" during verification | Add the bot via Administrators → Add Admin → @bot_username |
| "supergroup_id must start with -100" | The ID must be -1001234567890. Enable Topics to convert the group into a Supergroup |
| 👎 does not create a correction rule | Press 👎 directly under the worker's reply, not under a system message |