[core] Forward message

fix #158
This commit is contained in:
devlikepro committed 2024-10-16 13:53:10 +07:00
1 parent dbd01abde8
commit 5474f1ec0e
6 files changed
+50 -2

No files matched your search

+9
View File
@@ -8,6 +8,7 @@ import {
GetMessageQuery,
MessageContactVcardRequest,
MessageFileRequest,
MessageForwardRequest,
MessageImageRequest,
MessageLinkPreviewRequest,
MessageLocationRequest,
@@ -81,6 +82,14 @@ export class ChattingController {
return whatsapp.sendVideo(request);
}
@Post('/forwardMessage')
async forwardMessage(
@Body() request: MessageForwardRequest,
): Promise<WAMessage> {
const whatsapp = await this.manager.getWorkingSession(request.session);
return await whatsapp.forwardMessage(request);
}
@Post('/sendSeen')
async sendSeen(@Body() chat: SendSeenRequest) {
const whatsapp = await this.manager.getWorkingSession(chat.session);
+4
View File
@@ -5,6 +5,7 @@ import {
} from '@waha/structures/channels.dto';
import { GetChatsQuery } from '@waha/structures/chats.dto';
import { Label, LabelID } from '@waha/structures/labels.dto';
import { WAMessage } from '@waha/structures/responses.dto';
import { LoggerBuilder } from '@waha/utils/logging';
import { EventEmitter } from 'events';
import * as fs from 'fs';
@@ -18,6 +19,7 @@ import {
GetMessageQuery,
MessageContactVcardRequest,
MessageFileRequest,
MessageForwardRequest,
MessageImageRequest,
MessageLinkPreviewRequest,
MessageLocationRequest,
@@ -279,6 +281,8 @@ export abstract class WhatsappSession {
throw new NotImplementedByEngineError();
}
abstract forwardMessage(request: MessageForwardRequest): Promise<WAMessage>;
abstract sendImage(request: MessageImageRequest);
abstract sendFile(request: MessageFileRequest);
@@ -68,6 +68,7 @@ import {
MessageContactVcardRequest,
MessageDestination,
MessageFileRequest,
MessageForwardRequest,
MessageImageRequest,
MessageLinkPreviewRequest,
MessageLocationRequest,
@@ -669,6 +670,23 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
});
}
async forwardMessage(request: MessageForwardRequest): Promise<WAMessage> {
const key = parseMessageIdSerialized(request.messageId);
const forwardMessage = await this.store.loadMessage(key.remoteJid, key.id);
if (!forwardMessage) {
throw new UnprocessableEntityException(
`Message with id '${request.messageId}' not found`,
);
}
const chatId = toJID(this.ensureSuffix(request.chatId));
const message = {
forward: forwardMessage,
force: true,
};
const result = await this.sock.sendMessage(chatId, message, {});
return this.toWAMessage(result);
}
sendLinkPreview(request: MessageLinkPreviewRequest) {
const text = `${request.title}\n${request.url}`;
const chatId = toJID(this.ensureSuffix(request.chatId));
@@ -26,6 +26,7 @@ import {
EditMessageRequest,
GetMessageQuery,
MessageFileRequest,
MessageForwardRequest,
MessageImageRequest,
MessageLocationRequest,
MessageReactionRequest,
@@ -463,6 +464,15 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
return this.whatsapp.sendMessage(request.chatId, location, options);
}
async forwardMessage(request: MessageForwardRequest): Promise<WAMessage> {
const forwardMessage = this.recreateMessage(request.messageId);
const msg = await forwardMessage.forward(request.chatId);
// Return "sent: true" for now
// need to research how to get the data from WebJS
// @ts-ignore
return { sent: msg || false };
}
async sendSeen(request: SendSeenRequest) {
const chat: Chat = await this.whatsapp.getChatById(request.chatId);
await chat.sendSeen();
+7
View File
@@ -256,6 +256,13 @@ export class MessageLinkPreviewRequest extends ChatRequest {
title: string;
}
export class MessageForwardRequest extends ChatRequest {
@ApiProperty({
example: 'false_11111111111@c.us_AAAAAAAAAAAAAAAAAAAA',
})
messageId: string;
}
export class MessageReactionRequest extends MessageRequest {
@ApiProperty({
description:
+2 -2
View File
@@ -12331,7 +12331,7 @@ __metadata:
"whatsapp-web.js@github:devlikeapro/whatsapp-web.js#fork-main-channels":
version: 1.26.0
resolution: "whatsapp-web.js@https://github.com/devlikeapro/whatsapp-web.js.git#commit=4c4cc9817bac3fc1369f09571f9efd2477ba10a9"
resolution: "whatsapp-web.js@https://github.com/devlikeapro/whatsapp-web.js.git#commit=6a333d0088591269238726e9effa3cbb14c8e7c7"
dependencies:
"@pedroslopez/moduleraid": ^5.0.2
archiver: ^5.3.1
@@ -12349,7 +12349,7 @@ __metadata:
optional: true
unzipper:
optional: true
checksum: ac30714d3e55fe9da1a1cd23db6988e1f060414a2b2c60e9d280938c4e620098da75edf85e54cd24efd976e884f5bc401e96d3cdabe583fae0332258f4d62b4d
checksum: 51e9dce51270cf6fb20acd0bd7368f36763dcc3d28c6c3725c78b46edd5da21fea2c9c1f78ab6699464e4e1a6d9c361b6ab76a88225ebdeeb3f9abdd860d082c
languageName: node
linkType: hard