mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-17 12:11:20 +00:00
42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { resolveMatrixAccountConfig } from "./matrix/accounts.js";
|
|
import { resolveMatrixRoomConfig } from "./matrix/monitor/rooms.js";
|
|
import { normalizeMatrixResolvableTarget } from "./matrix/target-ids.js";
|
|
import type { ChannelGroupContext, GroupToolPolicyConfig } from "./runtime-api.js";
|
|
import type { CoreConfig } from "./types.js";
|
|
|
|
function resolveMatrixRoomConfigForGroup(params: ChannelGroupContext) {
|
|
const roomId = normalizeMatrixResolvableTarget(params.groupId?.trim() ?? "");
|
|
const groupChannel = params.groupChannel?.trim() ?? "";
|
|
const aliases = groupChannel ? [normalizeMatrixResolvableTarget(groupChannel)] : [];
|
|
const cfg = params.cfg as CoreConfig;
|
|
const matrixConfig = resolveMatrixAccountConfig({ cfg, accountId: params.accountId });
|
|
return resolveMatrixRoomConfig({
|
|
rooms: matrixConfig.groups ?? matrixConfig.rooms,
|
|
roomId,
|
|
aliases,
|
|
}).config;
|
|
}
|
|
|
|
export function resolveMatrixGroupRequireMention(params: ChannelGroupContext): boolean {
|
|
const resolved = resolveMatrixRoomConfigForGroup(params);
|
|
if (resolved) {
|
|
if (resolved.autoReply === true) {
|
|
return false;
|
|
}
|
|
if (resolved.autoReply === false) {
|
|
return true;
|
|
}
|
|
if (typeof resolved.requireMention === "boolean") {
|
|
return resolved.requireMention;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
export function resolveMatrixGroupToolPolicy(
|
|
params: ChannelGroupContext,
|
|
): GroupToolPolicyConfig | undefined {
|
|
const resolved = resolveMatrixRoomConfigForGroup(params);
|
|
return resolved?.tools;
|
|
}
|