mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-30 06:55:03 +00:00
fix(telegram): prevent duplicate messages with slow LLM providers (#41932)
Merged via squash.
Prepared head SHA: 2f50c51d5a
Co-authored-by: hougangdev <105773686+hougangdev@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { isRecoverableTelegramNetworkError, isSafeToRetrySendError } from "./network-errors.js";
|
||||
import {
|
||||
isRecoverableTelegramNetworkError,
|
||||
isSafeToRetrySendError,
|
||||
isTelegramClientRejection,
|
||||
isTelegramServerError,
|
||||
} from "./network-errors.js";
|
||||
|
||||
describe("isRecoverableTelegramNetworkError", () => {
|
||||
it("detects recoverable error codes", () => {
|
||||
@@ -164,3 +169,51 @@ describe("isSafeToRetrySendError", () => {
|
||||
expect(isSafeToRetrySendError(wrapped)).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("isTelegramServerError", () => {
|
||||
it("returns true for error_code 500", () => {
|
||||
const err = Object.assign(new Error("Internal Server Error"), { error_code: 500 });
|
||||
expect(isTelegramServerError(err)).toBe(true);
|
||||
});
|
||||
|
||||
it("returns true for error_code 502", () => {
|
||||
const err = Object.assign(new Error("Bad Gateway"), { error_code: 502 });
|
||||
expect(isTelegramServerError(err)).toBe(true);
|
||||
});
|
||||
|
||||
it("returns false for error_code 403", () => {
|
||||
const err = Object.assign(new Error("Forbidden"), { error_code: 403 });
|
||||
expect(isTelegramServerError(err)).toBe(false);
|
||||
});
|
||||
|
||||
it("returns false for plain Error", () => {
|
||||
expect(isTelegramServerError(new Error("500: Internal Server Error"))).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("isTelegramClientRejection", () => {
|
||||
it("returns true for error_code 400", () => {
|
||||
const err = Object.assign(new Error("Bad Request"), { error_code: 400 });
|
||||
expect(isTelegramClientRejection(err)).toBe(true);
|
||||
});
|
||||
|
||||
it("returns true for error_code 403", () => {
|
||||
const err = Object.assign(new Error("Forbidden"), { error_code: 403 });
|
||||
expect(isTelegramClientRejection(err)).toBe(true);
|
||||
});
|
||||
|
||||
it("returns false for error_code 502", () => {
|
||||
const err = Object.assign(new Error("Bad Gateway"), { error_code: 502 });
|
||||
expect(isTelegramClientRejection(err)).toBe(false);
|
||||
});
|
||||
|
||||
it("returns false for plain Error", () => {
|
||||
expect(isTelegramClientRejection(new Error("400: Bad Request"))).toBe(false);
|
||||
});
|
||||
|
||||
it("detects error_code in nested cause", () => {
|
||||
const inner = Object.assign(new Error("Forbidden"), { error_code: 403 });
|
||||
const outer = Object.assign(new Error("wrapped"), { cause: inner });
|
||||
expect(isTelegramClientRejection(outer)).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user