openclaw/extensions/matrix/src/group-mentions.ts
Vj a0ea122d92 chore: full rebrand clawdbot -> moltbot
- Replace all CLAWDBOT_* env vars with MOLTBOT_*
- Replace all .clawdbot paths with .moltbot
- Update daemon labels to bot.molt.*
- Update plugin SDK imports to moltbot/plugin-sdk
- Remove clawdbot bin alias from package.json
- Preserve legacy compatibility in compat/legacy-names.ts
2026-01-29 11:24:27 +00:00

62 lines
2.1 KiB
TypeScript

import type { ChannelGroupContext, GroupToolPolicyConfig } from "moltbot/plugin-sdk";
import { resolveMatrixRoomConfig } from "./matrix/monitor/rooms.js";
import type { CoreConfig } from "./types.js";
export function resolveMatrixGroupRequireMention(params: ChannelGroupContext): boolean {
const rawGroupId = params.groupId?.trim() ?? "";
let roomId = rawGroupId;
const lower = roomId.toLowerCase();
if (lower.startsWith("matrix:")) {
roomId = roomId.slice("matrix:".length).trim();
}
if (roomId.toLowerCase().startsWith("channel:")) {
roomId = roomId.slice("channel:".length).trim();
}
if (roomId.toLowerCase().startsWith("room:")) {
roomId = roomId.slice("room:".length).trim();
}
const groupChannel = params.groupChannel?.trim() ?? "";
const aliases = groupChannel ? [groupChannel] : [];
const cfg = params.cfg as CoreConfig;
const resolved = resolveMatrixRoomConfig({
rooms: cfg.channels?.matrix?.groups ?? cfg.channels?.matrix?.rooms,
roomId,
aliases,
name: groupChannel || undefined,
}).config;
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 rawGroupId = params.groupId?.trim() ?? "";
let roomId = rawGroupId;
const lower = roomId.toLowerCase();
if (lower.startsWith("matrix:")) {
roomId = roomId.slice("matrix:".length).trim();
}
if (roomId.toLowerCase().startsWith("channel:")) {
roomId = roomId.slice("channel:".length).trim();
}
if (roomId.toLowerCase().startsWith("room:")) {
roomId = roomId.slice("room:".length).trim();
}
const groupChannel = params.groupChannel?.trim() ?? "";
const aliases = groupChannel ? [groupChannel] : [];
const cfg = params.cfg as CoreConfig;
const resolved = resolveMatrixRoomConfig({
rooms: cfg.channels?.matrix?.groups ?? cfg.channels?.matrix?.rooms,
roomId,
aliases,
name: groupChannel || undefined,
}).config;
return resolved?.tools;
}