openclaw - ✅(Solved) Fix [Bug]: Telegram Active Memory slash command uses /active-memory, but BotFather-compatible command is /active_memory [1 pull requests, 2 comments, 2 participants]

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…
GitHub stats
openclaw/openclaw#65985Fetched 2026-04-14 05:39:26
View on GitHub
Comments
2
Participants
2
Timeline
5
Reactions
0
Author
Participants
Timeline (top)
commented ×2cross-referenced ×1referenced ×1renamed ×1

There seems to be a Telegram slash-command naming mismatch for Active Memory.

The actual command exposed in chat is:

  • /active-memory

But Telegram BotFather command registration expects a normal slash command token like:

  • /active_memory

Because of that mismatch, the command users can actually add in BotFather is the underscore form, while the chat-visible/runtime form is the hyphen form.

Root Cause

Because of that mismatch, the command users can actually add in BotFather is the underscore form, while the chat-visible/runtime form is the hyphen form.

Fix Action

Fixed

PR fix notes

PR #66051: fix(active-memory): expose /active_memory Telegram alias (#65985)

Description (problem / solution / changelog)

Summary

Telegram's BotFather command registration only accepts command names matching `^[a-z0-9_]+$`, so the canonical `/active-memory` slash command cannot be registered in BotFather as-is (#65985). Users end up with a mismatch: chat runtime uses `/active-memory`, BotFather accepts `/active_memory`, and the two surfaces disagree.

The plugin command contract already supports this exact case: `OpenClawPluginCommandDefinition.nativeNames` accepts a per-native-surface override (e.g. `{ telegram: 'pair', discord: 'pair' }` is already used elsewhere per `src/plugins/stage-bundled-plugin-runtime.test.ts:202`). This PR just adds `nativeNames: { telegram: "active_memory" }` to the active-memory command registration so Telegram sees the underscore form while Discord/web/other surfaces keep the canonical hyphen form.

Closes #65985.

Changes

  • `extensions/active-memory/index.ts` — add `nativeNames: { telegram: "active_memory" }` to the `api.registerCommand` call, with a 4-line comment explaining why

Test plan

  • Uses an existing, documented SDK field (`nativeNames`) — no contract changes
  • Non-Telegram surfaces unaffected (no `default` override provided)
  • Other tests using the same pattern already exist (see `src/plugins/commands.test.ts` for `nativeNames` coverage)

🤖 Generated with Claude Code

Changed files

  • extensions/active-memory/index.ts (modified, +5/-0)
RAW_BUFFERClick to expand / collapse

Summary

There seems to be a Telegram slash-command naming mismatch for Active Memory.

The actual command exposed in chat is:

  • /active-memory

But Telegram BotFather command registration expects a normal slash command token like:

  • /active_memory

Because of that mismatch, the command users can actually add in BotFather is the underscore form, while the chat-visible/runtime form is the hyphen form.

Why this is a problem

For Telegram bots, command registration is not just cosmetic. Users often rely on BotFather command lists for:

  • discoverability
  • tap-to-run slash commands
  • onboarding and memory of available commands

Right now this creates a confusing split:

  • runtime / chat uses /active-memory
  • BotFather-compatible registration wants /active_memory

So the command appears "wrong" from the Telegram integration perspective.

Expected behavior

OpenClaw should expose Telegram slash commands using a BotFather-compatible command name, or provide a clear Telegram-specific alias.

For this case, likely one of these should happen:

  1. expose /active_memory as the Telegram-facing slash command
  2. support both /active-memory and /active_memory
  3. normalize command naming per surface so Telegram gets the underscore form while other surfaces can keep the canonical hyphen form

Current observed behavior

  • /active-memory is the correct runtime command in OpenClaw
  • but /active_memory is the form that can actually be added directly in BotFather
  • so the exposed slash-command surface and the Telegram registration surface are out of sync

Request

Could maintainers clarify the intended canonical Telegram command surface here?

This looks like a small naming bug, but it impacts command discoverability and makes Telegram slash-command setup feel broken or inconsistent.

extent analysis

TL;DR

The Telegram slash-command naming mismatch can be fixed by exposing the command as /active_memory in OpenClaw to match the BotFather-compatible registration.

Guidance

  • Verify the current command registration in BotFather to confirm the expected format is /active_memory.
  • Consider updating OpenClaw to expose the command as /active_memory to match the BotFather registration.
  • If updating the command name is not feasible, explore supporting both /active-memory and /active_memory to ensure compatibility with both runtime and BotFather registration.
  • Review the command naming convention across different surfaces to ensure consistency and consider normalizing the naming per surface.

Example

No code snippet is provided as the issue is related to command naming and registration.

Notes

The solution may depend on the specific implementation of OpenClaw and the Telegram BotFather API. It is essential to test the changes to ensure compatibility and consistency across different surfaces.

Recommendation

Apply a workaround by supporting both /active-memory and /active_memory in OpenClaw, allowing for compatibility with both runtime and BotFather registration, until a more permanent solution can be implemented.

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…

FAQ

Expected behavior

OpenClaw should expose Telegram slash commands using a BotFather-compatible command name, or provide a clear Telegram-specific alias.

For this case, likely one of these should happen:

  1. expose /active_memory as the Telegram-facing slash command
  2. support both /active-memory and /active_memory
  3. normalize command naming per surface so Telegram gets the underscore form while other surfaces can keep the canonical hyphen form

Still need to ship something?

×6

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

Back to top recommendations

TRENDING