Преглед на файлове

Fix pattern match and incorrect caching

painor преди 4 години
родител
ревизия
7ad0819e78
променени са 4 файла, в които са добавени 22 реда и са изтрити 13 реда
  1. 10 3
      gramjs/client/messages.ts
  2. 7 6
      gramjs/events/NewMessage.ts
  3. 4 3
      gramjs/events/common.ts
  4. 1 1
      package.json

+ 10 - 3
gramjs/client/messages.ts

@@ -2,7 +2,7 @@ import {Api} from "../tl";
 import type {Message} from '../tl/custom/message';
 import type {DateLike, EntityLike, FileLike, MarkupLike, MessageIDLike, MessageLike} from "../define";
 import {RequestIter} from "../requestIter";
-import {_EntityType, _entityType, TotalList,isArrayLike} from "../Helpers";
+import {_EntityType, _entityType, TotalList, isArrayLike} from "../Helpers";
 import {getMessageId, getPeerId} from "../Utils";
 import type {TelegramClient} from "../";
 import {utils} from "../";
@@ -197,7 +197,12 @@ export class _MessagesIter extends RequestIter {
                 return true;
             }
             this.lastId = message.id;
-            message._finishInit(this.client, entities, this.entity);
+            try {
+                // if this fails it shouldn't be a big problem
+                message._finishInit(this.client, entities, this.entity);
+            } catch (e) {
+
+            }
             this.buffer?.push(message);
         }
         if (r.messages.length < this.request.limit) {
@@ -225,12 +230,13 @@ export class _MessagesIter extends RequestIter {
         }
         return true;
     }
+
     [Symbol.asyncIterator](): AsyncIterator<Message, any, undefined> {
         return super[Symbol.asyncIterator]();
     }
 
     _updateOffset(lastMessage: Message, response: any) {
-        if (!this.request){
+        if (!this.request) {
             throw new Error("Request not set yet");
         }
         this.request.offsetId = Number(lastMessage.id);
@@ -273,6 +279,7 @@ export class _IDsIter extends RequestIter {
             this.waitTile = this.limit > 300 ? 10 : 0;
         }
     }
+
     [Symbol.asyncIterator](): AsyncIterator<Message, any, undefined> {
         return super[Symbol.asyncIterator]();
     }

+ 7 - 6
gramjs/events/NewMessage.ts

@@ -96,26 +96,27 @@ export class NewMessage extends EventBuilder {
         }
     }
 
-    filter(event: Message): any {
+    filter(event: NewMessageEvent): any {
         if (this._noCheck) {
             return event;
         }
-        if (this.incoming && event.out) {
+        if (this.incoming && event.message.out) {
             return
         }
-        if (this.outgoing && !event.out) {
+        if (this.outgoing && !event.message.out) {
             return;
         }
         if (this.forwards != undefined) {
-            if (this.forwards != !!event.fwdFrom) {
+            if (this.forwards != !!event.message.fwdFrom) {
+                return;
             }
         }
         if (this.pattern) {
-            const match = event.message.match(this.pattern);
+            const match = event.message.message.match(this.pattern);
             if (!match) {
                 return
             }
-            event.patternMatch = match;
+            event.message.patternMatch = match;
         }
         return super.filter(event);
     }

+ 4 - 3
gramjs/events/common.ts

@@ -1,6 +1,6 @@
 import {Api} from "../tl";
 import type {EntityLike} from "../define";
-import {ChatGetter} from "../tl/custom/chatGetter";
+import {ChatGetter} from "../tl/custom";
 import type {TelegramClient} from "../client/TelegramClient";
 
 import bigInt from "big-integer";
@@ -82,7 +82,7 @@ export class EventBuilder {
         this.chats = await _intoIdSet(client, this.chats);
     }
 
-    filter(event: any) {
+    filter(event: any): undefined | EventBuilder {
         if (!this.resolved) {
             return
         }
@@ -91,10 +91,11 @@ export class EventBuilder {
             if (inside == this.blacklistChats) {
                 // If this chat matches but it's a blacklist ignore.
                 // If it doesn't match but it's a whitelist ignore.
-                return undefined;
+                return;
 
             }
         }
+        return event;
     }
 }
 

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "telegram",
-  "version": "1.5.7",
+  "version": "1.5.9",
   "description": "NodeJS MTProto API Telegram client library,",
   "main": "index.js",
   "types": "index.d.ts",