fix(telegram): prevent non-abort slash commands from racing chat replies (#17899)

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

Prepared head SHA: 5c2f6f2c96
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
This commit is contained in:
Ayaan Zaidi
2026-02-16 16:21:10 +05:30
committed by GitHub
parent bc67af6ad8
commit b2aa6e094d
5 changed files with 44 additions and 9 deletions

View File

@@ -7,7 +7,7 @@ import type { OpenClawConfig, ReplyToMode } from "../config/config.js";
import type { RuntimeEnv } from "../runtime.js";
import { resolveDefaultAgentId } from "../agents/agent-scope.js";
import { resolveTextChunkLimit } from "../auto-reply/chunk.js";
import { isControlCommandMessage } from "../auto-reply/command-detection.js";
import { isAbortRequestText } from "../auto-reply/reply/abort.js";
import { DEFAULT_GROUP_HISTORY_LIMIT, type HistoryEntry } from "../auto-reply/reply/history.js";
import {
isNativeCommandsExplicitlyDisabled,
@@ -90,10 +90,7 @@ export function getTelegramSequentialKey(ctx: {
const chatId = msg?.chat?.id ?? ctx.chat?.id;
const rawText = msg?.text ?? msg?.caption;
const botUsername = ctx.me?.username;
if (
rawText &&
isControlCommandMessage(rawText, undefined, botUsername ? { botUsername } : undefined)
) {
if (isAbortRequestText(rawText, botUsername ? { botUsername } : undefined)) {
if (typeof chatId === "number") {
return `telegram:${chatId}:control`;
}