Skip to main content

Telegram Bot

The EmbedHub Telegram bot links a group chat to a project, so the team's working channel becomes a control surface for that project. Photos and PDFs shared in the group are auto-uploaded to the project; commands let you manage todos and check recent activity; and project events (uploads, role changes, todo state changes, etc.) are pushed back into the group as notifications.

Setup

  1. Add the bot to your group as an administrator.

    The bot starts a setup wizard automatically the moment it joins.

  2. Answer the wizard's three prompts:

    • Org slug — e.g. anuj
    • Project slug — e.g. firmware
    • API token — a key from your EmbedHub settings. The token must belong to the organization owner.
  3. The bot validates the token against the EmbedHub API and confirms once the group is linked. From then on, photos shared in the group auto-upload to the project's photos/ folder, and PDFs to documents/.

To re-link the group later (different project, rotated key, etc.), an admin can run /configure to restart the wizard. /status shows the current configuration.

Commands

CommandWhereWhat it does
/startPrivate chatShow help (same content as /help).
/helpAnywhereShow command reference.
/configureGroup, admins only(Re)run the setup wizard.
/statusGroupShow the linked org/project.
/activity [n]GroupShow the last n activity events for the linked project (default 5, max 25).
/todosGroupList current todos with status icons.
/newtodoGroupMulti-step wizard to create a new todo (title → notes → inline-keyboard assignee picker).
/canceltodoGroupAbort an in-progress /newtodo wizard.

See the Todos page for details on /todos and /newtodo.

Automatic notifications

When something happens in the linked project — from anywhere (web UI, CLI, the bot itself, GitHub Actions, etc.) — the group receives a short notification. The first character is an emoji indicating the event type:

EmojiEvent typeMeaning
📤file.uploadA file was uploaded to the project.
📥file.downloadA file was downloaded.
🗑️file.deleteA file was deleted.
project.createA new project was created.
⚙️project.updateThe project was updated.
project.deleteThe project was deleted.
👤member.role_assignedSomeone was assigned a project role.
🚫member.role_removedA project role was removed from someone.
🛡️role.create / update / deleteA project role definition changed.
📱device.access_granted / revokedA HAL device's project access changed.
📊statemachine.saveA state machine diagram was saved.
📝todo.createA new todo was created.
🔁todo.updateA todo's status, assignee, title, or notes changed.
🗑️todo.deleteA todo was deleted.

Activity events are always recorded for /activity even if a Telegram delivery doesn't reach the group.

Auto-uploads

Photos and documents shared in a configured group are auto-uploaded:

  • Photos — the largest size variant is uploaded to the project's photos/ folder as photos/<ISO-datetime>_<file_unique_id>.jpg.
  • PDFs — uploaded to documents/ with the original filename preserved.
  • Other images sent as files — uploaded to photos/ with the original filename preserved.

Other file types (zips, archives, code, etc.) are silently ignored.

Each successful upload posts a confirmation in the chat (✅ Photo uploaded → photos/2026-04-26T11:42:01_AgADBAADxxx.jpg) and records a telegram.upload activity event.

Permissions

The bot uses the API key supplied during setup. That key must belong to the organization owner (this is enforced by the backend). All activity emitted by the bot — uploads, todo creation, etc. — is attributed to the API key owner with source: telegram.