Compare commits

..
26 Commits
Author SHA1 Message Date
devlikepro aa364b57e8 [core] up NOWEB
Release / amd64 - chrome - chrome (push) Waiting to run
Release / amd64 - chromium - latest (push) Waiting to run
Release / linux/arm64 - chromium - arm (push) Waiting to run
Release / amd64 - none - noweb (push) Waiting to run
Release / linux/arm64 - none - noweb-arm (push) Waiting to run
2024-09-04 10:53:01 +07:00
devlikepro ea973d0de4 [core] up NOWEB 2024-09-04 10:36:14 +07:00
devlikepro 1a1b64cbb2 [core] 2024.9.3 2024-09-04 10:14:24 +07:00
devlikepro 09c7e11dbc [core] up NOWEB - end() issues 2024-09-04 10:14:12 +07:00
devlikepro 3450a56756 [core] swagger participants 2024-09-03 19:30:01 +07:00
devlikepro f37f4466ae [core] swagger noweb store 2024-09-03 19:23:37 +07:00
devlikepro 451834b219 [core] swagger caption not required 2024-09-03 19:13:27 +07:00
devlikepro 91924353e2 [core] swagger caption not required 2024-09-03 19:13:21 +07:00
devlikepro 67cf94fc95 [core] swagger version 2024-09-03 18:44:38 +07:00
devlikepro 36a343c09f [core] swagger status 2024-09-03 18:43:52 +07:00
devlikepro 4a37aebbf1 [core] swagger server 2024-09-03 18:41:25 +07:00
devlikepro d5fa9f8d72 [core] swagger presence 2024-09-03 18:40:48 +07:00
devlikepro 08c244334b [core] swagger ping 2024-09-03 18:38:17 +07:00
devlikepro 23dd1c2726 [core] swagger labels 2024-09-03 18:37:59 +07:00
devlikepro 23a309d394 [core] swagger health 2024-09-03 18:37:05 +07:00
devlikepro 3c1bb4e145 [core] swagger groups 2024-09-03 18:36:47 +07:00
devlikepro 87b320a3e3 [core] swagger contacts 2024-09-03 18:29:03 +07:00
devlikepro e4fb9615c7 [core] swagger chatting 2024-09-03 18:26:50 +07:00
devlikepro efad4de0af [core] swagger chats 2024-09-03 18:20:33 +07:00
devlikepro 04f62700a2 [core] swagger auth channels fixes 2024-09-03 18:16:52 +07:00
devlikepro 08415f7931 [core] no code 2024-09-03 18:12:42 +07:00
devlikepro 8bc86af3c8 [core] fix swagger 2024-09-01 19:46:18 +07:00
devlikepro fa2c5e42dc [core] fix swagger 2024-09-01 19:43:23 +07:00
devlikepro e3d3952b81 [core] fix participant cus in reply 2024-08-30 21:32:27 +07:00
devlikepro a9171addde [core] 2024.9.2
Release / amd64 - chrome - chrome (push) Waiting to run
Release / amd64 - chromium - latest (push) Waiting to run
Release / linux/arm64 - chromium - arm (push) Waiting to run
Release / amd64 - none - noweb (push) Waiting to run
Release / linux/arm64 - none - noweb-arm (push) Waiting to run
2024-08-29 09:14:16 +07:00
devlikepro 440ac087ad [core] Cannot read properties of null (reading 'conversation')
fix #521
2024-08-29 09:14:16 +07:00
26 changed files with 196 additions and 118 deletions

No files matched your search

