openclaw - ✅(Solved) Fix [Bug]: Telegram model selector shows model IDs instead of readable names for Nexos provider [2 pull requests, 1 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#56165Fetched 2026-04-08 01:44:15
View on GitHub
Comments
0
Participants
1
Timeline
13
Reactions
0
Participants
Timeline (top)
referenced ×7cross-referenced ×3closed ×1labeled ×1

When using /models command in Telegram, the model list for the Nexos provider displays raw UUIDs instead of the configured model names.

Root cause: In model-selection-7OCRoBDT.js, the buildModelsKeyboard function uses truncateModelId(model, 38) where model is the model ID, not the display name. The function should look up the model's name property from the catalog before displaying.

// Current (buggy): const displayText = truncateModelId(model, 38);

// Should be something like: const modelEntry = modelRegistry.find(provider, model); const displayText = truncateModelId(modelEntry?.name ?? model, 38);

Environment:

• OpenClaw version: 2026.3.12 • Provider: Nexos (API key auth) • Channel: Telegram

Config snippet:

"nexos": { "models": [ { "id": "e8ccc8aa-1d76-47a3-acf6-0448a72347d8", "name": "Nexos Gpt 5 2", ... } ] }

Root Cause

Root cause: In model-selection-7OCRoBDT.js, the buildModelsKeyboard function uses truncateModelId(model, 38) where model is the model ID, not the display name. The function should look up the model's name property from the catalog before displaying.

Fix Action

Fixed

PR fix notes

PR #56171: Telegram: show model display names instead of raw IDs in /models selector

Description (problem / solution / changelog)

Summary

Fixes #56165

When using /models in Telegram, the model selector buttons displayed raw model IDs (e.g. UUIDs like e8ccc8aa-1d76-47a3-acf6-0448a72347d8 for Nexos provider) instead of the configured human-readable names (e.g. "Nexos Gpt 5 2").

Root Cause

buildModelsKeyboard received only model ID strings and passed them directly to truncateModelId() for display text. There was no mechanism to look up a model's configured display name.

Changes

  • extensions/telegram/src/model-buttons.ts: Added optional modelNames map (ReadonlyMap<string, string>) to ModelsKeyboardParams. When present, the display text uses the mapped name instead of the raw model ID. Callback data still uses the model ID for selection logic.
  • src/auto-reply/reply/commands-models.ts: Added modelNames field to ModelsProviderData. During buildModelsProviderData, catalog entries with a name different from their id are recorded in the map. The map is passed through to buildModelsKeyboard on the Telegram path.
  • extensions/telegram/src/bot-handlers.runtime.ts: Destructures modelNames from model data and passes it to buildModelsKeyboard.
  • Test updates: Added 3 new test cases covering name display, fallback to ID, and current-model checkmark with names. Updated all mock buildModelsProviderData implementations across Telegram, Discord, and Mattermost test harnesses to include the new modelNames field.

Testing

  • pnpm test -- extensions/telegram/src/model-buttons.test.ts — 23/23 passed
  • pnpm test -- extensions/discord/src/monitor/native-command.model-picker.test.ts — 8/8 passed

Changed files

  • extensions/discord/src/monitor/model-picker.test-utils.ts (modified, +1/-0)
  • extensions/mattermost/src/mattermost/model-picker.test.ts (modified, +2/-0)
  • extensions/mattermost/src/mattermost/slash-http.send-config.test.ts (modified, +1/-1)
  • extensions/telegram/src/bot-handlers.runtime.ts (modified, +2/-1)
  • extensions/telegram/src/bot-message-dispatch.test.ts (modified, +1/-0)
  • extensions/telegram/src/bot-native-commands.menu-test-support.ts (modified, +1/-0)
  • extensions/telegram/src/bot-native-commands.session-meta.test.ts (modified, +1/-0)
  • extensions/telegram/src/bot-native-commands.test-helpers.ts (modified, +1/-0)
  • extensions/telegram/src/bot.create-telegram-bot.test-harness.ts (modified, +2/-1)
  • extensions/telegram/src/bot.media.e2e-harness.ts (modified, +1/-0)
  • extensions/telegram/src/model-buttons.test.ts (modified, +43/-0)
  • extensions/telegram/src/model-buttons.ts (modified, +5/-2)
  • src/auto-reply/reply/commands-models.ts (modified, +12/-2)

PR #56175: fix: display model name instead of ID in Telegram model selector (#56165)

Description (problem / solution / changelog)

Summary

  • Telegram /models keyboard now shows the configured model name (e.g. "Nexos Gpt 5 2") instead of raw IDs/UUIDs
  • Added modelNames map to ModelsProviderData populated from the model catalog
  • buildModelsKeyboard prefers modelNames.get(id) ?? id for display text; callback data still uses raw ID
  • Includes tests verifying name display and fallback behavior

Test plan

  • Existing 22 model-buttons tests pass
  • New tests: verify name is displayed when available, falls back to ID when not
  • Manual: configure a provider with UUID model IDs and readable names, verify /models shows names

Closes #56165

Changed files

  • extensions/discord/src/monitor/model-picker.test-utils.ts (modified, +1/-0)
  • extensions/mattermost/src/mattermost/slash-http.send-config.test.ts (modified, +1/-1)
  • extensions/telegram/src/bot-handlers.runtime.ts (modified, +2/-1)
  • extensions/telegram/src/bot-message-dispatch.test.ts (modified, +1/-0)
  • extensions/telegram/src/bot-native-commands.menu-test-support.ts (modified, +1/-0)
  • extensions/telegram/src/bot-native-commands.session-meta.test.ts (modified, +1/-0)
  • extensions/telegram/src/bot-native-commands.test-helpers.ts (modified, +1/-0)
  • extensions/telegram/src/bot.create-telegram-bot.test-harness.ts (modified, +2/-1)
  • extensions/telegram/src/bot.media.e2e-harness.ts (modified, +1/-0)
  • extensions/telegram/src/model-buttons.test.ts (modified, +35/-0)
  • extensions/telegram/src/model-buttons.ts (modified, +6/-2)
  • src/auto-reply/reply/commands-models.ts (modified, +17/-2)
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

When using /models command in Telegram, the model list for the Nexos provider displays raw UUIDs instead of the configured model names.

Root cause: In model-selection-7OCRoBDT.js, the buildModelsKeyboard function uses truncateModelId(model, 38) where model is the model ID, not the display name. The function should look up the model's name property from the catalog before displaying.

// Current (buggy): const displayText = truncateModelId(model, 38);

// Should be something like: const modelEntry = modelRegistry.find(provider, model); const displayText = truncateModelId(modelEntry?.name ?? model, 38);

Environment:

• OpenClaw version: 2026.3.12 • Provider: Nexos (API key auth) • Channel: Telegram

Config snippet:

"nexos": { "models": [ { "id": "e8ccc8aa-1d76-47a3-acf6-0448a72347d8", "name": "Nexos Gpt 5 2", ... } ] }

Steps to reproduce

  1. Configure Nexos provider with models in openclaw.json
  2. Run /models command in Telegram
  3. Select Nexos provider from the list
  4. Observe that buttons show UUIDs like e8ccc8aa-1d76-47a3-acf6-0448a72347d8 instead of configured names like Nexos Gpt 5 2

Expected behavior

Model buttons should display the name field from the model configuration (e.g., "Nexos Gpt 5 2") rather than the id field.

Actual behavior

When using /models command in Telegram, the model list for the Nexos provider displays raw UUIDs instead of the configured model names.

OpenClaw version

2026.3.12

Operating system

Linux 6.8.0 (Hostinger VPS, Docker container)

Install method

docker

Model

nexos/e8ccc8aa-1d76-47a3-acf6-0448a72347d8 (Nexos Gpt 5 2)

Provider / routing chain

nexos (direct API)

Additional provider/model setup details

Nexos provider with API key auth. Models configured in openclaw.json under models.providers.nexos[]. Each model entry has id (UUID) and name (readable string like "Nexos Gpt 5 2").

Relevant config:

"nexos": { "models": [ { "id": "e8ccc8aa-1d76-47a3-acf6-0448a72347d8", "name": "Nexos Gpt 5 2" } ] }

Image

Logs, screenshots, and evidence

Impact and severity

Affected: Telegram users selecting models via /models command Severity: Annoying (discoverability issue, UUIDs are not human-readable) Frequency: Always when browsing Nexos provider models Consequence: Users cannot identify which model they are selecting without cross-referencing config

Additional information

This is a UI display bug. The model IDs shown in Telegram buttons should use the configured name field instead of the id field.

extent analysis

Fix Plan

To fix the issue, we need to modify the buildModelsKeyboard function in model-selection-7OCRoBDT.js to use the model's name property from the catalog instead of the id property.

  • Update the buildModelsKeyboard function to look up the model's name property:
const modelEntry = modelRegistry.find(provider, model);
const displayText = truncateModelId(modelEntry?.name ?? model, 38);
  • Ensure that the modelRegistry is properly populated with the model configurations from openclaw.json.

Verification

To verify that the fix worked:

  1. Update the model-selection-7OCRoBDT.js file with the modified buildModelsKeyboard function.
  2. Restart the OpenClaw service.
  3. Run the /models command in Telegram and select the Nexos provider.
  4. Verify that the model buttons display the configured names (e.g., "Nexos Gpt 5 2") instead of the UUIDs.

Extra Tips

  • Make sure to test the fix with different models and providers to ensure that the issue is fully resolved.
  • Consider adding additional logging or debugging statements to the buildModelsKeyboard function to help identify any future issues.

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

Model buttons should display the name field from the model configuration (e.g., "Nexos Gpt 5 2") rather than the id field.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Bug]: Telegram model selector shows model IDs instead of readable names for Nexos provider [2 pull requests, 1 participants]