feat: default telegram reaction level minimal

This commit is contained in:
Peter Steinberger
2026-01-16 20:35:43 +00:00
parent aaa310c047
commit 470add877c
5 changed files with 9 additions and 8 deletions

View File

@@ -46,6 +46,7 @@
- Browser: increase remote CDP reachability timeouts + add `remoteCdpTimeoutMs`/`remoteCdpHandshakeTimeoutMs`.
- Browser: preserve auth/query tokens for remote CDP endpoints and pass Basic auth for CDP HTTP/WS. (#895) — thanks @mukhtharcm.
- Telegram: add bidirectional reaction support with configurable notifications and agent guidance. (#964) — thanks @bohdanpodvirnyi.
- Telegram: default reaction level to minimal for more delightful baseline reactions.
- Telegram: allow custom commands in the bot menu (merged with native; conflicts ignored). (#860) — thanks @nachoiacovino.
- Discord: allow allowlisted guilds without channel lists to receive messages when `groupPolicy="allowlist"`. — thanks @thewilloftheshadow.
- Discord: allow emoji/sticker uploads + channel actions in config defaults. (#870) — thanks @JDIVE.

View File

@@ -506,7 +506,7 @@ Provider options:
- `channels.telegram.actions.sendMessage`: gate Telegram tool message sends.
- `channels.telegram.actions.deleteMessage`: gate Telegram tool message deletes.
- `channels.telegram.reactionNotifications`: `off | own | all` — control which reactions trigger system events (default: `off` when not set).
- `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — control agent's reaction capability (default: `ack` when not set).
- `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — control agent's reaction capability (default: `minimal` when not set).
Related global options:
- `agents.list[].groupChat.mentionPatterns` (mention gating patterns).

View File

@@ -135,7 +135,7 @@ describe("handleTelegramAction", () => {
).rejects.toThrow(/Telegram agent reactions disabled.*reactionLevel="off"/);
});
it("blocks reactions when reactionLevel is ack (default)", async () => {
it("blocks reactions when reactionLevel is ack", async () => {
const cfg = {
channels: { telegram: { botToken: "tok", reactionLevel: "ack" } },
} as ClawdbotConfig;

View File

@@ -18,16 +18,16 @@ describe("resolveTelegramReactionLevel", () => {
}
});
it("defaults to ack level when reactionLevel is not set", () => {
it("defaults to minimal level when reactionLevel is not set", () => {
const cfg: ClawdbotConfig = {
channels: { telegram: {} },
};
const result = resolveTelegramReactionLevel({ cfg });
expect(result.level).toBe("ack");
expect(result.ackEnabled).toBe(true);
expect(result.agentReactionsEnabled).toBe(false);
expect(result.agentReactionGuidance).toBeUndefined();
expect(result.level).toBe("minimal");
expect(result.ackEnabled).toBe(false);
expect(result.agentReactionsEnabled).toBe(true);
expect(result.agentReactionGuidance).toBe("minimal");
});
it("returns off level with no reactions enabled", () => {

View File

@@ -24,7 +24,7 @@ export function resolveTelegramReactionLevel(params: {
cfg: params.cfg,
accountId: params.accountId,
});
const level = (account.config.reactionLevel ?? "ack") as TelegramReactionLevel;
const level = (account.config.reactionLevel ?? "minimal") as TelegramReactionLevel;
switch (level) {
case "off":