fix: Improvement for Validation of Numbers and Groups

Improvement for Validation of Numbers and Groups
This commit is contained in:
Davidson Gomes 2023-07-24 12:00:33 -03:00 committed by GitHub
commit c0054959cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 9 deletions

View File

@ -446,7 +446,7 @@ export const whatsappNumberSchema: JSONSchema7 = {
uniqueItems: true, uniqueItems: true,
items: { items: {
type: 'string', type: 'string',
pattern: '^\\d+', // pattern: '^\\d+',
description: '"numbers" must be an array of numeric strings', description: '"numbers" must be an array of numeric strings',
}, },
}, },

View File

@ -1481,14 +1481,14 @@ export class WAStartupService {
} }
number = number number = number
?.split(":")[0] ?.replace(/\s/g, '')
?.split("@")[0] .replace(/\+/g, '')
?.replace(' ', '') .replace(/\(/g, '')
?.replace('+', '') .replace(/\)/g, '')
?.replace('(', '') .split(/\:/)[0]
?.replace(')', ''); .split('@')[0];
if (number.includes('-') && number.length >= 18) { if(number.includes('-') && number.length >= 24){
this.logger.verbose('Jid created is group: ' + `${number}@g.us`); this.logger.verbose('Jid created is group: ' + `${number}@g.us`);
number = number.replace(/[^\d-]/g, ''); number = number.replace(/[^\d-]/g, '');
return `${number}@g.us`; return `${number}@g.us`;
@ -1496,6 +1496,12 @@ export class WAStartupService {
number = number.replace(/\D/g, ''); number = number.replace(/\D/g, '');
if (number.length >= 18) {
this.logger.verbose('Jid created is group: ' + `${number}@g.us`);
number = number.replace(/[^\d-]/g, '');
return `${number}@g.us`;
}
this.logger.verbose('Jid created is whatsapp: ' + `${number}@s.whatsapp.net`); this.logger.verbose('Jid created is whatsapp: ' + `${number}@s.whatsapp.net`);
return `${number}@s.whatsapp.net`; return `${number}@s.whatsapp.net`;
} }
@ -2327,7 +2333,7 @@ export class WAStartupService {
const onWhatsapp: OnWhatsAppDto[] = []; const onWhatsapp: OnWhatsAppDto[] = [];
for await (const number of data.numbers) { for await (const number of data.numbers) {
const jid = this.createJid(number); let jid = this.createJid(number);
if (isJidGroup(jid)) { if (isJidGroup(jid)) {
const group = await this.findGroup({ groupJid: jid }, 'inner'); const group = await this.findGroup({ groupJid: jid }, 'inner');
@ -2336,6 +2342,7 @@ export class WAStartupService {
onWhatsapp.push(new OnWhatsAppDto(group.id, !!group?.id, group?.subject)); onWhatsapp.push(new OnWhatsAppDto(group.id, !!group?.id, group?.subject));
} else { } else {
jid = (!jid.startsWith('+')) ? `+${jid}` : jid;
const verify = await this.client.onWhatsApp(jid); const verify = await this.client.onWhatsApp(jid);
const result = verify[0]; const result = verify[0];