mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 23:14:31 +00:00
refactor: unify queueing and normalize telegram slack flows
This commit is contained in:
@@ -63,6 +63,7 @@ import {
|
||||
calculateTotalPages,
|
||||
getModelsPageSize,
|
||||
parseModelCallbackData,
|
||||
resolveModelSelection,
|
||||
type ProviderInfo,
|
||||
} from "./model-buttons.js";
|
||||
import { buildInlineKeyboard } from "./send.js";
|
||||
@@ -1260,30 +1261,28 @@ export const registerTelegramHandlers = ({
|
||||
}
|
||||
|
||||
if (modelCallback.type === "select") {
|
||||
const { provider, model } = modelCallback;
|
||||
let resolvedProvider = provider;
|
||||
if (!resolvedProvider) {
|
||||
const matchingProviders = providers.filter((id) => byProvider.get(id)?.has(model));
|
||||
if (matchingProviders.length === 1) {
|
||||
resolvedProvider = matchingProviders[0];
|
||||
} else {
|
||||
const providerInfos: ProviderInfo[] = providers.map((p) => ({
|
||||
id: p,
|
||||
count: byProvider.get(p)?.size ?? 0,
|
||||
}));
|
||||
const buttons = buildProviderKeyboard(providerInfos);
|
||||
await editMessageWithButtons(
|
||||
`Could not resolve model "${model}".\n\nSelect a provider:`,
|
||||
buttons,
|
||||
);
|
||||
return;
|
||||
}
|
||||
const selection = resolveModelSelection({
|
||||
callback: modelCallback,
|
||||
providers,
|
||||
byProvider,
|
||||
});
|
||||
if (selection.kind !== "resolved") {
|
||||
const providerInfos: ProviderInfo[] = providers.map((p) => ({
|
||||
id: p,
|
||||
count: byProvider.get(p)?.size ?? 0,
|
||||
}));
|
||||
const buttons = buildProviderKeyboard(providerInfos);
|
||||
await editMessageWithButtons(
|
||||
`Could not resolve model "${selection.model}".\n\nSelect a provider:`,
|
||||
buttons,
|
||||
);
|
||||
return;
|
||||
}
|
||||
// Process model selection as a synthetic message with /model command
|
||||
const syntheticMessage = buildSyntheticTextMessage({
|
||||
base: callbackMessage,
|
||||
from: callback.from,
|
||||
text: `/model ${resolvedProvider}/${model}`,
|
||||
text: `/model ${selection.provider}/${selection.model}`,
|
||||
});
|
||||
await processMessage(buildSyntheticContext(ctx, syntheticMessage), [], storeAllowFrom, {
|
||||
forceWasMentioned: true,
|
||||
|
||||
Reference in New Issue
Block a user