From 7cde09c89570bedadf96a48f1e0a26ce4f3fe004 Mon Sep 17 00:00:00 2001 From: Gnedov Pavel Date: Tue, 7 Feb 2023 08:28:23 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20telegram?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/telegram-bot/telegram-bot.service.ts | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/telegram-bot/telegram-bot.service.ts b/src/telegram-bot/telegram-bot.service.ts index 5f80b07..2254fa3 100644 --- a/src/telegram-bot/telegram-bot.service.ts +++ b/src/telegram-bot/telegram-bot.service.ts @@ -30,14 +30,19 @@ export class TelegramBotService { this.telegramBotToken = this.configService.get('telegramBotToken'); this.redminePublicUrlPrefix = this.configService.get('redmineUrlPublic'); - this.initTelegramBot(); + this.initTelegramBot().catch((ex) => { + this.logger.error(`Error at init telegram bot - ${ex}`); + }); this.handlers.push(this.currentIssuesBotHandlerService); this.handlers.push(this.setDailyEccmUserCommentBotHandlerService); } private async initTelegramBot(): Promise { const Telegram = await require('node-telegram-bot-api'); + if (!this.telegramBotToken) return; + this.logger.debug('Telegram bot instance creation ... '); this.bot = new Telegram(this.telegramBotToken, { polling: true }); + this.logger.debug('Telegram bot instance created'); this.bot.onText(/\/start/, async (msg) => { await this.showHelpMessage(msg); }); @@ -50,6 +55,12 @@ export class TelegramBotService { this.bot.onText(/\/leave/, async (msg) => { await this.leave(msg); }); + this.bot.on('polling_error', (error) => { + this.logger.error(`polling_error from telegram bot instance - ${error}`); + }); + this.bot.on('webhook_error', (error) => { + this.logger.error(`webhook_error from telegram bot instance - ${error}`); + }); for (let i = 0; i < this.handlers.length; i++) { const handler = this.handlers[i]; await handler.init(this, this.bot); @@ -57,6 +68,7 @@ export class TelegramBotService { } private async showHelpMessage(msg: TelegramBot.Message): Promise { + if (!this.telegramBotToken) return; const userMetaInfo = await this.userMetaInfoService.findByTelegramId( msg.chat.id, ); @@ -81,7 +93,11 @@ export class TelegramBotService { `Sent help message for telegramChatId = ${msg.chat.id}, ` + `message = ${helpMessage}`, ); - this.bot.sendMessage(msg.chat.id, helpMessage); + try { + this.bot.sendMessage(msg.chat.id, helpMessage); + } catch (ex) { + this.logger.error(`Error at send help message - ${ex?.message}`); + } } async sendMessageByRedmineId( @@ -89,6 +105,7 @@ export class TelegramBotService { msg: string, options?: TelegramBot.SendMessageOptions, ): Promise { + if (!this.telegramBotToken) return false; const userMetaInfo = await this.userMetaInfoService.findByRedmineId( redmineId, ); @@ -110,6 +127,7 @@ export class TelegramBotService { msg: string, options?: TelegramBot.SendMessageOptions, ): Promise { + if (!this.telegramBotToken) return false; const user = await this.usersService.findUserByName(firstname, lastname); if (!user) return false; return await this.sendMessageByRedmineId(user.id, msg, options);