[core] Add GET /messages request

Fix #31
This commit is contained in:
allburov committed 2023-04-26 18:14:08 +07:00
1 parent 4c5c977310
commit 3ead3a0ba3
5 files changed
+56 -5

No files matched your search

+8 -1
View File
@@ -2,7 +2,7 @@ import {Body, Controller, Get, Post, Put, Query} from '@nestjs/common';
import {ApiOperation, ApiSecurity, ApiTags} from "@nestjs/swagger";
import {
ChatRequest,
CheckNumberStatusQuery,
CheckNumberStatusQuery, GetMessageQuery,
MessageContactVcardRequest,
MessageFileRequest,
MessageImageRequest,
@@ -131,4 +131,11 @@ export class ChattingController {
const whatsapp = this.manager.getSession(request.session)
return whatsapp.setReaction(request)
}
@Get('/messages')
@ApiOperation({summary: 'Get messages in a chat'})
getMessages( @Query() query: GetMessageQuery ) {
const whatsapp = this.manager.getSession(query.session)
return whatsapp.getMessages(query)
}
}
+4 -1
View File
@@ -2,7 +2,7 @@ import {WAEvents, WhatsappStatus} from "../../structures/enums.dto";
import {ConsoleLogger} from "@nestjs/common";
import {
ChatRequest,
CheckNumberStatusQuery,
CheckNumberStatusQuery, GetMessageQuery,
MessageContactVcardRequest,
MessageFileRequest,
MessageImageRequest,
@@ -115,8 +115,11 @@ export abstract class WhatsappSession {
abstract stopTyping(chat: ChatRequest)
abstract getMessages(query: GetMessageQuery)
abstract setReaction(request: MessageReactionRequest)
/**
* Contacts methods
*/
+15 -1
View File
@@ -2,7 +2,7 @@ import {WhatsappSession} from "./abc/session.abc";
import {
Button,
ChatRequest,
CheckNumberStatusQuery,
CheckNumberStatusQuery, GetMessageQuery,
MessageContactVcardRequest,
MessageFileRequest,
MessageImageRequest,
@@ -192,6 +192,20 @@ export class WhatsappSessionVenomCore extends WhatsappSession {
return this.whatsapp.stopTyping(chat.chatId)
}
async getMessages(query: GetMessageQuery){
const messages = await this.whatsapp.getAllMessagesInChat(query.chatId, true, false)
// Go over messages, download media, and convert to right format.
const result = []
for (const [count, message] of messages.entries()) {
if (count > query.limit){
// Have enough in the list, stop processing
break
}
result.push(await this.processIncomingMessage(message))
}
return result
}
setReaction(request: MessageReactionRequest) {
throw new NotImplementedByEngineError()
}
+14
View File
@@ -7,6 +7,7 @@ import {WAMessage, WANumberExistResult} from "../structures/responses.dto";
import {
ChatRequest,
CheckNumberStatusQuery,
GetMessageQuery,
MessageContactVcardRequest,
MessageFileRequest,
MessageImageRequest,
@@ -141,6 +142,19 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
await chat.clearState()
}
async getMessages(query: GetMessageQuery) {
const chat: Chat = await this.whatsapp.getChatById(this.ensureSuffix(query.chatId))
const messages = await chat.fetchMessages({
limit: query.limit,
})
// Go over messages, download media, and convert to right format.
const result = []
for (const message of messages) {
result.push(await this.processIncomingMessage(message))
}
return result
}
async setReaction(request: MessageReactionRequest) {
const messageId = this.deserializeId(request.messageId)
console.log(messageId)
+15 -2
View File
@@ -1,4 +1,4 @@
import {IsNotEmpty, IsString} from "class-validator";
import {IsNotEmpty, IsString, IsOptional, IsNumber} from "class-validator";
import {ApiExtraModels, ApiProperty, getSchemaPath} from "@nestjs/swagger";
import {SessionBaseRequest, SessionQuery} from "./base.dto";
@@ -18,6 +18,18 @@ export class MessageTextQuery extends SessionQuery {
text: string
}
export class ChatQuery extends SessionQuery {
@ApiProperty({
example: '11111111111@c.us',
})
chatId: string
}
export class GetMessageQuery extends ChatQuery {
@IsNumber()
limit: number
}
/**
* Requests
@@ -29,7 +41,7 @@ export class ChatRequest extends SessionBaseRequest {
chatId: string
}
export class MessageRequest extends SessionBaseRequest{
export class MessageRequest extends SessionBaseRequest {
@ApiProperty({
example: "false_11111111111@c.us_AAAAAAAAAAAAAAAAAAAA",
})
@@ -186,3 +198,4 @@ export class MessageReactionRequest extends MessageRequest {
})
reaction: string
}