[core] ChatWoot - use media from replyTo.media if provided

This commit is contained in:
devlikepro committed 2026-04-15 13:05:22 +07:00
1 parent 17a7764b97
commit f70bcd0b53
2 files changed
+26 -9

No files matched your search

@@ -50,13 +50,29 @@ export class StatusReplyMessage extends TextMessage {
let attachments: SendAttachment[] = [];
const quoted = this.getStatusQuotedMessageInfo(payload);
const wamessage = await this.fetchStatusMessage(quoted.id);
if (wamessage?.media?.url) {
const extension = mime.extension(wamessage.media.mimetype);
wamessage.media.filename = `status-message.${extension}`;
const quotedAttachments = await super.getAttachments(wamessage);
let wamessage = null; // aka "quoted from store"
// Media - Use provided replyTo.media if present
if (attachments.length === 0 && payload.replyTo.media) {
const extension = mime.extension(payload.replyTo.media.mimetype);
payload.replyTo.media.filename = `status-message.${extension}`;
const quotedAttachments = await super.getAttachments(payload.replyTo);
attachments = [...attachments, ...quotedAttachments];
} else {
}
// Media - fetch message by id from store and use it's "media"
if (attachments.length == 0) {
wamessage = await this.fetchStatusMessage(quoted.id);
if (wamessage?.media?.url) {
const extension = mime.extension(wamessage.media.mimetype);
wamessage.media.filename = `status-message.${extension}`;
const quotedAttachments = await super.getAttachments(wamessage);
attachments = [...attachments, ...quotedAttachments];
}
}
// Media - get media url, key and try to decrypt it
if (attachments.length == 0) {
const replyData = payload.replyTo._data;
const quotedMedia = EngineHelper.ExtractQuotedMedia(replyData);
if (quotedMedia) {
@@ -11,6 +11,7 @@ import { MessageToChatWootConverter } from '@waha/apps/chatwoot/messages/to/chat
import { WhatsappToMarkdown } from '@waha/apps/chatwoot/messages/to/chatwoot/utils/markdown';
import { JobLink } from '@waha/apps/app_sdk/JobUtils';
import { Job } from 'bullmq';
import { WAMedia } from '@waha/structures/media.dto';
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mime = require('mime-types');
@@ -57,9 +58,9 @@ export class TextMessage implements MessageToChatWootConverter {
};
}
protected async getAttachments(
payload: WAMessage,
): Promise<SendAttachment[]> {
protected async getAttachments(payload: {
media?: WAMedia;
}): Promise<SendAttachment[]> {
const hasMedia = payload.media?.url;
if (!hasMedia) {
return [];