#Telegram working as a one way connection,

1 messages · Page 1 of 1 (latest)

rocky plover
#

I've set up telegram following the steps but can only receive messages from OPENCLAW through telegram, if I send them back nothing ..... I've ran a debug through the terminal and it's noticing my messages but not processing them. Would appreciate some tech wizard to help me out on this.

timber quartzBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

winter jasperBOT
#

If OpenClaw can send to Telegram but won’t react to your replies, 90% of the time it’s not “broken” — it’s being intentionally gated by policy.

Two quick questions first (because the fix differs):

  1. Are you replying to the bot in a DM, or in a group?
  2. What does openclaw --version print?

If this is a DM (most common)

Telegram DMs default to dmPolicy: "pairing", which means: OpenClaw will see your messages in logs but ignore them until you approve the pairing.

Run:

  • openclaw pairing list telegram
  • then approve the shown code:
  • openclaw pairing approve telegram <CODE>

Docs: https://docs.openclaw.ai/channels/pairing
Telegram channel docs: https://docs.openclaw.ai/channels/telegram

#

If you don’t want pairing, set DM policy to allowlist and explicitly allow yourself (token redacted), then restart the gateway:

channels: {
telegram: {
dmPolicy: "allowlist",
allowFrom: ["<your_telegram_user_id_or_username>"]
}
}

(Per docs, allowFrom accepts numeric user IDs and usernames; tg: / telegram: prefixes also work.)

If this is a group

By default, group chats often require a mention to trigger, and Telegram privacy mode can hide messages from the bot.

Check these:

  • Try mentioning the bot in the group (@YourBotName hello)
  • If you want it to respond without mentions, set (for that group) requireMention: false:
#

https://docs.openclaw.ai/channels/telegram (see “groups” + “requireMention”)

  • In BotFather: /setprivacy → set to OFF
    Important: after changing privacy mode, remove + re-add the bot to the group so Telegram applies it (docs call this out).

If you want me to pinpoint it fast

Paste (redact tokens) the few log lines around when you send a message from Telegram while running:

  • openclaw logs --follow

And tell me whether it’s DM vs group + your openclaw --version.

rocky plover
#

Ok I shall try these fixes now and report on how it went

winter jasperBOT
#

Cool — when you test, do it in this order (fastest signal first):

  1. DM test: send the bot “ping”
  • immediately run openclaw pairing list telegram
  • if you see a pending request/code → openclaw pairing approve telegram <CODE>
  • then DM again and see if it responds
  1. If it’s a group: try @YourBotUsername ping (explicit mention). If that works, it’s just mention/privacy gating.

If it still doesn’t process inbound after pairing/mention, paste:

  • your openclaw --version
  • ~10 lines of openclaw logs --follow around the inbound Telegram message (redact tokens/paths if you want)

and I’ll help you pinpoint what it’s dropping on.

rocky plover
#

🦞 OpenClaw 2026.2.12 (f9e444d)
I'm like tmux: confusing at first, then suddenly you can't live without me.

No pending telegram pairing requests.
root@srv1331671:~#

winter jasperBOT
#

Nice, version helps: you’re on 2026.2.12.

If openclaw pairing list telegram shows no pending requests, then one of these is true:

  1. You’re not in pairing mode (e.g. dmPolicy: "allowlist" or "disabled"), so no pairing request will ever appear, and your inbound DMs will be silently dropped unless you’re in allowFrom.
  2. You’re messaging in a group, and it’s being dropped due to mention/privacy rules (pairing is DM-only).

Fastest way to pinpoint: grab the “drop reason” from logs

Run this, then send the bot “test” from Telegram:

openclaw logs --follow

Paste the few log lines that mention Telegram and include fields like chat.type, from.id, and any wording like allowlist / pairing / requireMention / dropped / unauthorized.

Also run the probe (it often prints the exact failure signature)

#
openclaw channels status --probe

Paste the Telegram section.

One super common config mismatch

If your config is:

  • channels.telegram.dmPolicy: "allowlist" (or similar)
  • but channels.telegram.allowFrom does not include your Telegram user (numeric id or username)

…then OpenClaw will notice updates but not process them. The logs will show your from.id — that’s the value you need to add to allowFrom (Telegram docs mention this flow): https://docs.openclaw.ai/channels/telegram

Two quick clarifiers so I can tell you the right fix immediately:

  • Are you testing in a DM with the bot, or a group?
  • Does OpenClaw respond normally on other channels (e.g. Discord), and it’s only Telegram inbound that’s dead?
rocky plover
#

11:08:07 error telegram/api {"subsystem":"telegram/api"} telegram message failed: Call to 'sendMessage' failed! (400: Bad Request: chat not found)
11:08:07 error Delivery failed (telegram to heartbeat): Error: Telegram send failed: chat not found (chat_id=@heartbeat). Likely: bot not started in DM, bot removed from group/channel, group migrated (new -100… id), or wrong bot token. Input was: "heartbeat".
11:08:07 debug cron {"module":"cron","storePath":"/root/.openclaw/cron/jobs.json"} {"nextAt":1771068087586,"delayMs":60000,"clamped":true} cron: timer armed
11:08:08 debug diagnostic {"subsystem":"diagnostic"} lane enqueue: lane=session:agent:main:main queueSize=1
11:08:08 debug diagnostic {"subsystem":"diagnostic"} lane dequeue: lane=session:agent:main:main waitMs=1 queueSize=0

winter jasperBOT
#

That log snippet is actually showing an outbound problem from the heartbeat, not your inbound Telegram message:

sendMessage ... (400: Bad Request: chat not found)
chat_id=@heartbeat

In Telegram, sendMessage needs a real chat id (usually a number, like 123456789 or a group -100...). @something only works for certain public channels/groups with usernames, and doesn’t work for “DM a user by username”.

Fix the @heartbeat mis-target first (it’s definitely broken)

Check what your heartbeat target/to is set to:

openclaw config get agents.defaults.heartbeat

If you see something like target: "telegram" + to: "@heartbeat", change it to one of these:

Option A (recommended): deliver heartbeats to wherever you last talked to the bot

#
openclaw config set agents.defaults.heartbeat.target "last"
openclaw config unset agents.defaults.heartbeat.to
openclaw gateway restart

Option B: hardcode it to your Telegram DM chat id (numeric)

  1. Run openclaw logs --follow
  2. DM the bot from your Telegram account (send “id test”)
  3. In logs, grab chat.id (or from.id) number
  4. Set:
openclaw config set agents.defaults.heartbeat.target "telegram"
openclaw config set agents.defaults.heartbeat.to "<THE_NUMBER>"
openclaw gateway restart