fix: polish reply threading + tool dedupe (thanks @mneves75) (#326)

This commit is contained in:
Peter Steinberger
2026-01-08 00:50:29 +00:00
parent 33e2d53be3
commit 17d052bcda
16 changed files with 193 additions and 350 deletions

View File

@@ -0,0 +1,36 @@
import type { ClawdbotConfig } from "../../config/config.js";
import type { ReplyToMode } from "../../config/types.js";
import type { OriginatingChannelType } from "../templating.js";
import type { ReplyPayload } from "../types.js";
export function resolveReplyToMode(
cfg: ClawdbotConfig,
channel?: OriginatingChannelType,
): ReplyToMode {
switch (channel) {
case "telegram":
return cfg.telegram?.replyToMode ?? "first";
case "discord":
return cfg.discord?.replyToMode ?? "off";
case "slack":
return cfg.slack?.replyToMode ?? "off";
default:
return "all";
}
}
export function createReplyToModeFilter(mode: ReplyToMode) {
let hasThreaded = false;
return (payload: ReplyPayload): ReplyPayload => {
if (!payload.replyToId) return payload;
if (mode === "off") {
return { ...payload, replyToId: undefined };
}
if (mode === "all") return payload;
if (hasThreaded) {
return { ...payload, replyToId: undefined };
}
hasThreaded = true;
return payload;
};
}