fix: require triggers for paired bot messages

This commit is contained in:
Eyejoker
2026-03-23 04:15:22 +09:00
parent 1974f8a6dc
commit be521eb903
2 changed files with 138 additions and 3 deletions

View File

@@ -126,6 +126,21 @@ export function createMessageRuntime(deps: MessageRuntimeDeps): {
channel?.isOwnMessage?.bind(channel),
);
const filterTriggeredPairedBotMessages = (
chatJid: string,
messages: Parameters<typeof filterProcessableMessages>[0],
) => {
if (!isPairedRoomJid(chatJid)) return messages;
// In paired rooms, require an explicit trigger before reacting to another
// bot's message. This keeps the room usable without reintroducing bot loops.
return messages.filter(
(message) =>
!message.is_bot_message ||
deps.triggerPattern.test(message.content.trim()),
);
};
const deliverOpenWorkItem = async (
channel: Channel,
item: WorkItem,
@@ -575,10 +590,9 @@ export function createMessageRuntime(deps: MessageRuntimeDeps): {
sinceSeqCursor,
deps.assistantName,
);
const missedMessages = getProcessableMessages(
const missedMessages = filterTriggeredPairedBotMessages(
chatJid,
rawMissedMessages,
channel,
getProcessableMessages(chatJid, rawMissedMessages, channel),
);
if (missedMessages.length === 0) {