fix: sanitize native command names for Telegram API (#19257)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: b608be348888505b23bb4b2f1c8c42058a28e64e
Co-authored-by: akramcodez <179671552+akramcodez@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
This commit is contained in:
Sk Akram
2026-02-17 23:20:36 +05:30
committed by GitHub
parent 20a561224c
commit c4e9bb3b99
7 changed files with 71 additions and 22 deletions

View File

@@ -21,7 +21,7 @@ describe("telegram custom commands schema", () => {
]);
});
it("rejects custom commands with invalid names", () => {
it("normalizes hyphens in custom command names", () => {
const res = OpenClawSchema.safeParse({
channels: {
telegram: {
@@ -30,17 +30,13 @@ describe("telegram custom commands schema", () => {
},
});
expect(res.success).toBe(false);
if (res.success) {
expect(res.success).toBe(true);
if (!res.success) {
return;
}
expect(
res.error.issues.some(
(issue) =>
issue.path.join(".") === "channels.telegram.customCommands.0.command" &&
issue.message.includes("invalid"),
),
).toBe(true);
expect(res.data.channels?.telegram?.customCommands).toEqual([
{ command: "bad_name", description: "Override status" },
]);
});
});

View File

@@ -17,7 +17,7 @@ export function normalizeTelegramCommandName(value: string): string {
return "";
}
const withoutSlash = trimmed.startsWith("/") ? trimmed.slice(1) : trimmed;
return withoutSlash.trim().toLowerCase();
return withoutSlash.trim().toLowerCase().replace(/-/g, "_");
}
export function normalizeTelegramCommandDescription(value: string): string {