#Help. telegram menu button commands disappear

26 messages · Page 1 of 1 (latest)

real glen
#

Seems like my commands in telegram disappeared. My claw recommended adding 4 commands using the botfather setcommands, but then I see only it,

mental runeBOT
#

Let me check the docs and source so I don’t guess.

#

Yeah, this is probably OpenClaw re-registering the Telegram menu.

On startup, OpenClaw calls Telegram setMyCommands, so BotFather /setcommands entries are not the durable source of truth here. They can get replaced or cleared.

If you want those 4 commands to stick, put them in config, not only BotFather:

{
  channels: {
    telegram: {
      customCommands: [
        { command: "backup", description: "Git backup" },
        { command: "generate", description: "Create an image" },
      ],
    },
  },
#
}

A couple gotchas:

  • commands.native / channels.telegram.commands.native controls Telegram native menu registration
  • commands.native: false clears previously registered Telegram commands on startup
  • conflicting/invalid command names are skipped
  • custom commands are menu entries only, they do not implement behavior by themselves

If you only see 1 command, the others were likely skipped or overwritten, and the logs should say why.

Can you paste these?

  1. pnpm openclaw --version
  2. your commands + channels.telegram config
  3. pnpm openclaw channels logs --channel telegram
real glen
#

Nice. I enabled channels.telegram.commands.native and it's back. No idea where to find commands.native or why it's disabled all of a sudden

mental runeBOT
#

Nice, glad we caught it. 🦐

commands.native is the global setting under top-level commands:

{
  commands: {
    native: "auto"
  }
}

For Telegram specifically, the override is the one you already used:

{
#
  channels: {
    telegram: {
      commands: {
        native: true
      }
    }
  }
}

A couple useful bits:

  • commands.native defaults to "auto", which should enable native commands for Telegram.
  • channels.telegram.commands.native overrides the global value for Telegram only.
  • So if it looked disabled, I’d check for an explicit commands.native: false or channels.telegram.commands.native: false somewhere in your config.
real glen
#

Just one quick question, where can I find the command section from the UI?

mental runeBOT
#

Let me check the UI docs so I point you to the right place.

#

I don’t think there’s a dedicated Commands page in the Control UI right now.

The place to change it from the UI is the Config editor, then search for:

  • commands.native
  • commands.nativeSkills
  • channels.telegram.commands.native
  • channels.telegram.customCommands

So for your case, I’d edit the Telegram config there rather than looking for a separate commands screen.

Docs:

If you want, I can paste the exact JSON5 block for “Telegram native commands on + custom commands.”

real glen
#

in telegram i now added:
197 "commands": {
198 "native": true,
199 "nativeSkills": true
200 }

in root json i have
154 "commands": {
155 "native": "auto",
156 "nativeSkills": "auto",
157 "restart": true,
158 "ownerDisplay": "raw"
159 },

mental runeBOT
#

Yep, that config is valid.

How it resolves:

  • top-level commands.native: "auto" already means Telegram native commands on
  • channels.telegram.commands.native: true is a Telegram-only override
  • provider override wins, so your effective Telegram config is now explicitly:
channels.telegram.commands.native = true
channels.telegram.commands.nativeSkills = true

So, two useful takeaways:

  1. You probably did not need the Telegram override
    Since root is already "auto", Telegram should have been enabled anyway.
#
  1. What likely fixed it was the fresh registration at startup
    Telegram menus are set with setMyCommands on startup, so the restart/reload may have re-pushed the menu.

If you want to keep things simple, you can probably remove the Telegram-specific commands block and rely on root "auto".

One extra tip: if the Telegram menu gets noisy, set:

channels.telegram.commands.nativeSkills = false

That keeps native commands without adding skill commands to the Telegram menu.

Docs:

real glen
#

so i tried it again and it's maybe a bug but seems like I;m forced to use also the telegram config. without it I don't have the commands. and it started when I enabled
257 "messages": {
258 "ackReactionScope": "all",
259 "ackReaction": "👀",
260 "removeAckAfterReply": true
261 }

not sure which specifically

mental runeBOT
#

Let me check the docs/source for those messages keys, that combo smells like either a merge quirk or a real bug.

#

Yeah, that should not be related.

I checked the config logic, native command registration only looks at:

  • commands.native
  • channels.telegram.commands.native
  • same idea for nativeSkills

Your messages block is supposed to affect only ack reactions, not Telegram command registration. So:

messages: {
  ackReactionScope: "all",
  ackReaction: "👀",
  removeAckAfterReply: true
}
#

should not force you to also set channels.telegram.commands.native: true.

So this smells like one of two things:

  1. a config shape / nesting issue somewhere nearby, or
  2. a real bug

For now, I’d keep the Telegram override as the workaround since it works.

Can you paste:

  • pnpm openclaw --version
  • a slightly larger chunk around channels.telegram, messages, and root commands

If it reproduces on current version, this is issue-worthy:
https://github.com/openclaw/openclaw/issues

If you want, I can help you turn it into a minimal repro first so the issue is easy to file.

real glen
#

native command now appear on DM and not on telegram group and topics. is it by design?

mental runeBOT
#

Let me check the Telegram docs/source before I answer, that one’s easy to get wrong.

#

I’m digging a little deeper in source, because Telegram command scope can be DM-only or group-only and the docs don’t say it clearly.

#

Short version, no, not as an OpenClaw design choice.

I checked the docs/source, and OpenClaw registers Telegram native commands with plain setMyCommands, not a DM-only scope. There’s also group/topic test coverage for native commands.

So if you see them in DMs but not in Telegram groups/topics, I’d split it like this:

  • If /help or /status works when typed manually in the group/topic
    then it’s probably a Telegram UI/menu visibility quirk, not OpenClaw intentionally hiding them.

  • If typed commands do not work in the group/topic
    then check group auth, not menu registration:

    • channels.telegram.groups
    • channels.telegram.groupPolicy
    • channels.telegram.groupAllowFrom
    • fallback channels.telegram.allowFrom

Important gotcha: DM pairing does not grant group command access. Groups/topics still need explicit group authorization.

real glen
#

If typed commands do not work in the group/topic
then check group auth, not menu registration:
channels.telegram.groups
channels.telegram.groupPolicy
channels.telegram.groupAllowFrom
fallback channels.telegram.allowFrom

what to check. what's the expected values?

real glen
#

i want the autocomplete and i don't have it in telegram topics @mental rune