Skip to content

Instantly share code, notes, and snippets.

@LucasSaud
Created February 10, 2024 09:04
Show Gist options
  • Save LucasSaud/61d2a424b787d8dc72e993495943f887 to your computer and use it in GitHub Desktop.
Save LucasSaud/61d2a424b787d8dc72e993495943f887 to your computer and use it in GitHub Desktop.
Sending messages for contacts saved in DB
// 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