浏览代码

addEventHandler now defaults to Raw

Chris Watson 5 年之前
父节点
当前提交
241c48424d
共有 3 个文件被更改,包括 34 次插入14 次删除
  1. 18 4
      gramjs/client/TelegramClient.js
  2. 4 0
      gramjs/events/NewMessage.js
  3. 12 10
      gramjs/events/Raw.js

+ 18 - 4
gramjs/client/TelegramClient.js

@@ -3,7 +3,7 @@ const { sleep } = require('../Helpers')
 const errors = require('../errors')
 const MemorySession = require('../sessions/Memory')
 const { addKey } = require('../crypto/RSA')
-const { TLRequest } = require('../tl/tlobject')
+const { TLObject, TLRequest } = require('../tl/tlobject')
 const utils = require('../Utils')
 const Session = require('../sessions/Abstract')
 const SQLiteSession = require('../sessions/SQLiteSession')
@@ -16,6 +16,7 @@ const MTProtoSender = require('../network/MTProtoSender')
 const Helpers = require('../Helpers')
 const { ConnectionTCPObfuscated } = require('../network/connection/TCPObfuscated')
 const { BinaryWriter } = require('../extensions')
+const events = require('../events')
 const DEFAULT_DC_ID = 4
 const DEFAULT_IPV4_IP = '149.154.167.51'
 const DEFAULT_IPV6_IP = '[2001:67c:4e8:f002::a]'
@@ -158,7 +159,6 @@ class TelegramClient {
     async _updateLoop() {
         while (this.isConnected()) {
             const rnd = Helpers.getRandomInt(Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER)
-            this._log.debug('rnd is', rnd)
             await Helpers.sleep(1000 * 60)
             // We don't care about the result we just want to send it every
             // 60 seconds so telegram doesn't stop the connection
@@ -561,8 +561,22 @@ class TelegramClient {
     }
 
 
-    // event region
-    addEventHandler(event, callback) {
+    /**
+     * Adds an event handler, allowing the specified callback to be
+     * called when a matching event (or events) is received.
+     */
+    addEventHandler(callback, event = null) {
+        if (Array.isArray(event)) {
+            event.forEach((e) => this.addEventHandler(callback, e))
+            return
+        }
+
+        if (!event) {
+            event = new events.Raw()
+        } else if (event.prototype instanceof TLObject) {
+            event = new events.Raw(event)
+        }
+
         this._eventBuilders.push([event, callback])
     }
 

+ 4 - 0
gramjs/events/NewMessage.js

@@ -1,6 +1,10 @@
 const { EventBuilder, EventCommon } = require('./common')
 const { types } = require('../tl')
 
+/**
+ * This event occurs whenever a new text message, or a message
+ * with media is received.
+ */
 class NewMessage extends EventBuilder {
     constructor({
         outgoing = true,

+ 12 - 10
gramjs/events/Raw.js

@@ -1,20 +1,22 @@
 const { EventBuilder } = require('./common')
 
 class Raw extends EventBuilder {
-    constructor(args = {
-        types: null,
-        func: null,
-    }) {
+    constructor({
+        types = [],
+    } = {}) {
         super()
-        if (!args.types) {
-            this.types = true
-        } else {
-            this.types = args.types
-        }
+        
+        this.types = Array.isArray(types) ? types : [types]
     }
 
     build(update, others = null) {
-        return update
+        if (this.types.length < 1) return update
+        
+        for (const _type of this.types) {
+            if (update instanceof _type) {
+                return update
+            }
+        }
     }
 }