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.
This commit is contained in:
Felipe Medeiros 2024-09-20 17:32:39 -03:00
parent 76fe717076
commit 0544d80cbd

View File

@ -620,7 +620,7 @@ export class BaileysStartupService extends ChannelStartupService {
const existingChatIdSet = new Set(existingChatIds.map((chat) => chat.remoteJid));
const chatsToInsert = chats
.filter((chat) => !existingChatIdSet.has(chat.id))
.filter((chat) => !existingChatIdSet?.has(chat.id))
.map((chat) => ({ remoteJid: chat.id, instanceId: this.instanceId, name: chat.name }));
this.sendDataWebhook(Events.CHATS_UPSERT, chatsToInsert);
@ -757,6 +757,7 @@ export class BaileysStartupService extends ChannelStartupService {
);
}
} catch (error) {
console.error(error);
this.logger.error('line 817');
this.logger.error(`Error: ${error.message}`);
}
@ -849,7 +850,7 @@ export class BaileysStartupService extends ChannelStartupService {
);
for (const chat of chats) {
if (chatsRepository.has(chat.id)) {
if (chatsRepository?.has(chat.id)) {
continue;
}
@ -906,7 +907,7 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
if (messagesRepository.has(m.key.id)) {
if (messagesRepository?.has(m.key.id)) {
continue;
}
@ -1053,6 +1054,7 @@ export class BaileysStartupService extends ChannelStartupService {
};
if (messageRaw.message.extendedTextMessage) {
messageRaw.messageType = 'conversation';
messageRaw.message.conversation = messageRaw.message.extendedTextMessage.text;
delete messageRaw.message.extendedTextMessage;
}
@ -1949,6 +1951,14 @@ export class BaileysStartupService extends ChannelStartupService {
messageSent = await this.sendMessage(sender, message, mentions, linkPreview, quoted);
}
const isMedia =
messageSent?.message?.imageMessage ||
messageSent?.message?.videoMessage ||
messageSent?.message?.stickerMessage ||
messageSent?.message?.documentMessage ||
messageSent?.message?.documentWithCaptionMessage ||
messageSent?.message?.audioMessage;
const contentMsg = messageSent.message[getContentType(messageSent.message)] as any;
if (Long.isLong(messageSent?.messageTimestamp)) {
@ -1967,10 +1977,98 @@ export class BaileysStartupService extends ChannelStartupService {
};
if (messageRaw.message.extendedTextMessage) {
messageRaw.messageType = 'conversation';
messageRaw.message.conversation = messageRaw.message.extendedTextMessage.text;
delete messageRaw.message.extendedTextMessage;
}
if (this.configService.get<Database>('DATABASE').SAVE_DATA.NEW_MESSAGE) {
const msg = await this.prismaRepository.message.create({
data: messageRaw,
});
if (isMedia && this.configService.get<S3>('S3').ENABLE) {
try {
const message: any = messageSent;
const media = await this.getBase64FromMediaMessage(
{
message,
},
true,
);
const { buffer, mediaType, fileName, size } = media;
const mimetype = mime.getType(fileName).toString();
const fullName = join(`${this.instance.id}`, messageSent.key.remoteJid, mediaType, fileName);
await s3Service.uploadFile(fullName, buffer, size.fileLength?.low, {
'Content-Type': mimetype,
});
await this.prismaRepository.media.create({
data: {
messageId: msg.id,
instanceId: this.instanceId,
type: mediaType,
fileName: fullName,
mimetype,
},
});
const mediaUrl = await s3Service.getObjectUrl(fullName);
messageRaw.message.mediaUrl = mediaUrl;
await this.prismaRepository.message.update({
where: { id: msg.id },
data: messageRaw,
});
} catch (error) {
this.logger.error(['Error on upload file to minio', error?.message, error?.stack]);
}
}
}
if (isMedia && !this.configService.get<S3>('S3').ENABLE) {
const buffer = await downloadMediaMessage(
{ key: messageSent.key, message: messageSent?.message },
'buffer',
{},
{
logger: P({ level: 'error' }) as any,
reuploadRequest: this.client.updateMediaMessage,
},
);
messageRaw.message.base64 = buffer ? buffer.toString('base64') : undefined;
}
if (this.configService.get<Openai>('OPENAI').ENABLED) {
const openAiDefaultSettings = await this.prismaRepository.openaiSetting.findFirst({
where: {
instanceId: this.instanceId,
},
include: {
OpenaiCreds: true,
},
});
if (
openAiDefaultSettings &&
openAiDefaultSettings.openaiCredsId &&
openAiDefaultSettings.speechToText &&
messageSent?.message?.audioMessage
) {
messageRaw.message.speechToText = await this.openaiService.speechToText(
openAiDefaultSettings.OpenaiCreds,
messageSent,
this.client.updateMediaMessage,
);
}
}
this.logger.log(messageRaw);
this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw);
@ -2052,7 +2150,7 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
return messageSent;
return messageRaw;
} catch (error) {
this.logger.error('line 2081');
this.logger.error(error);
@ -3314,7 +3412,7 @@ export class BaileysStartupService extends ChannelStartupService {
const cacheConf = configService.get<CacheConf>('CACHE');
if ((cacheConf?.REDIS?.ENABLED && cacheConf?.REDIS?.URI !== '') || cacheConf?.LOCAL?.ENABLED) {
if (await groupMetadataCache.has(groupJid)) {
if (await groupMetadataCache?.has(groupJid)) {
console.log(`Cache request for group: ${groupJid}`);
const meta = await groupMetadataCache.get(groupJid);