fix(provider): 🐛 qr code accurate

fix(provider): 🐛 qr code accurate
This commit is contained in:
Leifer Mendez
2022-12-17 14:03:09 +01:00
committed by GitHub
8 changed files with 712 additions and 32 deletions

View File

@@ -11,6 +11,7 @@
],
"dependencies": {
"@bot-whatsapp/bot": "*",
"combine-image": "^1.0.3",
"qr-image": "^3.2.0"
},
"exports": {

View File

@@ -70,7 +70,7 @@ class BaileysProvider extends ProviderClass {
`Necesitas ayuda: https://link.codigoencasa.com/DISCORD`,
],
})
baileyGenerateImage(qr)
await baileyGenerateImage(qr)
}
if (lastDisconnect?.error) {

View File

@@ -1,4 +1,5 @@
const { createWriteStream } = require('fs')
const combineImage = require('combine-image')
const qr = require('qr-image')
const baileyCleanNumber = (number, full = false) => {
@@ -7,9 +8,28 @@ const baileyCleanNumber = (number, full = false) => {
return number
}
const baileyGenerateImage = (base64) => {
/**
* Hace promesa el write
* @param {*} base64
*/
const baileyGenerateImage = async (base64) => {
const PATH_QR = `${process.cwd()}/qr.png`
let qr_svg = qr.image(base64, { type: 'png', margin: 4 })
qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.png`))
const writeFilePromise = () =>
new Promise((resolve, reject) => {
const file = qr_svg.pipe(createWriteStream(PATH_QR))
file.on('finish', () => resolve(true))
file.on('error', reject)
})
await writeFilePromise()
const cleanImage = await combineImage([PATH_QR], {
margin: 15,
color: 0xffffffff,
})
cleanImage.write(PATH_QR)
}
const baileyIsValidNumber = (rawNumber) => {

View File

@@ -49,7 +49,7 @@ class VenomProvider extends ProviderClass {
/**
* Generamos QR Code pra escanear con el Whatsapp
*/
generateQr = (qr) => {
generateQr = async (qr) => {
console.clear()
this.emit('require_action', {
instructions: [
@@ -58,7 +58,7 @@ class VenomProvider extends ProviderClass {
`Necesitas ayuda: https://link.codigoencasa.com/DISCORD`,
],
})
venomGenerateImage(qr)
await venomGenerateImage(qr)
}
/**

View File

@@ -1,4 +1,5 @@
const { writeFile } = require('fs')
const combineImage = require('combine-image')
const venomCleanNumber = (number, full = false) => {
number = number.replace('@c.us', '')
@@ -6,7 +7,8 @@ const venomCleanNumber = (number, full = false) => {
return number
}
const venomGenerateImage = (base) => {
const venomGenerateImage = async (base) => {
const PATH_QR = `${process.cwd()}/qr.png`
const matches = base.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/)
if (matches.length !== 3) {
return new Error('Invalid input string')
@@ -16,16 +18,21 @@ const venomGenerateImage = (base) => {
response.type = matches[1]
response.data = new Buffer.from(matches[2], 'base64')
var imageBuffer = response
writeFile(
`${process.cwd()}/qr.png`,
imageBuffer['data'],
'binary',
(err) => {
if (err != null) throw new Error('ERROR_QR_GENERATE')
return
}
)
const writeFilePromise = () =>
new Promise((resolve, reject) => {
writeFile(PATH_QR, response['data'], 'binary', (err) => {
if (err != null) reject('ERROR_QR_GENERATE')
resolve(true)
})
})
await writeFilePromise()
const cleanImage = await combineImage([PATH_QR], {
margin: 15,
color: 0xffffffff,
})
cleanImage.write(PATH_QR)
}
const venomisValidNumber = (rawNumber) => {

View File

@@ -57,7 +57,7 @@ class WebWhatsappProvider extends ProviderClass {
},
{
event: 'qr',
func: (qr) => {
func: async (qr) => {
this.emit('require_action', {
instructions: [
`Debes escanear el QR Code para iniciar session reivsa qr.png`,
@@ -65,7 +65,7 @@ class WebWhatsappProvider extends ProviderClass {
`Necesitas ayuda: https://link.codigoencasa.com/DISCORD`,
],
})
wwebGenerateImage(qr)
await wwebGenerateImage(qr)
},
},
{

View File

@@ -1,4 +1,5 @@
const { createWriteStream } = require('fs')
const combineImage = require('combine-image')
const qr = require('qr-image')
const { tmpdir } = require('os')
const http = require('http')
@@ -10,9 +11,24 @@ const wwebCleanNumber = (number, full = false) => {
return number
}
const wwebGenerateImage = (base64) => {
const wwebGenerateImage = async (base64) => {
const PATH_QR = `${process.cwd()}/qr.png`
let qr_svg = qr.image(base64, { type: 'png', margin: 4 })
qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.png`))
const writeFilePromise = () =>
new Promise((resolve, reject) => {
const file = qr_svg.pipe(createWriteStream(PATH_QR))
file.on('finish', () => resolve(true))
file.on('error', reject)
})
await writeFilePromise()
const cleanImage = await combineImage([PATH_QR], {
margin: 15,
color: 0xffffffff,
})
cleanImage.write(PATH_QR)
}
const wwebIsValidNumber = (rawNumber) => {

660
yarn.lock

File diff suppressed because it is too large Load Diff