UNPKG

n8n-nodes-telegram-mtproto

Version:

Telegram MTPROTO API integration for n8n - Real-time new message listening and automation

119 lines 4.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TelegramApiTrigger = void 0; const n8n_workflow_1 = require("n8n-workflow"); const TelegramConnectionManager_1 = require("./TelegramConnectionManager"); const events_1 = require("telegram/events"); class TelegramApiTrigger { constructor() { this.description = { displayName: 'Telegram MTPROTO API Trigger', name: 'telegramApiTrigger', icon: { light: 'file:TelegramApiTrigger.svg', dark: 'file:TelegramApiTrigger.svg' }, group: ['trigger'], version: 1, description: 'Listens for new messages from Telegram using MTPROTO API', defaults: { name: 'Telegram MTPROTO API Trigger', }, inputs: [], outputs: ["main"], credentials: [ { name: 'telegramMTPROTOApi', required: true, }, ], properties: [], }; } async trigger() { const credentials = (await this.getCredentials('telegramMTPROTOApi')); const connectionManager = TelegramConnectionManager_1.TelegramConnectionManager.getInstance(); let client; try { client = await connectionManager.getClient(credentials); } catch (error) { throw new n8n_workflow_1.ApplicationError(`Failed to connect to Telegram: ${error}. Please ensure your credentials are correct and you have authorized this application.`); } const emit = (data) => { this.emit([this.helpers.returnJsonArray([data])]); }; const handleNewMessage = (event) => { try { const messageData = { message: event.message, }; emit(messageData); } catch (error) { console.error('Error processing new message:', error); } }; let eventHandlerAdded = false; let newMessageEvent = null; if (this.getMode() !== 'manual') { try { newMessageEvent = new events_1.NewMessage({}); client.addEventHandler(handleNewMessage, newMessageEvent); eventHandlerAdded = true; } catch (error) { console.error('Error adding event handler:', error); } } const closeFunction = async () => { try { if (eventHandlerAdded && newMessageEvent) { client.removeEventHandler(handleNewMessage, newMessageEvent); } } catch (error) { console.error('Error removing event handler:', error); } }; const manualTriggerFunction = async () => { return new Promise((resolve, reject) => { const timeoutHandler = setTimeout(() => { try { if (manualEvent) { client.removeEventHandler(manualTestHandler, manualEvent); } } catch (error) { console.error('Error removing manual handler:', error); } reject(new Error('Timeout: No message received within 30 seconds')); }, 30000); const manualTestHandler = async (event) => { try { handleNewMessage(event); clearTimeout(timeoutHandler); try { if (manualEvent) { client.removeEventHandler(manualTestHandler, manualEvent); } } catch (error) { console.error('Error removing manual handler:', error); } resolve(); } catch (error) { clearTimeout(timeoutHandler); reject(error); } }; const manualEvent = new events_1.NewMessage({}); client.addEventHandler(manualTestHandler, manualEvent); }); }; return { closeFunction, manualTriggerFunction, }; } } exports.TelegramApiTrigger = TelegramApiTrigger; //# sourceMappingURL=TelegramApiTrigger.node.js.map