hermes - 💡(How to fix) Fix Cron delivery to private DM topics broken after PR #22410 — send_message_tool.py missing three-mode routing

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

PR #22410 (commit b3239572f) fixed DM topic routing for live messages in gateway/platforms/telegram.py::TelegramAdapter.send() after Bot API 10.0 broke sendMessage(message_thread_id=N) for private chats with topics. However, the cron delivery path (tools/send_message_tool.py::_send_telegram) was not updated with the same three-mode routing logic.

Root Cause

tools/send_message_tool.py::_send_telegram sends with bare message_thread_id parameter, which Bot API 10.0 (2026-05-08) now rejects for private chats with topics. The fix requires message_thread_id + reply_to_message_id (anchor message) together, as implemented in the gateway adapter.

Fix Action

Fix / Workaround

Workaround (temporary)

RAW_BUFFERClick to expand / collapse

Summary

PR #22410 (commit b3239572f) fixed DM topic routing for live messages in gateway/platforms/telegram.py::TelegramAdapter.send() after Bot API 10.0 broke sendMessage(message_thread_id=N) for private chats with topics. However, the cron delivery path (tools/send_message_tool.py::_send_telegram) was not updated with the same three-mode routing logic.

Replication

  1. Create DM topics in a private Telegram chat (Bot API 9.3+)
  2. Configure a cron with deliver: telegram:<chat_id>:<thread_id>
  3. Cron executes → message lands in General topic instead of the specified thread

Root Cause

tools/send_message_tool.py::_send_telegram sends with bare message_thread_id parameter, which Bot API 10.0 (2026-05-08) now rejects for private chats with topics. The fix requires message_thread_id + reply_to_message_id (anchor message) together, as implemented in the gateway adapter.

Expected Behavior

Cron delivery should use the same three-mode routing as TelegramAdapter.send():

  1. Forum/supergroup → message_thread_id
  2. Bot API DM topics → direct_messages_topic_id
  3. Hermes-created private DM topic lanesmessage_thread_id + reply_to_message_id (anchor) together

Workaround (temporary)

All 12 crons moved to deliver to General (telegram:<chat_id> without thread_id) with emoji prefixes for visual filtering.

Related

  • PR #22410 — live message fix
  • tdlib/telegram-bot-api #847
  • python-telegram-bot #4739
  • OpenClaw #11620, #17980
  • Bot API 10.0 changelog (server-side change NOT documented)

Environment

  • Hermes Agent v0.13.0 (updated 2026-05-09, 143 commits post-PR #22410)
  • Chat type: private with has_topics_enabled: true
  • 5 DM topics: General, Proyectos, Sistema, Tareas, Exploración

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix Cron delivery to private DM topics broken after PR #22410 — send_message_tool.py missing three-mode routing