Spaces:
Runtime error
Runtime error
| 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, | |
| }; | |
| } | |