fix(telegram): improve error messages for 403 bot not member errors

- Detect 403 'bot is not a member' errors specifically
- Provide actionable guidance for users to fix the issue
- Fixes #48273 where outbound sendMessage fails with 403

Root cause:
When a Telegram bot tries to send a message to a channel/group it's not
a member of, the API returns 403 'bot is not a member of the channel chat'.
The error message was not clear about how to fix this.

Fix:
1. Detect 403 errors in wrapTelegramChatNotFoundError
2. Provide clear error message explaining the issue
3. Suggest adding the bot to the channel/group
This commit is contained in:
w-sss 2026-03-17 00:37:37 +08:00
parent f404ff32d5
commit f0f8226fac

View File

@ -491,7 +491,20 @@ function createTelegramRequestWithDiag(params: {
}
function wrapTelegramChatNotFoundError(err: unknown, params: { chatId: string; input: string }) {
if (!CHAT_NOT_FOUND_RE.test(formatErrorMessage(err))) {
const errorMsg = formatErrorMessage(err);
// Check for 403 "bot is not a member" error
if (/403.*bot.*not.*member|bot.*blocked/i.test(errorMsg)) {
return new Error(
[
`Telegram send failed: bot is not a member of the chat (chat_id=${params.chatId}).`,
"Fix: Add the bot to the channel/group, or ensure it has not been removed/blocked.",
`Input was: ${JSON.stringify(params.input)}.`,
].join(" "),
);
}
if (!CHAT_NOT_FOUND_RE.test(errorMsg)) {
return err;
}
return new Error(