New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@dialogai/telegram-client-dialog

Package Overview
Dependencies
Maintainers
1
Versions
54
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dialogai/telegram-client-dialog - npm Package Compare versions

Comparing version 1.0.5 to 1.0.6

84

index.js

@@ -10,4 +10,6 @@ const { DynamicStructuredTool } = require("@langchain/core/tools");

/*try {
/**
try {
// https://core.telegram.org/bots/api#editmessagereplymarkup
// https://stackoverflow.com/questions/71234183/why-do-i-get-a-400-error-when-im-trying-to-edit-an-inline-keyboard-node-telegr
await ctx.editMessageReplyMarkup({

@@ -41,16 +43,13 @@ inline_keyboard: [

let channel = await Channels.getChannelInfo(username);
if (channel.is_valid) {
dialog.response.post_message = {
text: channel.get_link(),
markup_data: ['Подписаться::tagged_action']
};
if (typeof dialog.storage.channels === 'undefined') dialog.storage.channels = [];
dialog.storage.channels.push(channel.serialize())
}
else return 'Канал или чат с таким именем не найден';
if (!channel.is_valid) return 'Канал или чат с таким именем не найден';
dialog.response.post_message = {
text: channel.get_link(),
markup_data: ['Подписаться::tagged_action']
};
if (typeof dialog.storage.channels === 'undefined') dialog.storage.channels = [];
if (!dialog.storage.channels.some(ch => ch.username === username)) dialog.storage.channels.push(channel.serialize())
return `
Канал/чат "${channel.title}" найден. Нажмите кнопку "Подписаться" в следующем сообщении прямо в этом диалоге.
После подписки вы можете в свободной форме озвучить пожелания по поводу того, как вы хотите воспользоваться этой подпиской.
Вы можете ссылаться на этот канал/чат по его названию.
`
Канал/чат "${channel.title}" найден. Нажмите кнопку "Подписаться" в следующем сообщении прямо в этом диалоге без использования приложения Telegram.
Вы можете настроить получение данных из этого канала/чата, озвучив свои пожелания в свободной форме.
Вы можете ссылаться на этот канал/чат по его названию.`
} catch (e) {

@@ -66,2 +65,48 @@ logger.critical('JOIN TELEGRAM CHANNEL TOOL ERROR :: ', e.message, e?.stack);

*
* @param dialog {Dialog}
* @returns {DynamicStructuredTool}
*/
function get_define_request_tool(dialog) {
if (typeof dialog.storage.channels === 'undefined') dialog.storage.channels = [];
let channels = dialog.storage.channels.map(ch => `- "${ch.title}" (username: ${ch.username})`),
sources = channels.length === 0 ? '' : '\nДоступные каналы и чаты:\n' + channels.join('\n');
return new DynamicStructuredTool({
name: 'define_request_tool',
description: `Используется для уточнения, сохранения и выполнения запроса пользователя на получение данных из каналов и чатов мессенджера Telegram.
Если в запросе пользователя не хватает каких-то данных, не пытайся подставить их сам, уточни у пользователя.`,
schema: z.object({
channels_usernames: z.string().array().default([])
.describe(`Массив имен (username) каналов и чатов мессенджера Telegram, откуда нужно брать данные.
Если пользователь не указал источники, оставь массив пустым.` + sources),
regularity: z.enum(['single_request', 'on_source_updated', 'one_time_a_day'])
.describe(`Регулярность получения данных по пользовательскому запросу:
- единичный запрос пользователя (single_request),
- выполнять запрос по мере получения новых данных из источников (on_source_updated)
- или выполнять запрос один раз в день (one_time_a_day).
Если пользователь не указал эти данные, уточни их у него.`),
user_request: z.string()
.describe(`Текст пользовательского запроса, по которому ведется поиск информации в каналах и чатах.
Если пользователь не сформулировал запрос, или хочет просто получать данные об обновлениях, не заполняй это поле`),
allow_telegraph: z.boolean().default(true)
.describe('Можно ли использовать сервис telegra.ph для отображения результатов чтобы не засорять чат c ассистентом: да (true) или нет (false)')
}),
func: async ({channels_usernames = [], regularity = 'single_request', user_request, allow_telegraph = true}) => {
console.log('DEFINE REQUEST TOOL IS INVOKED :: ', JSON.stringify({channels_usernames, regularity, user_request, allow_telegraph}));
let reg = {
single_request: 'единичный запрос',
on_source_updated: 'выполнять запрос по мере получения новых данных из источников',
one_time_a_day: 'выполнять запрос один раз в день'
},
response = 'Сформирован следующий запрос:\n' + user_request || 'Получать все обновления\n' +
'Регулярность: ' + reg[regularity] + '\n' +
'Разрешить telegra.ph: ' + allow_telegraph + '\n' +
'Источники: ' + channels_usernames.toLocaleString() +
'Справочно: список доступных каналов и чатов:\n' + channels.join('\n');
return response;
}
});
}
/**
*
* @param supervisor {DialogSupervisor}

@@ -92,2 +137,3 @@ * @returns {Dialog}

await dialog.restore();
let { message_id, text } = ctx?.update?.callback_query?.message,

@@ -99,7 +145,5 @@ username = text.slice(text.lastIndexOf('/') + 1);

s.subscription_date = Math.floor(Date.now() / 1000);
console.log('BOT ACTION :: TAGGED ACTION:: CTX :: ', JSON.stringify(dialog.data()));
dialog.store().then(() => console.log('TAGGED ACTION:: DIALOG DATA :: ', JSON.stringify(dialog.data())))
}
let dialog = new Dialog({

@@ -116,2 +160,8 @@ alias: 'Телеграм-аналитик',

});
dialog.callbacks = [
{
on_restore_end: async () => dialog.add_tool(get_define_request_tool(dialog))
}
];
dialog.add_tool(get_join_channel_tool(dialog));

@@ -118,0 +168,0 @@

@@ -6,6 +6,5 @@ {

"name": "@dialogai/telegram-client-dialog",
"version": "1.0.5",
"version": "1.0.6",
"description": "Dialog module for working with telegram chats",
"main": "index.js",
"devDependencies": {},
"scripts": {

@@ -12,0 +11,0 @@ "test": "echo \"Error: no test specified\" && exit 1"

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc