* wip telegram bot connector * encrypt bot token, reorg telegram bot modules, secure pairing codes * offload telegram chat to background worker, add @agent support with chart png rendering, reconnect ui * refactor telegram bot settings page into subcomponents * response.locals for mum, telemetry for connecting to telegram * simplify telegram command registration * improve telegram bot ux: rework switch/history/resume commands * add voice, photo, and TTS support to telegram bot with long message handling * lint * rename external_connectors to external_communication_connectors, add voice response mode, persist chat workspace/thread selection * lint * fix telegram bot connect/disconnect bugs, kill telegram bot on multiuser mode enable * add english translations * fix qr code in light mode * repatch migration * WIP checkpoint * pipeline overhaul for using response obj * format functions * fix comment block * remove conditional dumpENV + lint * remove .end() from sendStatus calls * patch broken streaming where streaming only first chunk * refactor * use Ephemeral handler now * show metrics and citations in real GUI * bugfixes * prevent MuM persistence, UI cleanup, styling for status * add new workspace flow in UI Add thread chat count fix 69 byte payload callback limit bug * handle pagination for workspaces, threads, and models * modularize commands and navigation * add /proof support for citation recall * handle backlog message spam * support abort of response streams * code cleanup * spam prevention * fix translations, update voice typing indicator, fix token bug * frontend refactor, update tips on /status and voice response improvements * collapse agent though blocks * support images * Fix mime issues with audio from other devices * fix config issue post server stop * persist image on agentic chats * 5189 i18n (#5245) * i18n translations connect #5189 * prune translations * fix errors * fix translation gaps --------- Co-authored-by: Timothy Carambat <rambat1010@gmail.com>
65 lines
1.7 KiB
JavaScript
65 lines
1.7 KiB
JavaScript
// Suppress deprecated content-type warning when sending files via the Telegram bot API.
|
|
// https://github.com/yagop/node-telegram-bot-api/blob/master/doc/usage.md#file-options-metadata
|
|
process.env.NTBA_FIX_350 = 1;
|
|
const TelegramBot = require("node-telegram-bot-api");
|
|
const { log, conclude } = require("./helpers/index.js");
|
|
const { Workspace } = require("../models/workspace");
|
|
const { WorkspaceThread } = require("../models/workspaceThread");
|
|
const { streamResponse } = require("../utils/telegramBot/chat/stream");
|
|
|
|
process.on("message", async (payload) => {
|
|
const {
|
|
botToken,
|
|
chatId,
|
|
workspaceSlug,
|
|
threadSlug,
|
|
message,
|
|
attachments = [],
|
|
voiceResponse = false,
|
|
} = payload;
|
|
|
|
try {
|
|
const bot = new TelegramBot(botToken, { polling: false });
|
|
const ctx = {
|
|
bot,
|
|
log: (text, ...args) =>
|
|
log(args.length ? `${text} ${args.join(" ")}` : text),
|
|
};
|
|
|
|
const workspace = await Workspace.get({ slug: workspaceSlug });
|
|
if (!workspace) {
|
|
await bot.sendMessage(
|
|
chatId,
|
|
"No workspace configured. Use /switch to select one."
|
|
);
|
|
conclude();
|
|
return;
|
|
}
|
|
|
|
const thread = threadSlug
|
|
? await WorkspaceThread.get({ slug: threadSlug })
|
|
: null;
|
|
|
|
await streamResponse({
|
|
ctx,
|
|
chatId,
|
|
workspace,
|
|
thread,
|
|
message,
|
|
attachments,
|
|
voiceResponse,
|
|
});
|
|
} catch (error) {
|
|
log(`Telegram chat error: ${error.message}`);
|
|
try {
|
|
const bot = new TelegramBot(botToken, { polling: false });
|
|
await bot.sendMessage(
|
|
chatId,
|
|
"Sorry, something went wrong. Please try again."
|
|
);
|
|
} catch {}
|
|
} finally {
|
|
conclude();
|
|
}
|
|
});
|