Skip to content

Commit 0544d80

Browse files
committed
refactor: padroniza retorno da função sendMessage no Baileys
Ajusta o retorno da função "sendMessage" para usar a variável "messageRaw" em vez de "messageSent", garantindo consistência no retorno.
1 parent 76fe717 commit 0544d80

File tree

1 file changed

+103
-5
lines changed

1 file changed

+103
-5
lines changed

src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts

Lines changed: 103 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,7 @@ export class BaileysStartupService extends ChannelStartupService {
620620
const existingChatIdSet = new Set(existingChatIds.map((chat) => chat.remoteJid));
621621

622622
const chatsToInsert = chats
623-
.filter((chat) => !existingChatIdSet.has(chat.id))
623+
.filter((chat) => !existingChatIdSet?.has(chat.id))
624624
.map((chat) => ({ remoteJid: chat.id, instanceId: this.instanceId, name: chat.name }));
625625

626626
this.sendDataWebhook(Events.CHATS_UPSERT, chatsToInsert);
@@ -757,6 +757,7 @@ export class BaileysStartupService extends ChannelStartupService {
757757
);
758758
}
759759
} catch (error) {
760+
console.error(error);
760761
this.logger.error('line 817');
761762
this.logger.error(`Error: ${error.message}`);
762763
}
@@ -849,7 +850,7 @@ export class BaileysStartupService extends ChannelStartupService {
849850
);
850851

851852
for (const chat of chats) {
852-
if (chatsRepository.has(chat.id)) {
853+
if (chatsRepository?.has(chat.id)) {
853854
continue;
854855
}
855856

@@ -906,7 +907,7 @@ export class BaileysStartupService extends ChannelStartupService {
906907
}
907908
}
908909

909-
if (messagesRepository.has(m.key.id)) {
910+
if (messagesRepository?.has(m.key.id)) {
910911
continue;
911912
}
912913

@@ -1053,6 +1054,7 @@ export class BaileysStartupService extends ChannelStartupService {
10531054
};
10541055

10551056
if (messageRaw.message.extendedTextMessage) {
1057+
messageRaw.messageType = 'conversation';
10561058
messageRaw.message.conversation = messageRaw.message.extendedTextMessage.text;
10571059
delete messageRaw.message.extendedTextMessage;
10581060
}
@@ -1949,6 +1951,14 @@ export class BaileysStartupService extends ChannelStartupService {
19491951
messageSent = await this.sendMessage(sender, message, mentions, linkPreview, quoted);
19501952
}
19511953

1954+
const isMedia =
1955+
messageSent?.message?.imageMessage ||
1956+
messageSent?.message?.videoMessage ||
1957+
messageSent?.message?.stickerMessage ||
1958+
messageSent?.message?.documentMessage ||
1959+
messageSent?.message?.documentWithCaptionMessage ||
1960+
messageSent?.message?.audioMessage;
1961+
19521962
const contentMsg = messageSent.message[getContentType(messageSent.message)] as any;
19531963

19541964
if (Long.isLong(messageSent?.messageTimestamp)) {
@@ -1967,10 +1977,98 @@ export class BaileysStartupService extends ChannelStartupService {
19671977
};
19681978

19691979
if (messageRaw.message.extendedTextMessage) {
1980+
messageRaw.messageType = 'conversation';
19701981
messageRaw.message.conversation = messageRaw.message.extendedTextMessage.text;
19711982
delete messageRaw.message.extendedTextMessage;
19721983
}
19731984

1985+
if (this.configService.get<Database>('DATABASE').SAVE_DATA.NEW_MESSAGE) {
1986+
const msg = await this.prismaRepository.message.create({
1987+
data: messageRaw,
1988+
});
1989+
1990+
if (isMedia && this.configService.get<S3>('S3').ENABLE) {
1991+
try {
1992+
const message: any = messageSent;
1993+
const media = await this.getBase64FromMediaMessage(
1994+
{
1995+
message,
1996+
},
1997+
true,
1998+
);
1999+
2000+
const { buffer, mediaType, fileName, size } = media;
2001+
2002+
const mimetype = mime.getType(fileName).toString();
2003+
2004+
const fullName = join(`${this.instance.id}`, messageSent.key.remoteJid, mediaType, fileName);
2005+
2006+
await s3Service.uploadFile(fullName, buffer, size.fileLength?.low, {
2007+
'Content-Type': mimetype,
2008+
});
2009+
2010+
await this.prismaRepository.media.create({
2011+
data: {
2012+
messageId: msg.id,
2013+
instanceId: this.instanceId,
2014+
type: mediaType,
2015+
fileName: fullName,
2016+
mimetype,
2017+
},
2018+
});
2019+
2020+
const mediaUrl = await s3Service.getObjectUrl(fullName);
2021+
2022+
messageRaw.message.mediaUrl = mediaUrl;
2023+
2024+
await this.prismaRepository.message.update({
2025+
where: { id: msg.id },
2026+
data: messageRaw,
2027+
});
2028+
} catch (error) {
2029+
this.logger.error(['Error on upload file to minio', error?.message, error?.stack]);
2030+
}
2031+
}
2032+
}
2033+
2034+
if (isMedia && !this.configService.get<S3>('S3').ENABLE) {
2035+
const buffer = await downloadMediaMessage(
2036+
{ key: messageSent.key, message: messageSent?.message },
2037+
'buffer',
2038+
{},
2039+
{
2040+
logger: P({ level: 'error' }) as any,
2041+
reuploadRequest: this.client.updateMediaMessage,
2042+
},
2043+
);
2044+
2045+
messageRaw.message.base64 = buffer ? buffer.toString('base64') : undefined;
2046+
}
2047+
2048+
if (this.configService.get<Openai>('OPENAI').ENABLED) {
2049+
const openAiDefaultSettings = await this.prismaRepository.openaiSetting.findFirst({
2050+
where: {
2051+
instanceId: this.instanceId,
2052+
},
2053+
include: {
2054+
OpenaiCreds: true,
2055+
},
2056+
});
2057+
2058+
if (
2059+
openAiDefaultSettings &&
2060+
openAiDefaultSettings.openaiCredsId &&
2061+
openAiDefaultSettings.speechToText &&
2062+
messageSent?.message?.audioMessage
2063+
) {
2064+
messageRaw.message.speechToText = await this.openaiService.speechToText(
2065+
openAiDefaultSettings.OpenaiCreds,
2066+
messageSent,
2067+
this.client.updateMediaMessage,
2068+
);
2069+
}
2070+
}
2071+
19742072
this.logger.log(messageRaw);
19752073

19762074
this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw);
@@ -2052,7 +2150,7 @@ export class BaileysStartupService extends ChannelStartupService {
20522150
}
20532151
}
20542152

2055-
return messageSent;
2153+
return messageRaw;
20562154
} catch (error) {
20572155
this.logger.error('line 2081');
20582156
this.logger.error(error);
@@ -3314,7 +3412,7 @@ export class BaileysStartupService extends ChannelStartupService {
33143412
const cacheConf = configService.get<CacheConf>('CACHE');
33153413

33163414
if ((cacheConf?.REDIS?.ENABLED && cacheConf?.REDIS?.URI !== '') || cacheConf?.LOCAL?.ENABLED) {
3317-
if (await groupMetadataCache.has(groupJid)) {
3415+
if (await groupMetadataCache?.has(groupJid)) {
33183416
console.log(`Cache request for group: ${groupJid}`);
33193417
const meta = await groupMetadataCache.get(groupJid);
33203418

0 commit comments

Comments
 (0)