UNPKG

umbot

Version:

Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф

87 lines (86 loc) 3.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getImageInDB = getImageInDB; exports.cardProcessing = cardProcessing; const index_1 = require("../../../index"); const API_1 = require("../API"); const utils_1 = require("../Base/utils"); const constants_1 = require("./constants"); /** * Получение токена, необходимого для отображения картинок в карточке Телеграм * @param controller Контроллер приложения * @param path Путь до картинки * @param caption Заголовок для картинки */ async function getImageInDB(controller, path, caption) { let isCbCalled = false; const result = await (0, utils_1.getImageToken)(path, constants_1.T_TELEGRAM, controller, async (model) => { const api = new API_1.TelegramRequest(controller.appContext); const photo = await api.sendPhoto(controller.userId, path, caption || undefined); isCbCalled = true; if (photo?.ok && photo.result?.photo?.file_id) { model.imageToken = photo.result.photo.file_id; if (await model.save(true)) { return model.imageToken; } } return null; }); if (!isCbCalled && result) { await new API_1.TelegramRequest(controller.appContext).sendPhoto(controller.userId, result, caption || undefined); } return result; } /** * Получает карточку для отображения в Telegram. * @param cardInfo Информация о карточке * @param controller Контроллер приложения * @returns {Promise<ITelegramMedia[]>} Карточка или null */ async function cardProcessing(cardInfo, controller) { let object = null; if (cardInfo.showOne || cardInfo.images.length === 1) { const image = cardInfo.images[0]; try { if (!image.imageToken) { if (image.imageDir) { image.imageToken = await getImageInDB(controller, image.imageDir, index_1.Text.resize(image.desc, 1024)); } } else { await new API_1.TelegramRequest(controller.appContext).sendPhoto(controller.userId, image.imageToken, index_1.Text.resize(image.desc, 1024)); } } catch (e) { // Логируем ошибку, но не прерываем цикл controller.appContext.logError(`Telegram.cardProcessing(): Произошла ошибка при загрузке изображения для Telegram`, { error: e, }); } return object; } else { object = []; for (let i = 0; i < cardInfo.images.length; i++) { const image = cardInfo.images[i]; let field; if (!image.imageToken) { if (image.imageDir) { field = `attach://${image.imageDir}`; } else { continue; } } else { field = image.imageToken; } object.push({ type: 'photo', media: field, caption: index_1.Text.resize(image.desc, 200), }); } } return object; }