@dialogai/telegram-client-dialog
Advanced tools
Comparing version 1.0.35 to 1.0.36
44
index.js
const { DynamicStructuredTool } = require("@langchain/core/tools"); | ||
const { Dialog } = require("@dialogai/dialog-class"); | ||
const { DialogSupervisor } = require("@dialogai/dialog-supervisor"); | ||
const { Channels, TSubscription, TChannel, ChannelManager } = require("@dieugene/telegram-client"); | ||
const { TChannel, ChannelManager, ChannelRequests, Subscriptions, Queues } = require("@dieugene/telegram-client"); | ||
const logger = require("@dieugene/logger")('TELEGRAM CLIENT DIALOG'); | ||
@@ -45,3 +45,3 @@ const mailer = require('@dieugene/mailer'); | ||
try { | ||
let channel = await Channels.getChannelInfo(username), join_request = channel.join_request; | ||
let channel = await TChannel.getChannelInfo(username), join_request = channel.join_request; | ||
if (!channel.is_valid) return 'Ошибка: Канал или чат с таким именем не найден или Телеграм-клиент не авторизован'; | ||
@@ -92,3 +92,3 @@ if (!channel.username) channel.username = username; | ||
try { | ||
let search_results = await ChannelManager.ask_once(question, undefined, process.env.PINECONE_INDEX); | ||
let search_results = await ChannelRequests.ask_once(question, undefined, process.env.PINECONE_INDEX); | ||
return search_results.map(doc => doc.pageContent).join('\n\n'); | ||
@@ -134,3 +134,3 @@ } | ||
try { | ||
let search_results = await ChannelManager.ask_once(query, number, process.env.PINECONE_INDEX), | ||
let search_results = await ChannelRequests.ask_once(query, number, process.env.PINECONE_INDEX), | ||
post_messages = []; | ||
@@ -200,3 +200,3 @@ search_results.forEach(doc => post_messages.push({ text: to_message_text(doc) })); | ||
try { | ||
/*let search_results = await ChannelManager.ask_all_channels(query, number, process.env.PINECONE_INDEX); | ||
/*let search_results = await ChannelRequests.ask_all_channels(query, number, process.env.PINECONE_INDEX); | ||
for (let i = 0; i < search_results.length; i++) { | ||
@@ -302,3 +302,4 @@ await sendOneChannelResult(search_results[i]); | ||
'Справочно: список доступных каналов и чатов:\n' + channels.join('\n'), | ||
subscription = new TSubscription({ | ||
// todo Спрятать прямую работу с классами | ||
subscription = Subscriptions.create({ | ||
channels_usernames, regularity, user_request, allow_telegraph, | ||
@@ -309,4 +310,3 @@ user_uuid: dialog.get_initial_session_id() | ||
dialog.storage.subscriptions.push(subscription); | ||
ChannelManager.Subscriptions.add(subscription); | ||
await ChannelManager.finalize_session(); | ||
await ChannelManager.DB.finalize_session(); | ||
return response; | ||
@@ -349,3 +349,3 @@ } | ||
if (!_channel) { | ||
_channel = await Channels.getChannelInfo(username, true); | ||
_channel = await TChannel.getChannelInfo(username, true); | ||
dialog.storage.channels.push(_channel); | ||
@@ -359,3 +359,3 @@ } | ||
username = text.slice(text.lastIndexOf('/') + 1), | ||
join_result = await Channels.joinChannel(username); | ||
join_result = await TChannel.joinChannel(username); | ||
if (!join_result) | ||
@@ -371,3 +371,3 @@ return await ctx.editMessageText(I.f.quote('Ошибка! Telegram-клиент не авторизован. Попробуйте повторить операцию позже'), { message_id }); | ||
let [ch, k] = await Promise.all([ | ||
ChannelManager.add_channel(channel, dialog.get_initial_session_id()), | ||
ChannelManager.DB.add(channel, dialog.get_initial_session_id()), | ||
dialog.store() | ||
@@ -382,3 +382,3 @@ ]); | ||
await ctx.reply(`Запущено чтение данных канала "${ch.title}". Это может занять несколько минут. По завершению вам придет уведомление.`); | ||
await ChannelManager.fill_one_channel_with_history(ch, { | ||
await ChannelManager.Content.History.fill_one_channel(ch, { | ||
bot_token: I.findObjectElement(ctx, 'telegram')?.token, | ||
@@ -389,3 +389,3 @@ user_id: I.tg.get.user.id(ctx) | ||
await ChannelManager.finalize_session(); | ||
await ChannelManager.DB.finalize_session(); | ||
return await ctx.editMessageText('Вы подписались на: ' + text, {message_id}); | ||
@@ -399,6 +399,3 @@ } | ||
Ты - аналитик чатов в Телеграм. Ты действуешь в этих чатах от имени пользователя, подписываешься на нужные каналы и чаты, | ||
извлекаешь информацию по запросам, делаешь резюме и сводки из чатов и решаешь прочие похожие задачи. | ||
Текущая дата: ${date()} (в формате YYYY-MM-DD), | ||
используй это для вычисления относительных дат, таких как "сегодня", "вчера", "неделю назад" и так далее.\` | ||
`, | ||
извлекаешь информацию по запросам, делаешь резюме и сводки из чатов и решаешь прочие похожие задачи.`, | ||
tool_name: 'process_telegram_client_requests', | ||
@@ -409,3 +406,12 @@ tool_description: 'Используется когда нужно выполнять операции в мессенджере Telegram: подписываться на нужные каналы и чаты, извлекать информацию, делать резюме и сводки и решать прочие похожие задачи.', | ||
//dialog.callbacks = [{on_restore_end: async () => dialog.add_tool(get_define_request_tool(dialog))}]; | ||
dialog.ignore_starting_message = true; // Игнорировать стартовое пользовательское сообщение в целях онбординга без искажений | ||
dialog.additional_starting_instructions = `Выполни онбординг пользователя. | ||
Сообщи ему, что ты выполняешь следующие запросы: | ||
- Подписаться на канал. Работа ведется только с открытыми каналами (закрытые каналы или чаты пока не задействованы). | ||
- Поиск сообщений на нужную тему по указанным каналам. | ||
Поясни, что перед поиском сообщений нужно подобрать каналы, в которых ведется поиск. | ||
Для подписки на канал нужно прислать сообщение вида: "Подпиши меня на канал <username> (без символа '@')". | ||
Для поиска сообщений нужно прислать сообщение вида: "Пришли мне N сообщений на тему <указать тему>" | ||
Подробная инструкция размещена по ссылке: https://telegra.ph/Telegram-analitik-11-21 | ||
`; | ||
dialog.add_tool(get_join_channel_tool(dialog)); | ||
@@ -422,3 +428,3 @@ dialog.add_tool(get_qa_tool(dialog)); | ||
supervisor.process_tagged_action = process_tagged_action; | ||
supervisor.test_queue_session = ChannelManager.test_queue_session; | ||
supervisor.test_queue_session = Queues.test_session; | ||
} | ||
@@ -425,0 +431,0 @@ /*dialog |
@@ -7,3 +7,3 @@ { | ||
"name": "@dialogai/telegram-client-dialog", | ||
"version": "1.0.35", | ||
"version": "1.0.36", | ||
"description": "Dialog module for working with telegram chats", | ||
@@ -10,0 +10,0 @@ "main": "index.js", |
29584
396