Created
February 10, 2024 09:04
-
-
Save LucasSaud/61d2a424b787d8dc72e993495943f887 to your computer and use it in GitHub Desktop.
Sending messages for contacts saved in DB
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// client é um objeto do Baileys | |
// DB é um objeto do Sequelize | |
const sendMKT = async (DB, client) => { | |
try { | |
// Consultar contatos únicos que não receberam marketing | |
const uniqueWhatsAppNumbers = await DB.Contacts.findAll({ | |
attributes: [ | |
[DB.sequelize.fn('DISTINCT', DB.sequelize.col('whatsappNumber')), 'phoneNumber'] | |
], | |
where: { | |
whatsappNumber: { | |
[Sequelize.Op.ne]: config.empresa.botNumber | |
}, | |
isMktSent: 0, | |
}, | |
limit: config.numMaxMsgMkt, | |
raw: true, | |
}); | |
// Se não houver contatos para enviar, retornar | |
if (uniqueWhatsAppNumbers.length === 0) { | |
if (config.showLog === true ) console.log('Não há contatos para enviar marketing.'); | |
await client.sendMessage(config.empresa.botNumber, { text: `⚠️ Não há contatos para enviar marketing.` }); | |
return; | |
} | |
let numOfMsgsSent = 0; | |
// Loop através dos contatos e enviar marketing | |
for (const { phoneNumber } of uniqueWhatsAppNumbers) { | |
numOfMsgsSent++; | |
const formattedNumber = phoneNumber.endsWith('@s.whatsapp.net') ? phoneNumber : `${phoneNumber}@s.whatsapp.net`; | |
await sendImageMessage(client, formattedNumber, "mkt.png", config.messages[2], false); | |
await DB.saveLogs(`[ INFO ] Mensagem enviada para ${phoneNumber}.`); | |
await client.sendMessage(config.empresa.botNumber, { text: `✅ Mensagem enviada para ${phoneNumber}.` }); | |
await DB.Contacts.update({ isMktSent: true }, { | |
where: { | |
whatsappNumber: phoneNumber, | |
} | |
}); | |
await new Promise(resolve => setTimeout(resolve, config.tempoEntreMensagens)); | |
} | |
await client.sendMessage(config.empresa.botNumber, { text: `✅ Prontinho. ${numOfMsgsSent} mensagens enviadas.` }); | |
} catch (error) { | |
await client.sendMessage(config.empresa.botNumber, { text: `⚠️ Ocorreu um erro ao enviar as mensagens ${error}.` }); | |
await DB.saveLogs('[ ERROR ] Ocorreu um erro ao enviar as mensagens', error); | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment