Explorar o código

Merge branch 'master' into better-receonnct

painor %!s(int64=3) %!d(string=hai) anos
pai
achega
7fb77725d1
Modificáronse 5 ficheiros con 35 adicións e 9 borrados
  1. 1 1
      gramjs/Version.ts
  2. 25 3
      gramjs/client/messageParse.ts
  3. 6 2
      gramjs/client/messages.ts
  4. 2 2
      package-lock.json
  5. 1 1
      package.json

+ 1 - 1
gramjs/Version.ts

@@ -1 +1 @@
-export const version = "1.8.14";
+export const version = "1.8.15";

+ 25 - 3
gramjs/client/messageParse.ts

@@ -27,6 +27,7 @@ export interface ParseInterface {
     parse: (message: string) => [string, Api.TypeMessageEntity[]];
     unparse: (text: string, entities: Api.TypeMessageEntity[]) => string;
 }
+
 /** @hidden */
 export async function _replaceWithMention(
     client: TelegramClient,
@@ -45,12 +46,13 @@ export async function _replaceWithMention(
         return false;
     }
 }
+
 /** @hidden */
-export function _parseMessageText(
+export async function _parseMessageText(
     client: TelegramClient,
     message: string,
     parseMode: false | string | ParseInterface
-): [string, Api.TypeMessageEntity[]] {
+): Promise<[string, Api.TypeMessageEntity[]]> {
     if (parseMode == false) {
         return [message, []];
     }
@@ -62,8 +64,28 @@ export function _parseMessageText(
     } else if (typeof parseMode === "string") {
         parseMode = sanitizeParseMode(parseMode);
     }
-    return parseMode.parse(message);
+    const [rawMessage, msgEntities] = parseMode.parse(message);
+    for (let i = msgEntities.length - 1; i >= 0; i--) {
+        const e = msgEntities[i];
+        if (e instanceof Api.MessageEntityTextUrl) {
+            const m = /^@|\+|tg:\/\/user\?id=(\d+)/.exec(e.url);
+            if (m) {
+                const userIdOrUsername = m[1] ? Number(m[1]) : e.url;
+                const isMention = await _replaceWithMention(
+                    client,
+                    msgEntities,
+                    i,
+                    userIdOrUsername
+                );
+                if (!isMention) {
+                    msgEntities.splice(i, 1);
+                }
+            }
+        }
+    }
+    return [rawMessage, msgEntities];
 }
+
 /** @hidden */
 export function _getResponseMessage(
     client: TelegramClient,

+ 6 - 2
gramjs/client/messages.ts

@@ -719,7 +719,7 @@ export async function sendMessage(
         message = message.message;
     } else {
         if (formattingEntities == undefined) {
-            [message, formattingEntities] = _parseMessageText(
+            [message, formattingEntities] = await _parseMessageText(
                 client,
                 message,
                 parseMode
@@ -833,7 +833,11 @@ export async function editMessage(
 ) {
     entity = await client.getInputEntity(entity);
     if (formattingEntities == undefined) {
-        [text, formattingEntities] = _parseMessageText(client, text, parseMode);
+        [text, formattingEntities] = await _parseMessageText(
+            client,
+            text,
+            parseMode
+        );
     }
     const request = new Api.messages.EditMessage({
         peer: entity,

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "telegram",
-  "version": "1.8.14",
+  "version": "1.8.15",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "telegram",
-      "version": "1.8.14",
+      "version": "1.8.15",
       "license": "MIT",
       "dependencies": {
         "@cryptography/aes": "^0.1.1",

+ 1 - 1
package.json

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