Parcourir la source

add editMessage to the helper methods

painor il y a 4 ans
Parent
commit
ab63b0fef8
3 fichiers modifiés avec 53 ajouts et 1 suppressions
  1. 3 0
      gramjs/client/TelegramClient.ts
  2. 49 0
      gramjs/client/messages.ts
  3. 1 1
      package.json

+ 3 - 0
gramjs/client/TelegramClient.ts

@@ -153,6 +153,9 @@ export class TelegramClient extends TelegramBaseClient {
         return messageMethods.sendMessage(this, entity, params)
     }
 
+    editMessage(entity: EntityLike, params: messageMethods.EditMessageParams) {
+        return messageMethods.editMessage(this, entity, params)
+    }
     //endregion
 
     //region chats

+ 49 - 0
gramjs/client/messages.ts

@@ -365,6 +365,18 @@ export interface SendMessageParams {
     schedule?: DateLike;
 }
 
+export interface EditMessageParams {
+    message: Api.Message | number;
+    text: string;
+    parseMode?: any;
+    formattingEntities?: Api.TypeMessageEntity[];
+    linkPreview?: boolean;
+    file?: FileLike | FileLike[];
+    forceDocument?: false;
+    buttons?: MarkupLike;
+    schedule?: DateLike;
+}
+
 //  MessageMethods {
 
 export function iterMessages(client: TelegramClient, entity: EntityLike, {limit, offsetDate, offsetId, maxId, minId, addOffset, search, filter, fromUser, waitTime, ids, reverse = false, replyTo}: IterMessagesParams) {
@@ -498,4 +510,41 @@ export async function sendMessage(client: TelegramClient,
     //return client._getResponseMessage(request, result, entity);
 }
 
+/**
+ * Used to edit a message by changing it's text or media
+ * message refers to the message to be edited not what to edit
+ * text refers to the new text
+ */
+export async function editMessage(client: TelegramClient,
+                                  entity: EntityLike,
+                                  {
+                                      message,
+                                      text,
+                                      parseMode,
+                                      formattingEntities,
+                                      linkPreview = true,
+                                      file,
+                                      forceDocument,
+                                      buttons,
+                                      schedule
+                                  }: EditMessageParams) {
+
+    entity = await client.getInputEntity(entity);
+    if (formattingEntities == undefined) {
+        [text, formattingEntities] = await client._parseMessageText(text, parseMode);
+    }
+    const msg = await client.invoke(new Api.messages.EditMessage({
+        peer:entity,
+        id:utils.getMessageId(message),
+        message:text,
+        noWebpage:!linkPreview,
+        entities:formattingEntities,
+        //media: no media for now,
+        replyMarkup:client.buildReplyMarkup(buttons),
+        scheduleDate:schedule,
+    }));
+    return msg;
+    //return client._getResponseMessage(request, result, entity);
+}
+
 // TODO do the rest

+ 1 - 1
package.json

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