@@ -207,6 +207,7 @@ module.exports = function (RED) {
207
207
}
208
208
209
209
await client . start ( authParams ) ;
210
+ await client . connect ( ) ;
210
211
} else {
211
212
node . warn ( 'No session: login first.' ) ;
212
213
}
@@ -250,27 +251,44 @@ module.exports = function (RED) {
250
251
let node = this ;
251
252
this . bot = config . bot ;
252
253
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 ;
254
257
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 ;
259
267
let msg = {
260
268
payload : {
261
- sender : sender ,
262
- chat : chat ,
263
269
message : message ,
264
- originalUpdate : event . originalUpdate ,
270
+ sender : await message . getSender ( ) ,
271
+ chat : await message . getChat ( ) ,
272
+ event : event ,
265
273
} ,
266
274
} ;
267
275
node . send ( msg ) ;
268
276
} ;
269
277
270
278
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
+ }
274
292
}
275
293
276
294
node . status ( {
@@ -290,8 +308,13 @@ module.exports = function (RED) {
290
308
text : 'connected' ,
291
309
} ) ;
292
310
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
+ }
295
318
}
296
319
} else {
297
320
// no config node?
0 commit comments