waha / src /core /utils /convertors.ts
NitinBot002's picture
Upload 384 files
4327358 verified
import { isJidGroup, WAMessageKey } from '@adiwajshing/baileys';
import { parseMessageIdSerialized } from '@waha/core/utils/ids';
import { toJID } from '@waha/core/utils/jids';
import {
GetChatMessagesFilter,
GetChatMessagesQuery,
ReadChatMessagesQuery,
} from '@waha/structures/chats.dto';
import { SendSeenRequest } from '@waha/structures/chatting.dto';
import { WAMessageAck } from '@waha/structures/enums.dto';
export function ExtractMessageKeysForRead(
request: SendSeenRequest,
): WAMessageKey[] {
const jid = toJID(request.chatId);
const defaults = {
remoteJid: jid,
participant: request.participant,
};
const ids = request.messageIds || [];
if (request.messageId) {
ids.push(request.messageId);
}
const keys: WAMessageKey[] = [];
for (const messageId of ids) {
const parsed = parseMessageIdSerialized(messageId, false);
if (parsed.fromMe) {
continue;
}
const key: WAMessageKey = {
id: parsed.id,
remoteJid: parsed.remoteJid
? toJID(parsed.remoteJid)
: defaults.remoteJid,
participant: parsed.participant
? toJID(parsed.participant)
: defaults.participant,
};
keys.push(key);
}
return keys;
}
function daysToMs(days: number) {
return days * 24 * 60 * 60 * 1000;
}
export function MessagesForRead(
chatId: string,
request: ReadChatMessagesQuery,
): {
query: GetChatMessagesQuery;
filter: GetChatMessagesFilter;
} {
const limit = request.messages || isJidGroup(chatId) ? 100 : 30;
const query: GetChatMessagesQuery = {
offset: 0,
limit: limit,
downloadMedia: false,
};
const afterMs = Date.now() - daysToMs(request.days);
const after = Math.floor(afterMs / 1000);
const filter: GetChatMessagesFilter = {
'filter.ack': WAMessageAck.DEVICE,
'filter.fromMe': false,
'filter.timestamp.gte': after,
};
return {
query: query,
filter: filter,
};
}