mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 03:32:43 +00:00
refactor(web): dedupe group gating history capture
This commit is contained in:
@@ -28,6 +28,30 @@ function isOwnerSender(baseMentionConfig: MentionConfig, msg: WebInboundMsg) {
|
|||||||
return owners.includes(sender);
|
return owners.includes(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function recordPendingGroupHistoryEntry(params: {
|
||||||
|
msg: WebInboundMsg;
|
||||||
|
groupHistories: Map<string, GroupHistoryEntry[]>;
|
||||||
|
groupHistoryKey: string;
|
||||||
|
groupHistoryLimit: number;
|
||||||
|
}) {
|
||||||
|
const sender =
|
||||||
|
params.msg.senderName && params.msg.senderE164
|
||||||
|
? `${params.msg.senderName} (${params.msg.senderE164})`
|
||||||
|
: (params.msg.senderName ?? params.msg.senderE164 ?? "Unknown");
|
||||||
|
recordPendingHistoryEntryIfEnabled({
|
||||||
|
historyMap: params.groupHistories,
|
||||||
|
historyKey: params.groupHistoryKey,
|
||||||
|
limit: params.groupHistoryLimit,
|
||||||
|
entry: {
|
||||||
|
sender,
|
||||||
|
body: params.msg.body,
|
||||||
|
timestamp: params.msg.timestamp,
|
||||||
|
id: params.msg.id,
|
||||||
|
senderJid: params.msg.senderJid,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function applyGroupGating(params: {
|
export function applyGroupGating(params: {
|
||||||
cfg: ReturnType<typeof loadConfig>;
|
cfg: ReturnType<typeof loadConfig>;
|
||||||
msg: WebInboundMsg;
|
msg: WebInboundMsg;
|
||||||
@@ -68,21 +92,11 @@ export function applyGroupGating(params: {
|
|||||||
|
|
||||||
if (activationCommand.hasCommand && !owner) {
|
if (activationCommand.hasCommand && !owner) {
|
||||||
params.logVerbose(`Ignoring /activation from non-owner in group ${params.conversationId}`);
|
params.logVerbose(`Ignoring /activation from non-owner in group ${params.conversationId}`);
|
||||||
const sender =
|
recordPendingGroupHistoryEntry({
|
||||||
params.msg.senderName && params.msg.senderE164
|
msg: params.msg,
|
||||||
? `${params.msg.senderName} (${params.msg.senderE164})`
|
groupHistories: params.groupHistories,
|
||||||
: (params.msg.senderName ?? params.msg.senderE164 ?? "Unknown");
|
groupHistoryKey: params.groupHistoryKey,
|
||||||
recordPendingHistoryEntryIfEnabled({
|
groupHistoryLimit: params.groupHistoryLimit,
|
||||||
historyMap: params.groupHistories,
|
|
||||||
historyKey: params.groupHistoryKey,
|
|
||||||
limit: params.groupHistoryLimit,
|
|
||||||
entry: {
|
|
||||||
sender,
|
|
||||||
body: params.msg.body,
|
|
||||||
timestamp: params.msg.timestamp,
|
|
||||||
id: params.msg.id,
|
|
||||||
senderJid: params.msg.senderJid,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
return { shouldProcess: false };
|
return { shouldProcess: false };
|
||||||
}
|
}
|
||||||
@@ -126,21 +140,11 @@ export function applyGroupGating(params: {
|
|||||||
params.logVerbose(
|
params.logVerbose(
|
||||||
`Group message stored for context (no mention detected) in ${params.conversationId}: ${params.msg.body}`,
|
`Group message stored for context (no mention detected) in ${params.conversationId}: ${params.msg.body}`,
|
||||||
);
|
);
|
||||||
const sender =
|
recordPendingGroupHistoryEntry({
|
||||||
params.msg.senderName && params.msg.senderE164
|
msg: params.msg,
|
||||||
? `${params.msg.senderName} (${params.msg.senderE164})`
|
groupHistories: params.groupHistories,
|
||||||
: (params.msg.senderName ?? params.msg.senderE164 ?? "Unknown");
|
groupHistoryKey: params.groupHistoryKey,
|
||||||
recordPendingHistoryEntryIfEnabled({
|
groupHistoryLimit: params.groupHistoryLimit,
|
||||||
historyMap: params.groupHistories,
|
|
||||||
historyKey: params.groupHistoryKey,
|
|
||||||
limit: params.groupHistoryLimit,
|
|
||||||
entry: {
|
|
||||||
sender,
|
|
||||||
body: params.msg.body,
|
|
||||||
timestamp: params.msg.timestamp,
|
|
||||||
id: params.msg.id,
|
|
||||||
senderJid: params.msg.senderJid,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
return { shouldProcess: false };
|
return { shouldProcess: false };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user