OpenClaw Telegram Bot Online but Not Replying: Webhook, 409 Conflict, and Permission Fix Checklist (2026)

If your Telegram bot is “online” but silent, the root cause is usually one of a few repeat offenders:

This guide gives you a practical first-to-last troubleshooting order. In most cases, you’ll find the issue in 10–20 minutes.

0) First identify your mode: webhook or polling

Do not mix both. The #1 production issue is one instance using webhook while another still uses polling (or vice versa).

Run:

openclaw status
openclaw gateway status
openclaw logs --follow

If managed by systemd:

openclaw gateway status
journalctl --user -u openclaw-gateway --no-pager -n 100

1) Eliminate 409 Conflict first (highest-frequency issue)

Typical errors

Root cause

Multiple processes are consuming updates for the same Telegram bot token (common: stale process, second server still running, local test script polling updates).

Fix steps

# 1) Stop OpenClaw on this node
openclaw gateway stop

# 2) Check remaining processes (if needed)
ps aux | grep -E "openclaw|node" | grep -v grep

# 3) Keep only one production instance, then restart
openclaw gateway start
openclaw gateway status

If you run multiple hosts, ensure only one active production consumer for that token.


2) Verify Telegram token/env vars are visible to the service process

Working in your interactive shell does not mean systemd sees the same environment.

# Check for token/auth errors in service logs
journalctl --user -u openclaw-gateway --no-pager -n 100

# Common location for daemon env
cat ~/.openclaw/.env

If missing, add and restart:

# Example; replace with your real token
cat >> ~/.openclaw/.env <<'EOF'
TELEGRAM_BOT_TOKEN=123456:xxxxxx
EOF

openclaw gateway restart
openclaw gateway status

3) Validate webhook reachability (critical for public deployments)

With webhook mode, Telegram must be able to reach your OpenClaw webhook URL.

Checklist

  1. DNS resolves correctly
  2. Port 443 is reachable
  3. Reverse proxy (Nginx/Caddy/Cloudflare Tunnel) is not blocking requests
  4. TLS certificate is valid

Quick checks

# Gateway runtime and probes
openclaw gateway status --deep

# Local listeners (adjust ports to your setup)
ss -tlnp | grep -E "18789|443|80"

# Reverse proxy logs (Nginx example)
sudo tail -n 100 /var/log/nginx/access.log
sudo tail -n 100 /var/log/nginx/error.log

If you’re tired of home-network NAT, unstable broadband, or machine sleep issues, a small VPS is often the fastest path to reliability (2 vCPU / 2GB is enough):


4) Works in DM but not in groups: check bot permissions + privacy mode

A common pattern: private chat works, group chat appears broken.

Verify

Practical setup advice


5) Message ingestion works but still no reply: inspect model/API layer

After Telegram ingestion, OpenClaw still depends on model providers. Upstream failures can look like Telegram issues.

openclaw status
openclaw logs --follow

Focus on:

In unstable network regions, fallback models prevent full silence during provider incidents.


6) Copy-paste recovery sequence

# A. Stop service
openclaw gateway stop

# B. Remove conflicting duplicate instances (keep one)
ps aux | grep -E "openclaw|node" | grep -v grep

# C. Validate config and env
openclaw status
cat ~/.openclaw/.env

# D. Start and observe
openclaw gateway start
openclaw gateway status --deep
openclaw logs --follow

If still failing:

openclaw doctor --deep
openclaw doctor --repair --force
openclaw gateway restart

FAQ

Q1) Which mode should I use: polling or webhook?

For single-host setups, polling is usually simpler and more stable. Use webhook only when you need strict inbound control and can guarantee public HTTPS reachability.

Q2) Why does it work in DM but not in group chats?

Most often it’s Telegram privacy mode or missing group policy allowlist. Re-check bot privacy settings, group permissions, and channels.telegram.groupPolicy/groupAllowFrom.

Q3) I fixed token/webhook but still no reply. What next?

Check model-layer failures immediately (openclaw logs --follow). Invalid provider keys, quota exhaustion, and upstream timeout errors can all look like Telegram failures.

Bottom line: 90% of Telegram “no reply” cases are these 3

  1. Duplicate consumer conflict (409)
  2. Webhook reachability/routing failure
  3. Service env mismatch (token/config not loaded by runtime)

Fix these first, then inspect model-layer logs. That order saves the most time.

Was this article helpful?

đź’¬ Comments