File tree Expand file tree Collapse file tree 6 files changed +39
-2
lines changed
Expand file tree Collapse file tree 6 files changed +39
-2
lines changed Original file line number Diff line number Diff line change 11import { IRawAction } from '@plumber/types'
22
33import StepError from '@/errors/step'
4+ import logger from '@/helpers/logger'
45
56import { escapeMarkdown , sanitizeMarkdown } from '../../common/markdown-v1'
67import { throwSendMessageError } from '../../common/throw-errors'
@@ -88,6 +89,10 @@ const action: IRawAction = {
8889 }
8990 try {
9091 const response = await $ . http . post ( '/sendMessage' , payload )
92+ // logging for debugging
93+ logger . info (
94+ `Telegram ip success: ${ response . request ?. socket ?. remoteAddress } ` ,
95+ )
9196 $ . setActionItem ( {
9297 raw : response . data ,
9398 } )
Original file line number Diff line number Diff line change 1+ import { TBeforeRequest } from '@plumber/types'
2+
3+ import https from 'https'
4+
5+ // Singleton HTTPS agent configured for IPv4 only
6+ // This helps avoid DNS timeout issues with Telegram's API
7+ const httpsAgent = new https . Agent ( {
8+ family : 4 , // Force IPv4 resolution
9+ keepAlive : true ,
10+ timeout : 30000 , // 30 second timeout
11+ } )
12+
13+ const forceIpv4 : TBeforeRequest = async ( $ , requestConfig ) => {
14+ // Only apply to HTTPS requests (Telegram API uses HTTPS)
15+ if ( requestConfig . baseURL ?. startsWith ( 'https://' ) ) {
16+ requestConfig . httpsAgent = httpsAgent
17+ }
18+
19+ return requestConfig
20+ }
21+
22+ export default forceIpv4
Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ export async function throwSendMessageError(
2626 err . message . includes ( 'ETIMEDOUT' ) ||
2727 err . code === 'ETIMEDOUT'
2828 ) {
29+ logger . error ( `Telegram ip error: ${ err . resolvedIp } ` )
2930 throw new RetriableError ( {
3031 error : 'Timeout error. Telegram may be experiencing issues.' ,
3132 delayInMs : 'default' ,
Original file line number Diff line number Diff line change 44 IGlobalVariable ,
55} from '@plumber/types'
66
7+ import logger from '@/helpers/logger'
8+
79import {
810 HasTelegramChat ,
911 TelegramGetUpdatesResponse ,
@@ -49,9 +51,11 @@ const dynamicData: IDynamicData = {
4951 const chatIdsMap : { name : string ; value : string } [ ] = [ ]
5052 const chatIdsSet = new Set < number > ( )
5153 try {
52- const { data } = await $ . http . get < TelegramGetUpdatesResponse > (
54+ const { data, request } = await $ . http . get < TelegramGetUpdatesResponse > (
5355 getUpdatesApi ,
5456 )
57+ // logging for debugging
58+ logger . info ( `Telegram ip success: ${ request ?. socket ?. remoteAddress } ` )
5559
5660 if ( ! data . result ) {
5761 return {
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ import { IApp } from '@plumber/types'
33import { getGenericAppQueue } from '@/queues/helpers/get-generic-app-queue'
44
55import addAuthHeader from './common/add-auth-header'
6+ import forceIpv4 from './common/force-ipv4'
67import rateLimitHandler from './common/interceptor/rate-limit'
78import actions from './actions'
89import auth from './auth'
@@ -17,7 +18,7 @@ const app: IApp = {
1718 baseUrl : 'https://telegram.org' ,
1819 apiBaseUrl : 'https://api.telegram.org' ,
1920 primaryColor : '2AABEE' ,
20- beforeRequest : [ addAuthHeader ] ,
21+ beforeRequest : [ forceIpv4 , addAuthHeader ] ,
2122 requestErrorHandler : rateLimitHandler ,
2223 dynamicData,
2324 auth,
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import BaseError from './base'
77export default class HttpError extends BaseError {
88 response : AxiosResponse
99 code ?: string
10+ resolvedIp ?: string
1011
1112 constructor ( error : AxiosError ) {
1213 const computedError =
@@ -26,6 +27,9 @@ export default class HttpError extends BaseError {
2627 // Pass code along
2728 this . code = error . code
2829
30+ // add resolved ip for debugging
31+ this . resolvedIp = error . request ?. socket ?. remoteAddress
32+
2933 //
3034 // Only preserve selected headers to avoid storing sensitive data.
3135 //
You can’t perform that action at this time.
0 commit comments