Files
Moltbot/src/web/auto-reply/monitor/group-activation.ts
2026-01-14 01:17:56 +00:00

63 lines
1.7 KiB
TypeScript

import { normalizeGroupActivation } from "../../../auto-reply/group-activation.js";
import type { loadConfig } from "../../../config/config.js";
import {
resolveChannelGroupPolicy,
resolveChannelGroupRequireMention,
} from "../../../config/group-policy.js";
import {
loadSessionStore,
resolveGroupSessionKey,
resolveStorePath,
} from "../../../config/sessions.js";
export function resolveGroupPolicyFor(
cfg: ReturnType<typeof loadConfig>,
conversationId: string,
) {
const groupId = resolveGroupSessionKey({
From: conversationId,
ChatType: "group",
Provider: "whatsapp",
})?.id;
return resolveChannelGroupPolicy({
cfg,
channel: "whatsapp",
groupId: groupId ?? conversationId,
});
}
export function resolveGroupRequireMentionFor(
cfg: ReturnType<typeof loadConfig>,
conversationId: string,
) {
const groupId = resolveGroupSessionKey({
From: conversationId,
ChatType: "group",
Provider: "whatsapp",
})?.id;
return resolveChannelGroupRequireMention({
cfg,
channel: "whatsapp",
groupId: groupId ?? conversationId,
});
}
export function resolveGroupActivationFor(params: {
cfg: ReturnType<typeof loadConfig>;
agentId: string;
sessionKey: string;
conversationId: string;
}) {
const storePath = resolveStorePath(params.cfg.session?.store, {
agentId: params.agentId,
});
const store = loadSessionStore(storePath);
const entry = store[params.sessionKey];
const requireMention = resolveGroupRequireMentionFor(
params.cfg,
params.conversationId,
);
const defaultActivation = requireMention === false ? "always" : "mention";
return normalizeGroupActivation(entry?.groupActivation) ?? defaultActivation;
}