diff --git a/src/utils/use-multi-file-auth-state-db.ts b/src/utils/use-multi-file-auth-state-db.ts index a021372a..237b15d0 100644 --- a/src/utils/use-multi-file-auth-state-db.ts +++ b/src/utils/use-multi-file-auth-state-db.ts @@ -25,7 +25,14 @@ export async function useMultiFileAuthStateDb( const writeData = async (data: any, key: string): Promise => { try { await client.connect(); - return await collection.replaceOne({ _id: key }, JSON.parse(JSON.stringify(data, BufferJSON.replacer)), { + let msgParsed = JSON.parse(JSON.stringify(data, BufferJSON.replacer)); + if (Array.isArray(msgParsed)) { + msgParsed = { + _id: key, + content_array: msgParsed, + }; + } + return await collection.replaceOne({ _id: key }, msgParsed, { upsert: true, }); } catch (error) { @@ -36,7 +43,10 @@ export async function useMultiFileAuthStateDb( const readData = async (key: string): Promise => { try { await client.connect(); - const data = await collection.findOne({ _id: key }); + let data = (await collection.findOne({ _id: key })) as any; + if (data?.content_array) { + data = data.content_array; + } const creds = JSON.stringify(data); return JSON.parse(creds, BufferJSON.reviver); } catch (error) { diff --git a/src/whatsapp/services/chatwoot.service.ts b/src/whatsapp/services/chatwoot.service.ts index b19fa31f..463f81d7 100644 --- a/src/whatsapp/services/chatwoot.service.ts +++ b/src/whatsapp/services/chatwoot.service.ts @@ -338,14 +338,18 @@ export class ChatwootService { } this.logger.verbose('update contact in chatwoot'); - const contact = await client.contacts.update({ - accountId: this.provider.account_id, - id, - data, - }); + try { + const contact = await client.contacts.update({ + accountId: this.provider.account_id, + id, + data, + }); - this.logger.verbose('contact updated'); - return contact; + this.logger.verbose('contact updated'); + return contact; + } catch (error) { + this.logger.error(error); + } } public async findContact(instance: InstanceDto, phoneNumber: string) { @@ -488,6 +492,9 @@ export class ChatwootService { avatar_url: picture_url.profilePictureUrl || null, }); } + if (!contact) { + contact = await this.findContact(instance, chatId); + } } else { const jid = isGroup ? null : body.key.remoteJid; contact = await this.createContact( diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index 9579cffd..fd7b16fb 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -369,7 +369,7 @@ export class TypebotService { } if (element.underline) { - text = `~${text}~`; + text = `*${text}*`; } if (element.url) { diff --git a/src/whatsapp/services/whatsapp.service.ts b/src/whatsapp/services/whatsapp.service.ts index 6fb92f7f..e094d4ac 100644 --- a/src/whatsapp/services/whatsapp.service.ts +++ b/src/whatsapp/services/whatsapp.service.ts @@ -2283,6 +2283,21 @@ export class WAStartupService { !message['conversation'] && sender !== 'status@broadcast' ) { + + if (message['reactionMessage']) { + this.logger.verbose('Sending reaction'); + return await this.client.sendMessage( + sender, + { + react: { + text: message['reactionMessage']['text'], + key: message['reactionMessage']['key'] + } + } as unknown as AnyMessageContent, + option as unknown as MiscMessageGenerationOptions, + ); + } + if (!message['audio']) { this.logger.verbose('Sending message'); return await this.client.sendMessage( @@ -2298,7 +2313,6 @@ export class WAStartupService { ); } } - if (message['conversation']) { this.logger.verbose('Sending message'); return await this.client.sendMessage( @@ -2346,7 +2360,7 @@ export class WAStartupService { this.logger.log(messageRaw); this.logger.verbose('Sending data to webhook in event SEND_MESSAGE'); - await this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw); + this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw); if (this.localChatwoot.enabled && !isChatwoot) { this.chatwootService.eventWhatsapp(Events.SEND_MESSAGE, { instanceName: this.instance.name }, messageRaw);