process.env.NTBA_FIX_319 = 1 as any // prevent telegram lib promise error log shall be before the lib import import TelegramBot from 'node-telegram-bot-api' import { GreenDotAppConfig } from '../types/appConfig.types.js' import { getActiveAppConfig } from '../helpers/getGreenDotConfigs.js' import { capitalize1st } from 'topkat-utils' let telegramBot let sendOnErrorCodeGlob: GreenDotAppConfig['alerts']['telegram']['sendOnErrorCode'] let errorChatId: GreenDotAppConfig['alerts']['telegram']['chatId'] let appNameGlob: string export async function initTelegramBot() { const { alerts, name } = await getActiveAppConfig(true) || {} if (alerts && alerts.telegram && alerts.telegram.enable) { const { botId, chatId, sendOnErrorCode } = alerts.telegram telegramBot = new TelegramBot(botId) errorChatId = chatId appNameGlob = name sendOnErrorCodeGlob = sendOnErrorCode || (code => code === 500) } } export async function sendErrorViaTelegram(code, msg: string, extraInfos: string) { if (errorChatId && sendOnErrorCodeGlob(code)) { await telegramBot.sendMessage( errorChatId, `${capitalize1st(appNameGlob)} App => error ${code}: ${msg}\n${extraInfos .replace(/.*\n/, '') // first line // eslint-disable-next-line no-control-regex .replace(/\u001b\[[012345]m/g, '') // removecli code coloration }`, { parse_mode: 'HTML' } ) } }