diff --git a/.gitignore b/.gitignore index 859cfb8..8dda3e2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ node_modules -removed.rm \ No newline at end of file +removed.rm + +fromwindows.json +fromandroid.json +fromnodered.json \ No newline at end of file diff --git a/chats-out.js b/chats-out.js index 2092c1a..e3a2a51 100644 --- a/chats-out.js +++ b/chats-out.js @@ -14,27 +14,68 @@ module.exports = function(RED) { const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); async function webNubmerSeteing(numb){ - numb = typeof numb ==='number' ? numb : numb.replace(/\D/g, ''); - // numb = `${numb}@c.us`; - var numbID = await node.waClient.getNumberId(numb); - if(numbID) { - return `${numbID.user}@${numbID.server}`; - } else { - return `${numb}@g.us` + // Validate and clean the number + if (!numb) { + throw new Error('Number is required'); + } + + // Convert to string if number + numb = typeof numb === 'number' ? numb.toString() : numb; + + // For group IDs, preserve the hyphen (format: NUMBER-TIMESTAMP@g.us) + // Only strip non-digits and non-hyphens for cleaning + numb = numb.replace(/[^\d-]/g, ''); + + // Check if number is valid after cleaning + if (!numb || numb.length === 0) { + throw new Error('Invalid number format'); + } + + try { + var numbID = await node.waClient.getNumberId(numb); + if(numbID) { + return `${numbID.user}@${numbID.server}`; + } else { + return `${numb}@g.us` + } + } catch (e) { + node.error(`Error getting number ID for ${numb}: ${e.message}`); + throw e; } - // return numb } async function socNubmerSeteing(numb){ - if (numb.remoteJid){ + if (numb && numb.remoteJid){ return numb.remoteJid; } - numb = typeof numb ==='number' ? numb : numb.replace(/\D/g, ''); - const [result] = await (await node.waClient).onWhatsApp(numb) - if (result?.exists){ - return result.jid + + // Validate and clean the number + if (!numb) { + throw new Error('Number is required'); + } + + // Convert to string if number + numb = typeof numb === 'number' ? numb.toString() : numb; + + // For group IDs, preserve the hyphen (format: NUMBER-TIMESTAMP@g.us) + // Only strip non-digits and non-hyphens for cleaning + numb = numb.replace(/[^\d-]/g, ''); + + // Check if number is valid after cleaning + if (!numb || numb.length === 0) { + throw new Error('Invalid number format'); + } + + try { + const [result] = await (await node.waClient).onWhatsApp(numb) + if (result?.exists){ + return result.jid + } + return numb = `${numb}@g.us`; + } catch (e) { + node.error(`Error checking WhatsApp for ${numb}: ${e.message}`); + throw e; } - return numb = `${numb}@g.us`; } async function whatsappMessage(numb , inputMessage){ @@ -43,7 +84,6 @@ module.exports = function(RED) { numb = await webNubmerSeteing(numb); if(typeof inputMessage === "object"){ inputMessage = new Buttons(inputMessage.text, inputMessage.buttons, "text" ,inputMessage.footer); - node.waClient.sendMessage(numb, inputMessage); } node.waClient.sendMessage(numb, inputMessage); } diff --git a/group-out.js b/group-out.js index cfe9479..e8ed60a 100644 --- a/group-out.js +++ b/group-out.js @@ -15,28 +15,68 @@ module.exports = function(RED) { async function webNubmerSeteing(numb){ - numb = typeof numb ==='number' ? numb : numb.replace(/\D/g, ''); - // numb = `${numb}@c.us`; - var numbID = await node.waClient.getNumberId(numb); - if(numbID) { - return `${numbID.user}@${numbID.server}`; - } else { - return `${numb}@g.us` + // Validate and clean the number + if (!numb) { + throw new Error('Number is required'); + } + + // Convert to string if number + numb = typeof numb === 'number' ? numb.toString() : numb; + + // For group IDs, preserve the hyphen (format: NUMBER-TIMESTAMP@g.us) + // Only strip non-digits and non-hyphens for cleaning + numb = numb.replace(/[^\d-]/g, ''); + + // Check if number is valid after cleaning + if (!numb || numb.length === 0) { + throw new Error('Invalid number format'); + } + + try { + var numbID = await node.waClient.getNumberId(numb); + if(numbID) { + return `${numbID.user}@${numbID.server}`; + } else { + return `${numb}@g.us` + } + } catch (e) { + node.error(`Error getting number ID for ${numb}: ${e.message}`); + throw e; } - // return numb } async function socNubmerSeteing(numb){ - if (numb.remoteJid){ + if (numb && numb.remoteJid){ return numb.remoteJid; } - numb = typeof numb ==='number' ? numb : numb.replace(/\D/g, ''); - const [result] = await (await node.waClient).onWhatsApp(numb) - if (result?.exists){ - console.log(result.exists) - return result.jid + + // Validate and clean the number + if (!numb) { + throw new Error('Number is required'); + } + + // Convert to string if number + numb = typeof numb === 'number' ? numb.toString() : numb; + + // For group IDs, preserve the hyphen (format: NUMBER-TIMESTAMP@g.us) + // Only strip non-digits and non-hyphens for cleaning + numb = numb.replace(/[^\d-]/g, ''); + + // Check if number is valid after cleaning + if (!numb || numb.length === 0) { + throw new Error('Invalid number format'); + } + + try { + const [result] = await (await node.waClient).onWhatsApp(numb) + if (result?.exists){ + return result.jid + } + return numb = `${numb}@g.us`; + } catch (e) { + node.error(`Error checking WhatsApp for ${numb}: ${e.message}`); + throw e; } - return numb = `${numb}@g.us`; } async function whatsappMessage(numb , inputMessage){