63 lines
1.7 KiB
TypeScript
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;
|
|
}
|