From 9b525a5c5cc91a8b36df9a0975718a25927f0e89 Mon Sep 17 00:00:00 2001 From: Kurbanov Bulat Date: Sun, 30 Jan 2022 22:39:44 +0300 Subject: [PATCH] Add sending annotation images --- src/bots/factory/bots/approved/index.ts | 13 +++++++++++++ .../factory/bots/approved/services/downloader.ts | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/bots/factory/bots/approved/index.ts b/src/bots/factory/bots/approved/index.ts index a4a07fd..5e27ab0 100644 --- a/src/bots/factory/bots/approved/index.ts +++ b/src/bots/factory/bots/approved/index.ts @@ -17,6 +17,7 @@ import { getCallbackArgs, getPaginatedMessage, getPrefixWithQueryCreator, getSea import { getRandomKeyboard, getTextPaginationData, getUpdateLogKeyboard, getUserAllowedLangsKeyboard } from './keyboard'; import { sendFile } from './hooks/downloading'; import { setCommands } from './hooks/setCommands'; +import { downloadImage } from './services/downloader'; Sentry.init({ @@ -143,6 +144,12 @@ export async function createApprovedBot(token: string, state: BotState): Promise const data = getTextPaginationData(`${CallbackData.BOOK_ANNOTATION_PREFIX}${bookId}`, annotation.text, 0); + if (annotation.file) { + const imageData = await downloadImage(annotation.file); + + if (imageData) await ctx.telegram.sendPhoto(ctx.message.chat.id, {source: imageData}); + } + try { await ctx.reply(data.current, { parse_mode: "HTML", @@ -196,6 +203,12 @@ export async function createApprovedBot(token: string, state: BotState): Promise const data = getTextPaginationData(`${CallbackData.AUTHOR_ANNOTATION_PREFIX}${authorId}`, annotation.text, 0); + if (annotation.file) { + const imageData = await downloadImage(annotation.file); + + if (imageData) await ctx.telegram.sendPhoto(ctx.message.chat.id, {source: imageData}); + } + try { await ctx.reply(data.current, { parse_mode: "HTML", diff --git a/src/bots/factory/bots/approved/services/downloader.ts b/src/bots/factory/bots/approved/services/downloader.ts index 0c1c027..8e0fa1c 100644 --- a/src/bots/factory/bots/approved/services/downloader.ts +++ b/src/bots/factory/bots/approved/services/downloader.ts @@ -21,3 +21,14 @@ export async function download(source_id: number, remote_id: number, file_type: filename: (response.headers['content-disposition'] || '').split('filename=')[1] } } + + +export async function downloadImage(path: string) { + const response = await got(path); + + if (response.statusCode === 200) { + return response.rawBody; + } else { + return null; + } +}