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
JavaScript
;
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;