diff --git a/src/api/telegram/index.ts b/src/api/telegram/index.ts index c09257f..217fbc1 100644 --- a/src/api/telegram/index.ts +++ b/src/api/telegram/index.ts @@ -5,10 +5,15 @@ import { PostgresDB } from "../../service/db/postgres"; import { Readable } from "stream"; export class TelegramApi { - constructor(private telegram: TelegramService, private db: PostgresDB) {} + constructor( + private telegram: TelegramService, + private db: PostgresDB, + private config: Record + ) {} public listen() { this.telegram.bot.command("ping", TelegramApi.ping); + this.telegram.bot.command("config", this.dumpConfig); this.telegram.bot.command("pop", this.pop); return; } @@ -46,6 +51,25 @@ export class TelegramApi { return next(); }; + /** + * Pops last recorded request from vk + */ + private dumpConfig = async (ctx, next) => { + const username = ctx?.update?.message?.from?.username; + + if (!username || !this.telegram.isOwner(`@${username}`)) { + return; + } + + const source = JSON.stringify(this.config, null, 2); + await ctx.replyWithDocument({ + source: Readable.from(source), + filename: `config.txt`, + }); + + return next(); + }; + /** * Probes webhook url and falls back to polling mode on error */ diff --git a/src/index.ts b/src/index.ts index aabf478..10cf4c8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,7 +16,7 @@ async function main() { const telegram = new TelegramService(config.telegram); const vkService = new VkService(config.vk, telegram, config.templates, db); - const telegramApi = new TelegramApi(telegram, db); + const telegramApi = new TelegramApi(telegram, db, config); telegramApi.listen(); await telegram.start();