+1 -1
View File
@@ -36,7 +36,7 @@ class AuthController {
@Get('qr')
@ApiOperation({
summary: 'Get QR code for pairing WhatsApp Web.',
summary: 'Get QR code for pairing WhatsApp API.',
})
@SessionApiParam
@ApiFileAcceptHeader(Base64File, QRCodeValue)
+4 -1
View File
@@ -61,7 +61,10 @@ export class ChannelsController {
@SessionApiParam
@NewsletterIdOrInviteCodeApiParam
@ApiOperation({
summary: 'Get the channel info - either by id @newsletter OR invite code.',
summary: 'Get the channel info',
description:
'You can use either id (123@newsletter) ' +
'OR invite code (https://www.whatsapp.com/channel/123)',
})
get(
@SessionParam session: WhatsappSession,
+3
View File
@@ -44,6 +44,7 @@ class ChatsController {
@Delete(':chatId')
@SessionApiParam
@ApiOperation({ summary: 'Deletes the chat' })
@ChatIdApiParam
deleteChat(
@SessionParam session: WhatsappSession,
@Param('chatId') chatId: string,
@@ -54,6 +55,7 @@ class ChatsController {
@Get(':chatId/messages')
@SessionApiParam
@ApiOperation({ summary: 'Gets messages in the chat' })
@ChatIdApiParam
getChatMessages(
@Query() query: GetChatMessagesQuery,
@SessionParam session: WhatsappSession,
@@ -66,6 +68,7 @@ class ChatsController {
@Delete(':chatId/messages')
@SessionApiParam
@ApiOperation({ summary: 'Clears all messages from the chat' })
@ChatIdApiParam
clearMessages(
@SessionParam session: WhatsappSession,
@Param('chatId') chatId: string,
+53 -44
View File
@@ -30,21 +30,6 @@ import { WAMessage } from '../structures/responses.dto';
export class ChattingController {
constructor(private manager: SessionManager) {}
@Get('/checkNumberStatus')
@ApiOperation({ summary: 'Check number status' })
async checkNumberStatus(
@Query() request: CheckNumberStatusQuery,
): Promise<WANumberExistResult> {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.checkNumberStatus(request);
}
@Post('/sendContactVcard')
sendContactVcard(@Body() request: MessageContactVcardRequest) {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.sendContactVCard(request);
}
@Post('/sendText')
@ApiOperation({ summary: 'Send a text message' })
sendText(@Body() request: MessageTextRequest): Promise<WAMessage> {
@@ -52,31 +37,11 @@ export class ChattingController {
return whatsapp.sendText(request);
}
@Post('/sendPoll')
@ApiOperation({
summary: 'Send a poll with options. You can use it as buttons replace',
})
sendPoll(@Body() request: MessagePollRequest) {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.sendPoll(request);
}
@Post('/sendLocation')
sendLocation(@Body() request: MessageLocationRequest) {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.sendLocation(request);
}
@Post('/sendLinkPreview')
sendLinkPreview(@Body() request: MessageLinkPreviewRequest) {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.sendLinkPreview(request);
}
@Post('/sendImage')
@ApiOperation({
summary:
'Send an image. Either from an URL or base64 data - look at the request schemas for details.',
summary: 'Send an image',
description:
'Either from an URL or base64 data - look at the request schemas for details.',
})
sendImage(@Body() request: MessageImageRequest) {
const whatsapp = this.manager.getSession(request.session);
@@ -85,8 +50,9 @@ export class ChattingController {
@Post('/sendFile')
@ApiOperation({
summary:
'Send a file. Either from an URL or base64 data - look at the request schemas for details.',
summary: 'Send a file',
description:
'Either from an URL or base64 data - look at the request schemas for details.',
})
sendFile(@Body() request: MessageFileRequest) {
const whatsapp = this.manager.getSession(request.session);
@@ -95,8 +61,9 @@ export class ChattingController {
@Post('/sendVoice')
@ApiOperation({
summary:
'Send an voice message. Either from an URL or base64 data - look at the request schemas for details.',
summary: 'Send an voice message',
description:
'Either from an URL or base64 data - look at the request schemas for details.',
})
sendVoice(@Body() request: MessageVoiceRequest) {
const whatsapp = this.manager.getSession(request.session);
@@ -105,8 +72,9 @@ export class ChattingController {
@Post('/sendVideo')
@ApiOperation({
summary:
'Send a video. Either from an URL or base64 data - look at the request schemas for details.',
summary: 'Send a video',
description:
'Either from an URL or base64 data - look at the request schemas for details.',
})
sendVideo(@Body() request: MessageVideoRequest) {
const whatsapp = this.manager.getSession(request.session);
@@ -149,6 +117,28 @@ export class ChattingController {
return;
}
@Post('/sendPoll')
@ApiOperation({
summary: 'Send a poll with options',
description: 'You can use it as buttons or list replacement',
})
sendPoll(@Body() request: MessagePollRequest) {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.sendPoll(request);
}
@Post('/sendLocation')
sendLocation(@Body() request: MessageLocationRequest) {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.sendLocation(request);
}
@Post('/sendLinkPreview')
sendLinkPreview(@Body() request: MessageLinkPreviewRequest) {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.sendLinkPreview(request);
}
@Get('/messages')
@ApiOperation({ summary: 'Get messages in a chat' })
getMessages(@Query() query: GetMessageQuery) {
@@ -166,6 +156,25 @@ export class ChattingController {
return whatsapp.sendText(msg);
}
@Post('/sendContactVcard')
sendContactVcard(@Body() request: MessageContactVcardRequest) {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.sendContactVCard(request);
}
@Get('/checkNumberStatus')
@ApiOperation({
summary: 'Check number status',
description: 'DEPRECATED. Use "POST /contacts/check-exists" instead',
deprecated: true,
})
async DEPRECATED_checkNumberStatus(
@Query() request: CheckNumberStatusQuery,
): Promise<WANumberExistResult> {
const whatsapp = this.manager.getSession(request.session);
return whatsapp.checkNumberStatus(request);
}
@Post('/reply')
@ApiOperation({
summary:
+9 -6
View File
@@ -17,8 +17,9 @@ export class ContactsController {
@Get('/')
@ApiOperation({
summary:
'Get contact basic info. The method always return result, even if the phone number is not registered in WhatsApp. For that - use /check-exists endpoint below.',
summary: 'Get contact basic info',
description:
'The method always return result, even if the phone number is not registered in WhatsApp. For that - use /contacts/check-exists endpoint below.',
})
get(@Query() query: ContactQuery) {
const whatsapp = this.manager.getSession(query.session);
@@ -43,8 +44,9 @@ export class ContactsController {
@Get('/about')
@ApiOperation({
summary:
'Gets the Contact\'s current "about" info. Returns null if you don\'t have permission to read their status.',
summary: 'Gets the Contact\'s "about" info',
description:
'Returns null if you do not have permission to read their status.',
})
getAbout(@Query() query: ContactQuery) {
const whatsapp = this.manager.getSession(query.session);
@@ -53,8 +55,9 @@ export class ContactsController {
@Get('/profile-picture')
@ApiOperation({
summary:
"Returns the contact's profile picture URL, if privacy settings allow it.",
summary: "Get contact's profile picture URL",
description:
'If privacy settings do not allow to get the picture, the method will return null.',
})
getProfilePicture(@Query() query: ContactQuery) {
const whatsapp = this.manager.getSession(query.session);
+38 -17
View File
@@ -8,6 +8,7 @@ import {
Put,
} from '@nestjs/common';
import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger';
import { GroupIdApiParam } from '@waha/nestjs/params/ChatIdApiParam';
import {
SessionApiParam,
SessionParam,
@@ -47,6 +48,7 @@ export class GroupsController {
}
@Get(':id')
@GroupIdApiParam
@SessionApiParam
@ApiOperation({ summary: 'Get the group.' })
getGroup(@SessionParam session: WhatsappSession, @Param('id') id: string) {
@@ -55,9 +57,11 @@ export class GroupsController {
@Put(':id/settings/security/info-admin-only')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({
summary:
'Updates the group settings to only allow admins to edit group info (title, description, photo).',
summary: 'Updates the group "info admin only" settings.',
description:
'You can allow only admins to edit group info (title, description, photo).',
})
setInfoAdminOnly(
@SessionParam session: WhatsappSession,
@@ -69,9 +73,11 @@ export class GroupsController {
@Get(':id/settings/security/info-admin-only')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({
summary:
'Gets the group settings to only allow admins to edit group info (title, description, photo).',
summary: "Get the group's 'info admin only' settings.",
description:
'You can allow only admins to edit group info (title, description, photo).',
})
getInfoAdminOnly(
@SessionParam session: WhatsappSession,
@@ -82,8 +88,10 @@ export class GroupsController {
@Put(':id/settings/security/messages-admin-only')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({
summary:
summary: 'Update settings - who can send messages',
description:
'Updates the group settings to only allow admins to send messages.',
})
setMessagesAdminOnly(
@@ -96,8 +104,10 @@ export class GroupsController {
@Get(':id/settings/security/messages-admin-only')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({
summary: 'Gets the group settings to only allow admins to send messages.',
summary: 'Get settings - who can send messages',
description: 'The group settings to only allow admins to send messages.',
})
getMessagesAdminOnly(
@SessionParam session: WhatsappSession,
@@ -108,6 +118,7 @@ export class GroupsController {
@Delete(':id')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({ summary: 'Delete the group.' })
deleteGroup(@SessionParam session: WhatsappSession, @Param('id') id: string) {
return session.deleteGroup(id);
@@ -115,6 +126,7 @@ export class GroupsController {
@Post(':id/leave')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({ summary: 'Leave the group.' })
leaveGroup(@SessionParam session: WhatsappSession, @Param('id') id: string) {
return session.leaveGroup(id);
@@ -122,11 +134,12 @@ export class GroupsController {
@Put(':id/description')
@ApiOperation({
summary:
'Updates the group description.\n' +
'Returns true if the subject was properly updated. This can return false if the user does not have the necessary permissions.\n',
summary: 'Updates the group description.',
description:
'Returns "true" if the subject was properly updated. This can return "false" if the user does not have the necessary permissions.',
})
@SessionApiParam
@GroupIdApiParam
setDescription(
@SessionParam session: WhatsappSession,
@Param('id') id: string,
@@ -137,10 +150,11 @@ export class GroupsController {
@Put(':id/subject')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({
summary:
'Updates the group subject.\n' +
'Returns true if the subject was properly updated. This can return false if the user does not have the necessary permissions.\n',
summary: 'Updates the group subject',
description:
'Returns "true" if the subject was properly updated. This can return "false" if the user does not have the necessary permissions.',
})
setSubject(
@SessionParam session: WhatsappSession,
@@ -152,7 +166,8 @@ export class GroupsController {
@Get(':id/invite-code')
@SessionApiParam
@ApiOperation({ summary: 'Gets the invite code for a specific group.' })
@GroupIdApiParam
@ApiOperation({ summary: 'Gets the invite code for the group.' })
getInviteCode(
@SessionParam session: WhatsappSession,
@Param('id') id: string,
@@ -162,6 +177,7 @@ export class GroupsController {
@Post(':id/invite-code/revoke')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({
summary:
'Invalidates the current group invite code and generates a new one.',
@@ -175,7 +191,8 @@ export class GroupsController {
@Get(':id/participants/')
@SessionApiParam
@ApiOperation({ summary: 'Get a list of participants by in the group.' })
@GroupIdApiParam
@ApiOperation({ summary: 'Get participants' })
getParticipants(
@SessionParam session: WhatsappSession,
@Param('id') id: string,
@@ -185,7 +202,8 @@ export class GroupsController {
@Post(':id/participants/add')
@SessionApiParam
@ApiOperation({ summary: 'Adds a list of participants by ID to the group.' })
@GroupIdApiParam
@ApiOperation({ summary: 'Add participants' })
addParticipants(
@SessionParam session: WhatsappSession,
@Param('id') id: string,
@@ -196,8 +214,9 @@ export class GroupsController {
@Post(':id/participants/remove')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({
summary: 'Removes a list of participants by ID to the group.',
summary: 'Remove participants',
})
removeParticipants(
@SessionParam session: WhatsappSession,
@@ -209,6 +228,7 @@ export class GroupsController {
@Post(':id/admin/promote')
@SessionApiParam
@GroupIdApiParam
@ApiOperation({ summary: 'Promote participants to admin users.' })
promoteToAdmin(
@SessionParam session: WhatsappSession,
@@ -220,7 +240,8 @@ export class GroupsController {
@Post(':id/admin/demote')
@SessionApiParam
@ApiOperation({ summary: 'Demotes participants by to regular users.' })
@GroupIdApiParam
@ApiOperation({ summary: 'Demotes participants to regular users.' })
demoteToAdmin(
@SessionParam session: WhatsappSession,
@Param('id') id: string,
+3 -1
View File
@@ -13,7 +13,9 @@ export class HealthController {
@Get()
@HealthCheck()
@ApiOperation({
summary: 'Check the health of the server, performing all health checks.',
summary: 'Check the health of the server',
description:
"Perform all health checks and return the server's health status.",
})
async check() {
return this.wahaHealth.check();
+4 -1
View File
@@ -1,11 +1,12 @@
import { Body, Controller, Get, Param, Put } from '@nestjs/common';
import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger';
import { WhatsappSession } from '@waha/core/abc/session.abc';
import { ChatIdApiParam } from '@waha/nestjs/params/ChatIdApiParam';
import {
SessionApiParam,
SessionParam,
} from '@waha/nestjs/params/SessionApiParam';
import { Label, LabelID, SetLabelsRequest } from '@waha/structures/labels.dto';
import { Label, SetLabelsRequest } from '@waha/structures/labels.dto';
import { SessionManager } from '../core/abc/manager.abc';
@@ -24,6 +25,7 @@ export class LabelsController {
@Get('/chats/:chatId')
@SessionApiParam
@ChatIdApiParam
@ApiOperation({ summary: 'Get labels for the chat' })
getChatLabels(
@SessionParam session: WhatsappSession,
@@ -34,6 +36,7 @@ export class LabelsController {
@Put('/chats/:chatId')
@SessionApiParam
@ChatIdApiParam
@ApiOperation({ summary: 'Save labels for the chat' })
putChatLabels(
@SessionParam session: WhatsappSession,
+4 -1
View File
@@ -7,7 +7,10 @@ import { PingResponse } from '@waha/structures/ping.dto';
@ApiTags('🔍 Observability')
export class PingController {
@Get()
@ApiOperation({ summary: 'Ping the server, perform no operations.' })
@ApiOperation({
summary: 'Ping the server',
description: 'Check if the server is alive and responding to requests.',
})
ping(): PingResponse {
return { message: 'pong' };
}
+3
View File
@@ -7,6 +7,7 @@ import {
Post,
} from '@nestjs/common';
import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger';
import { ChatIdApiParam } from '@waha/nestjs/params/ChatIdApiParam';
import {
SessionApiParam,
SessionParam,
@@ -67,6 +68,7 @@ export class PresenceController {
@Get(':chatId')
@SessionApiParam
@ChatIdApiParam
@ApiOperation({
summary:
"Get the presence for the chat id. If it hasn't been subscribed - it also subscribes to it.",
@@ -80,6 +82,7 @@ export class PresenceController {
@Post(':chatId/subscribe')
@SessionApiParam
@ChatIdApiParam
@ApiOperation({
summary: 'Subscribe to presence events for the chat.',
})
+2 -2
View File
@@ -38,7 +38,7 @@ export class ServerController {
}
@Get('environment')
@ApiOperation({ summary: 'Return the server environment' })
@ApiOperation({ summary: 'Get the server environment' })
environment(
@Query(new WAHAValidationPipe()) query: EnvironmentQuery,
// eslint-disable-next-line @typescript-eslint/ban-types
@@ -64,7 +64,7 @@ export class ServerController {
}
@Get('status')
@ApiOperation({ summary: 'The server status' })
@ApiOperation({ summary: 'Get the server status' })
async status(): Promise<ServerStatusResponse> {
const now = Date.now();
const uptime = Math.floor(process.uptime() * 1000);
+6 -14
View File
@@ -1,12 +1,4 @@
import {
Body,
Controller,
Delete,
Get,
Param,
Post,
Query,
} from '@nestjs/common';
import { Body, Controller, Post } from '@nestjs/common';
import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger';
import {
SessionApiParam,
@@ -31,7 +23,7 @@ class StatusController {
@Post('text')
@SessionApiParam
@ApiOperation({ summary: 'Send text status.' })
@ApiOperation({ summary: 'Send text status' })
sendTextStatus(
@SessionParam session: WhatsappSession,
@Body() status: TextStatus,
@@ -41,7 +33,7 @@ class StatusController {
@Post('image')
@SessionApiParam
@ApiOperation({ summary: 'Send image status.' })
@ApiOperation({ summary: 'Send image status' })
sendImageStatus(
@SessionParam session: WhatsappSession,
@Body() status: ImageStatus,
@@ -51,7 +43,7 @@ class StatusController {
@Post('voice')
@SessionApiParam
@ApiOperation({ summary: 'Send voice status.' })
@ApiOperation({ summary: 'Send voice status' })
sendVoiceStatus(
@SessionParam session: WhatsappSession,
@Body() status: VoiceStatus,
@@ -61,7 +53,7 @@ class StatusController {
@Post('video')
@SessionApiParam
@ApiOperation({ summary: 'Send video status.' })
@ApiOperation({ summary: 'Send video status' })
sendVideoStatus(
@SessionParam session: WhatsappSession,
@Body() status: VideoStatus,
@@ -71,7 +63,7 @@ class StatusController {
@Post('delete')
@SessionApiParam
@ApiOperation({ summary: 'DELETE sent status.' })
@ApiOperation({ summary: 'DELETE sent status' })
deleteStatus(
@SessionParam session: WhatsappSession,
@Body() status: DeleteStatusRequest,
+5 -1
View File
@@ -14,7 +14,11 @@ import { VERSION } from '../version';
@ApiTags('🔍 Observability')
export class VersionController {
@Get('')
@ApiOperation({ summary: 'Get the version of the server', deprecated: true })
@ApiOperation({
summary: 'Get the server version ',
deprecated: true,
description: "Use 'GET /api/server/version' instead ",
})
get(): WAHAEnvironment {
return VERSION;
}
+5 -2
View File
@@ -1283,7 +1283,10 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
});
}
protected extractBody(message) {
protected extractBody(message): string | null {
if (!message) {
return null;
}
let body = message.conversation;
if (!body) {
// Some of the messages have no conversation, but instead have text in extendedTextMessage
@@ -1309,7 +1312,7 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
const body = this.extractBody(quotedMessage);
return {
id: contextInfo.stanzaId,
participant: contextInfo.participant,
participant: toCusFormat(contextInfo.participant),
body: body,
};
}
+8
View File
@@ -7,3 +7,11 @@ export const ChatIdApiParam = ApiParam({
description: 'Chat ID',
example: '123456789@c.us',
});
export const GroupIdApiParam = ApiParam({
name: 'id',
required: true,
type: 'string',
description: 'Group ID',
example: '123123123@g.us',
});
+1 -1
View File
@@ -12,7 +12,7 @@ export const SessionApiParam = ApiParam({
schema: {
default: 'default',
},
description: 'Session <code>name</code>',
description: 'Session name',
});
/**
* Session param
+1
View File
@@ -4,6 +4,7 @@ export enum QRCodeFormat {
IMAGE = 'image',
RAW = 'raw',
}
export class QRCodeQuery {
format: QRCodeFormat = QRCodeFormat.IMAGE;
}
+1 -1
View File
@@ -15,5 +15,5 @@ export class SessionQuery {
*/
export class SessionBaseRequest {
session = WHATSAPP_DEFAULT_SESSION_NAME;
session: string = WHATSAPP_DEFAULT_SESSION_NAME;
}
+4
View File
@@ -45,6 +45,10 @@ export class Channel {
})
id: string;
@ApiProperty({
description: 'Channel name',
example: 'Channel Name',
})
name: string;
description?: string;
+11 -6
View File
@@ -21,6 +21,10 @@ import { ChatIdProperty, ReplyToProperty } from './properties.dto';
* Queries
*/
export class CheckNumberStatusQuery extends SessionQuery {
@ApiProperty({
description: 'The phone number to check',
example: '1213213213',
})
@IsString()
phone: string;
}
@@ -142,7 +146,8 @@ export class MessageContactVcardRequest extends ChatRequest {
}
export class MessageTextRequest extends ChatRequest {
text = 'Hi there!';
text: string = 'Hi there!';
@ApiHideProperty()
mentions?: string[];
@@ -151,14 +156,14 @@ export class MessageTextRequest extends ChatRequest {
}
export class EditMessageRequest {
text = 'Hello, world!';
text: string = 'Hello, world!';
@ApiHideProperty()
mentions?: string[];
}
export class MessageReplyRequest extends MessageTextRequest {
text = 'Reply text';
text: string = 'Reply text';
}
export class MessageLocationRequest extends ChatRequest {
@@ -193,14 +198,14 @@ class FileRequest extends ChatRequest {
}
export class MessageImageRequest extends FileRequest {
caption: string;
caption?: string;
@ReplyToProperty()
reply_to?: string;
}
export class MessageFileRequest extends FileRequest {
caption: string;
caption?: string;
@ReplyToProperty()
reply_to?: string;
@@ -230,7 +235,7 @@ export class MessageVideoRequest extends ChatRequest {
})
file: VideoRemoteFile | VideoBinaryFile;
caption: string = 'Just watch at this!';
caption?: string = 'Just watch at this!';
@ApiProperty({
description:
+3
View File
@@ -1,3 +1,4 @@
import { ChatIdProperty } from '@waha/structures/properties.dto';
import { IsString } from 'class-validator';
import { SessionBaseRequest, SessionQuery } from './base.dto';
@@ -7,6 +8,7 @@ import { SessionBaseRequest, SessionQuery } from './base.dto';
*/
export class ContactQuery extends SessionQuery {
@ChatIdProperty()
@IsString()
contactId: string;
}
@@ -16,6 +18,7 @@ export class ContactQuery extends SessionQuery {
*/
export class ContactRequest extends SessionBaseRequest {
@ChatIdProperty()
@IsString()
contactId: string;
}
+5
View File
@@ -1,3 +1,4 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsArray, IsString } from 'class-validator';
/**
@@ -5,6 +6,9 @@ import { IsArray, IsString } from 'class-validator';
*/
export class Participant {
@IsString()
@ApiProperty({
example: '123456789@c.us',
})
id: string;
}
@@ -29,6 +33,7 @@ export class DescriptionRequest {
@IsString()
description: string;
}
export class SubjectRequest {
@IsString()
subject: string;
+1
View File
@@ -60,6 +60,7 @@ export class NowebStoreConfig {
@ApiProperty({
description:
'Enable or disable the store for contacts, chats, and messages.',
example: true,
})
@IsBoolean()
enabled: boolean = false;
+18 -16
View File
@@ -3,6 +3,8 @@ import { ApiExtraModels, ApiProperty, getSchemaPath } from '@nestjs/swagger';
import {
BinaryFile,
RemoteFile,
VideoBinaryFile,
VideoRemoteFile,
VoiceBinaryFile,
VoiceRemoteFile,
} from './files.dto';
@@ -19,48 +21,48 @@ class StatusRequest {
}
export class TextStatus extends StatusRequest {
text = 'Have a look! https://github.com/';
backgroundColor = '#38b42f';
font = 1;
text: string = 'Have a look! https://github.com/';
backgroundColor: string = '#38b42f';
font: number = 1;
}
@ApiExtraModels(BinaryFile, RemoteFile)
@ApiExtraModels(RemoteFile, BinaryFile)
export class ImageStatus extends StatusRequest {
@ApiProperty({
oneOf: [
{ $ref: getSchemaPath(BinaryFile) },
{ $ref: getSchemaPath(RemoteFile) },
{ $ref: getSchemaPath(BinaryFile) },
],
})
file: BinaryFile | RemoteFile;
file: RemoteFile | BinaryFile;
caption: string;
caption?: string;
}
@ApiExtraModels(VoiceBinaryFile, VoiceRemoteFile)
@ApiExtraModels(VoiceRemoteFile, VoiceBinaryFile)
export class VoiceStatus extends StatusRequest {
@ApiProperty({
oneOf: [
{ $ref: getSchemaPath(VoiceBinaryFile) },
{ $ref: getSchemaPath(VoiceRemoteFile) },
{ $ref: getSchemaPath(VoiceBinaryFile) },
],
})
file: VoiceBinaryFile | VoiceRemoteFile;
file: VoiceRemoteFile | VoiceBinaryFile;
backgroundColor = '#38b42f';
backgroundColor: string = '#38b42f';
}
@ApiExtraModels(BinaryFile, RemoteFile)
@ApiExtraModels(VideoRemoteFile, VideoBinaryFile)
export class VideoStatus extends StatusRequest {
@ApiProperty({
oneOf: [
{ $ref: getSchemaPath(BinaryFile) },
{ $ref: getSchemaPath(RemoteFile) },
{ $ref: getSchemaPath(VideoRemoteFile) },
{ $ref: getSchemaPath(VideoBinaryFile) },
],
})
file: BinaryFile | RemoteFile;
file: VideoRemoteFile | VideoBinaryFile;
caption: string;
caption?: string;
}
export class DeleteStatusRequest extends StatusRequest {
+1 -1
View File
@@ -33,7 +33,7 @@ export function getEngineName(): string {
}
export const VERSION: WAHAEnvironment = {
version: '2024.9.1',
version: '2024.9.3',
engine: getEngineName(),
tier: getWAHAVersion(),
browser: getBrowserExecutablePath(),
+2 -2
View File
@@ -7,7 +7,7 @@ __metadata:
"@adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-channels-2":
version: 6.7.7
resolution: "@adiwajshing/baileys@https://github.com/devlikeapro/Baileys.git#commit=d6cc8a745f06d7c60bdbb47a4293ee160297cc2e"
resolution: "@adiwajshing/baileys@https://github.com/devlikeapro/Baileys.git#commit=84b7f66ea819a4abadddf41586192bb35916809c"
dependencies:
"@adiwajshing/keyed-db": ^0.2.4
"@hapi/boom": ^9.1.3
@@ -39,7 +39,7 @@ __metadata:
optional: true
sharp:
optional: true
checksum: 8c91196dd6bbc51422d7b34a477ff2bc36ad2db85c602f24fe438e00442b7b5ef3e429cde322082ec00147612a35d6501b58cfbeeb8cb76febe23ecfdb43c0d9
checksum: 670506c283521ff5d9a6e2baf08c1b0a99e1ad5b699a9ac088563bae39e623fae2ff7a679da6db3633f3bf91f8f8344f4433fd010535be0f196138500c632eda
languageName: node
linkType: hard