diff --git a/packages/components/nodes/tools/Telegram/Telegram.ts b/packages/components/nodes/tools/Telegram/Telegram.ts new file mode 100644 index 00000000000..351ffd48e16 --- /dev/null +++ b/packages/components/nodes/tools/Telegram/Telegram.ts @@ -0,0 +1,40 @@ +import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses } from '../../../src/utils' +import { TelegramSender } from './core' + +class TelegramBot_Tools implements INode { + label = 'Telegram Bot' + name = 'telegramSender' + version = 1.0 + type = 'Tool' + icon = 'telegram.svg' + category = 'Tools' + author = 'AliAkrami13751@gmail.com' + description = 'Send incoming text to Telegram' + + baseClasses = [this.type, ...getBaseClasses(TelegramSender)] + + inputs: INodeParams[] = [ + { + label: 'Bot Token', + name: 'botToken', + type: 'string', + placeholder: 'e.g. 123456789:ABC-DEF...' + }, + { + label: 'Chat ID', + name: 'chatId', + type: 'string', + placeholder: 'e.g. 123456789' + } + ] + + async init(nodeData: INodeData): Promise { + const token = nodeData.inputs?.botToken as string + const chatId = nodeData.inputs?.chatId as string + + return new TelegramSender(token, chatId) + } +} + +module.exports = { nodeClass: TelegramBot_Tools } diff --git a/packages/components/nodes/tools/Telegram/core.ts b/packages/components/nodes/tools/Telegram/core.ts new file mode 100644 index 00000000000..a81a2fdb11a --- /dev/null +++ b/packages/components/nodes/tools/Telegram/core.ts @@ -0,0 +1,29 @@ +import { Tool } from '@langchain/core/tools' +import TelegramBot from 'node-telegram-bot-api' + +export class TelegramSender extends Tool { + name = 'telegramSender' + description = 'Send text message to a Telegram chat using a bot token and chat ID.' + + constructor( + private token: string, + private chatId: string + ) { + super() + } + + async _call(message: string): Promise { + try { + const bot = new TelegramBot(this.token); + try{ + const MSG = JSON.parse(message) + await bot.sendMessage(this.chatId, MSG.message) + }catch{ + await bot.sendMessage(this.chatId, message) + } + return '✅ Message sent to Telegram.' + } catch (error: any) { + return `❌ Failed to send message: ${error.message}` + } + } +} diff --git a/packages/components/nodes/tools/Telegram/telegram-bot-api.d.ts b/packages/components/nodes/tools/Telegram/telegram-bot-api.d.ts new file mode 100644 index 00000000000..84946ce7d37 --- /dev/null +++ b/packages/components/nodes/tools/Telegram/telegram-bot-api.d.ts @@ -0,0 +1 @@ +declare module 'node-telegram-bot-api'; diff --git a/packages/components/nodes/tools/Telegram/telegram.svg b/packages/components/nodes/tools/Telegram/telegram.svg new file mode 100644 index 00000000000..854bb6a57b7 --- /dev/null +++ b/packages/components/nodes/tools/Telegram/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/package.json b/packages/components/package.json index faf41476eea..5d1b606babb 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -118,6 +118,7 @@ "neo4j-driver": "^5.26.0", "node-fetch": "^2.6.11", "node-html-markdown": "^1.3.0", + "node-telegram-bot-api": "^0.66.0", "notion-to-md": "^3.1.1", "object-hash": "^3.0.0", "ollama": "^0.5.11",