@@ -207,6 +207,7 @@ module.exports = function (RED) {
207207 }
208208
209209 await client . start ( authParams ) ;
210+ await client . connect ( ) ;
210211 } else {
211212 node . warn ( 'No session: login first.' ) ;
212213 }
@@ -250,27 +251,44 @@ module.exports = function (RED) {
250251 let node = this ;
251252 this . bot = config . bot ;
252253 this . config = RED . nodes . getNode ( this . bot ) ;
253- this . eventHandlerAdded = false ;
254+ this . sendRawEvents = config . sendrawevents || false ;
255+ this . rawEventHandlerAdded = false ;
256+ this . newMessageEventHandlerAdded = false ;
254257
255- const eventHandler = async function ( event ) {
256- const message = event . message ;
257- const sender = await message . getSender ( ) ;
258- const chat = await message . getChat ( ) ;
258+ this . rawEventHandler = async ( event ) => {
259+ let msg = {
260+ payload : event ,
261+ } ;
262+ node . send ( msg ) ;
263+ } ;
264+
265+ this . newMessageEventHandler = async ( event ) => {
266+ let message = event . message ;
259267 let msg = {
260268 payload : {
261- sender : sender ,
262- chat : chat ,
263269 message : message ,
264- originalUpdate : event . originalUpdate ,
270+ sender : await message . getSender ( ) ,
271+ chat : await message . getChat ( ) ,
272+ event : event ,
265273 } ,
266274 } ;
267275 node . send ( msg ) ;
268276 } ;
269277
270278 this . stop = async ( ) => {
271- if ( node . eventHandlerAdded ) {
272- client . removeEventHandler ( eventHandler , new NewMessage ( { } ) ) ;
273- node . eventHandlerAdded = false ;
279+ if ( node . config ) {
280+ let client = await node . config . getTelegramClient ( node ) ;
281+ if ( client ) {
282+ if ( node . rawEventHandlerAdded ) {
283+ client . removeEventHandler ( node . rawEventHandler ) ;
284+ node . rawEventHandlerAdded = false ;
285+ }
286+
287+ if ( node . newMessageEventHandlerAdded ) {
288+ client . removeEventHandler ( node . newMessageEventHandler , new NewMessage ( { } ) ) ;
289+ node . newMessageEventHandlerAdded = false ;
290+ }
291+ }
274292 }
275293
276294 node . status ( {
@@ -290,8 +308,13 @@ module.exports = function (RED) {
290308 text : 'connected' ,
291309 } ) ;
292310
293- client . addEventHandler ( eventHandler , new NewMessage ( { } ) ) ;
294- node . eventHandlerAdded = true ;
311+ if ( node . sendRawEvents ) {
312+ client . addEventHandler ( node . rawEventHandler ) ;
313+ node . rawEventHandlerAdded = true ;
314+ } else {
315+ client . addEventHandler ( node . newMessageEventHandler , new NewMessage ( { } ) ) ;
316+ node . newMessageEventHandlerAdded = true ;
317+ }
295318 }
296319 } else {
297320 // no config node?
0 commit comments