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

  1. Open @BotFather in Telegram
  2. Send /newbot
  3. Enter the bot's name (for example: My Project)
  4. Enter a username — it must end with bot (for example: my_project_arc_bot)
  5. 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:

  1. Tap the pencil icon → New Group
  2. Add any member (you can remove them later)
  3. Give the group a name → Create

2.2 Enable Topics

  1. Open the group settings (tap the name at the top)
  2. Edit → find the Topics section
  3. 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:

  1. Forward any message from the group to @userinfobot
  2. The bot returns the ID in the format -1001234567890

Option B — via Telegram Web:

  1. Open the group on web.telegram.org
  2. The address bar will contain a URL like #-1001234567890
  3. Copy the number including the minus sign

Step 3 — Add the bot as an administrator

  1. Open the group settings → Administrators
  2. Add Admin → in the search field enter @your_bot_username (the full username with @)
  3. Pick the bot from the list → OK
  4. 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:


Step 5 — Connect in the CRM

  1. Open arc-os.co → select the project → Project Settings
  2. 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:

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

  1. Write any message in the Developer topic
  2. The bot replies in the same topic on behalf of the Developer worker
  3. 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


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)

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