UNPKG

stalkee

Version:

a Telegram bot who can send voice messages via inline mode added by admin with sorting them by numbers of uses

66 lines (65 loc) 2.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.App = void 0; const typeorm_1 = require("typeorm"); const bot_1 = require("./bot"); const utils_1 = require("./utils"); const logger_1 = require("./database/logger"); const models_1 = require("./models"); class App { constructor() { this.bot = new bot_1.Bot(utils_1.config.bot.token); this.dbLogger = new logger_1.DBLogger(); this.db = new typeorm_1.DataSource({ type: 'postgres', url: utils_1.config.db.uri, synchronize: true, logger: this.dbLogger, entities: [models_1.User, models_1.Audio, models_1.Word, models_1.ActorAlias, models_1.LocationAlias] }); } async start() { try { await this.db.initialize(); utils_1.logger.info('connected to database.', 'process.start'); await this.bot.start(utils_1.config.bot.options); const botInfo = await this.bot.getMe(); this.username = botInfo.username; utils_1.logger.info(`@${this.username} started.`, 'process.start'); } catch (err) { utils_1.logger.fatal(err, 'process.start'); process.exit(1); } } async stop() { utils_1.logger.info(`stop @${this.username}...`, 'process.stop'); await this.bot.stop(); await this.db.destroy(); process.exit(0); } async reload() { try { utils_1.logger.info(`reload @${this.username}...`, 'process.reload'); await this.bot.reload(); utils_1.logger.info(`@${this.username} reloaded.`, 'process.reload'); } catch (err) { utils_1.logger.error(err, 'process.reload'); } } async setMode(mode) { try { if (!mode) { utils_1.logger.error('mode is empty!', 'process.mode'); return; } await this.bot.setMode(mode); utils_1.logger.info(`set mode of bot @${this.username} to '${mode}'.`, 'process.mode'); } catch (err) { utils_1.logger.error(err, 'process.mode'); } } } exports.App = App;