Files
clawdbot/src/commands/doctor-legacy-config.ts
Peter Steinberger 50c8e74230 fix(doctor): avoid ack reaction migration without config (#1087)
Thanks @YuriNachos.

Co-authored-by: Yuri Chukhlib <YuriNachos@users.noreply.github.com>
2026-01-17 18:07:06 +00:00

48 lines
1.5 KiB
TypeScript

import type { ClawdbotConfig } from "../config/config.js";
export function normalizeLegacyConfigValues(cfg: ClawdbotConfig): {
config: ClawdbotConfig;
changes: string[];
} {
const changes: string[] = [];
let next: ClawdbotConfig = cfg;
const legacyAckReaction = cfg.messages?.ackReaction?.trim();
const hasWhatsAppConfig = cfg.channels?.whatsapp !== undefined;
if (legacyAckReaction && hasWhatsAppConfig) {
const hasWhatsAppAck = cfg.channels?.whatsapp?.ackReaction !== undefined;
if (!hasWhatsAppAck) {
const legacyScope = cfg.messages?.ackReactionScope ?? "group-mentions";
let direct = true;
let group: "always" | "mentions" | "never" = "mentions";
if (legacyScope === "all") {
direct = true;
group = "always";
} else if (legacyScope === "direct") {
direct = true;
group = "never";
} else if (legacyScope === "group-all") {
direct = false;
group = "always";
} else if (legacyScope === "group-mentions") {
direct = false;
group = "mentions";
}
next = {
...next,
channels: {
...next.channels,
whatsapp: {
...next.channels?.whatsapp,
ackReaction: { emoji: legacyAckReaction, direct, group },
},
},
};
changes.push(
`Copied messages.ackReaction → channels.whatsapp.ackReaction (scope: ${legacyScope}).`,
);
}
}
return { config: next, changes };
}