diff --git a/.github/workflows/check-providers.yml b/.github/workflows/check-providers.yml
new file mode 100644
index 0000000..412fdfc
--- /dev/null
+++ b/.github/workflows/check-providers.yml
@@ -0,0 +1,48 @@
+name: Rev Providers
+
+on:
+ push:
+ branches:
+ - dev
+ pull_request:
+ branches:
+ - dev
+
+jobs:
+ check-npm:
+ name: Install Dependencies
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 16.x
+ cache: 'yarn'
+ registry-url: https://registry.npmjs.org/
+
+ - run: corepack enable
+
+ - name: Install NPM Dependencies
+ run: yarn install --immutable --network-timeout 300000
+
+ - name: Check Baileys
+ run: yarn node ./scripts/checker.js baileys
+
+ - name: Check Venom
+ run: yarn node ./scripts/checker.js venom
+
+ - name: Check web-whatsapp
+ run: yarn node ./scripts/checker.js web-whatsapp
+
+ - name: Check Meta
+ run: yarn node ./scripts/checker.js meta
+
+ - name: Check Twilio
+ run: yarn node ./scripts/checker.js twilio
+
+ - uses: stefanzweifel/git-auto-commit-action@v4
+ with:
+ commit_message: 'ci(providers): updated versions providers'
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f3c2553..82f5ff0 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,4 +1,4 @@
-name: 馃お Build and Test
+name: Build and Test
on:
push:
diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml
index a302035..5a6d3ef 100644
--- a/.github/workflows/contributors.yml
+++ b/.github/workflows/contributors.yml
@@ -1,4 +1,4 @@
-name: 馃檶 Revisando Colaboradores
+name: Revisando Colaboradores
on:
pull_request:
branches:
diff --git a/README.md b/README.md
index e0f6488..100c869 100644
--- a/README.md
+++ b/README.md
@@ -4,11 +4,12 @@
[](https://github.com/codigoencasa/bot-whatsapp/actions/workflows/releases.yml)
-
-

+
+
+
-**Con esta librer铆a, puedes construir flujos automatizados de conversaci贸n de manera agn贸stica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada,聽y hacer un seguimiento de las interacciones con los clientes.聽 Adem谩s, puedes configurar f谩cilmente disparadores que te ayudaran a expandir las funcionalidades sin l铆mites.
+**Con esta librer铆a, puedes construir flujos automatizados de conversaci贸n de manera agn贸stica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada,聽y hacer un seguimiento de las interacciones con los clientes.聽 Adem谩s, puedes configurar f谩cilmente disparadores que te ayudaran a expandir las funcionalidades sin l铆mites. **[Ver m谩s informacion](https://bot-whatsapp.netlify.app/)**
## Comenzar
@@ -25,12 +26,13 @@ Entiende m谩s a fondo sus funcionalidades explicadas en nuestra documentaci贸n.
## Recursos
- [馃搫 Documentaci贸n](https://bot-whatsapp.netlify.app/)
- [馃殌 Roadmap](https://github.com/orgs/codigoencasa/projects/1)
-- [馃捇 Discord](https://link.codigoencasa.com/DISCORD)
-- [馃憣 Twitter](https://twitter.com/leifermendez)
-- [馃帴 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
+- [馃捇 Discord](https://link.codigoencasa.com/DISCORD)
+- [馃憣 Twitter](https://twitter.com/leifermendez)
+- [馃帴 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
## Comunidad
+
diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js
index 89ee601..a0a4034 100644
--- a/packages/cli/interactive/index.js
+++ b/packages/cli/interactive/index.js
@@ -34,7 +34,7 @@ const startInteractive = async () => {
choices: [
{ title: 'whatsapp-web.js (gratis)', value: 'wweb' },
{ title: 'Venom (gratis)', value: 'venom' },
- { title: 'Baileys (gratis)', value: 'bailey' },
+ { title: 'Baileys (gratis)', value: 'baileys' },
{ title: 'Twilio', value: 'twilio' },
{ title: 'API Oficial (Meta)', value: 'meta' },
],
diff --git a/packages/docs/src/routes/docs/install/index.mdx b/packages/docs/src/routes/docs/install/index.mdx
index cf23f33..c83e867 100644
--- a/packages/docs/src/routes/docs/install/index.mdx
+++ b/packages/docs/src/routes/docs/install/index.mdx
@@ -7,10 +7,13 @@ A continuaci贸n se describen los puntos t茅cnicos que debes de tener en cuenta a
- Node v16 o superior **[descargar node](https://nodejs.org/es/download/)**
## 驴Como instalar Node en Windows?
+
https://youtu.be/xRXHQlqA3Ak?t=376
## 驴Como instalar Node en Ubuntu?
+
Te comparto un recurso de **[Digital Ocean](https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-es)** donde explica como instalar node en Ubuntu.
+
## 驴Como saber que tengo el Node?
Solo debes ejecutar el siguiente comando y esperar que la versi贸n que te arroja sea superior a v16
diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js
index 0ecd18c..90d63a7 100644
--- a/packages/provider/src/baileys/index.js
+++ b/packages/provider/src/baileys/index.js
@@ -1,13 +1,16 @@
const { ProviderClass } = require('@bot-whatsapp/bot')
const { Sticker } = require('wa-sticker-formatter')
const pino = require('pino')
+const rimraf = require('rimraf')
const mime = require('mime-types')
+const { join } = require('path')
const { existsSync, createWriteStream } = require('fs')
const { Console } = require('console')
const {
default: makeWASocket,
useMultiFileAuthState,
+ Browsers,
DisconnectReason,
} = require('@adiwajshing/baileys')
const {
@@ -21,6 +24,9 @@ const logger = new Console({
stdout: createWriteStream(`${process.cwd()}/baileys.log`),
})
+const NAME_DIR_SESSION = `sessions`
+const PATH_BASE = join(process.cwd(), NAME_DIR_SESSION)
+
/**
* 鈿欙笍 BaileysProvider: Es una clase tipo adaptor
* que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas)
@@ -38,28 +44,35 @@ class BaileysProvider extends ProviderClass {
* Iniciar todo Bailey
*/
initBailey = async () => {
- const { state, saveCreds } = await useMultiFileAuthState('sessions')
+ const { state, saveCreds } = await useMultiFileAuthState(
+ NAME_DIR_SESSION
+ )
this.saveCredsGlobal = saveCreds
try {
const sock = makeWASocket({
printQRInTerminal: false,
auth: state,
+ browser: Browsers.macOS('Desktop'),
+ syncFullHistory: false,
logger: pino({ level: 'error' }),
})
sock.ev.on('connection.update', async (update) => {
const { connection, lastDisconnect, qr } = update
- if (connection === 'close') {
- const shouldReconnect =
- lastDisconnect?.error?.output?.statusCode !==
- DisconnectReason.loggedOut
+ const statusCode = lastDisconnect?.error?.output?.statusCode
- if (shouldReconnect) {
- await saveCreds()
- this.initBailey()
- }
+ if (statusCode === DisconnectReason.loggedOut) {
+ rimraf(PATH_BASE, (err) => {
+ if (err) return
+ })
+
+ this.initBailey()
+ }
+
+ if (statusCode && statusCode !== DisconnectReason.loggedOut) {
+ this.initBailey()
}
if (qr) {
diff --git a/packages/provider/src/baileys/package.json b/packages/provider/src/baileys/package.json
new file mode 100644
index 0000000..4326d59
--- /dev/null
+++ b/packages/provider/src/baileys/package.json
@@ -0,0 +1,7 @@
+{
+ "dependencies": {
+ "@adiwajshing/baileys": "5.0.0",
+ "mime-types": "2.1.35",
+ "wa-sticker-formatter": "4.3.2"
+ }
+}
diff --git a/packages/provider/src/meta/package.json b/packages/provider/src/meta/package.json
new file mode 100644
index 0000000..92a4250
--- /dev/null
+++ b/packages/provider/src/meta/package.json
@@ -0,0 +1,3 @@
+{
+ "dependencies": {}
+}
diff --git a/packages/provider/src/twilio/package.json b/packages/provider/src/twilio/package.json
new file mode 100644
index 0000000..dd0a9bf
--- /dev/null
+++ b/packages/provider/src/twilio/package.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "twilio": "3.84.0"
+ }
+}
diff --git a/packages/provider/src/venom/package.json b/packages/provider/src/venom/package.json
new file mode 100644
index 0000000..6735c52
--- /dev/null
+++ b/packages/provider/src/venom/package.json
@@ -0,0 +1,6 @@
+{
+ "dependencies": {
+ "venom-bot": "4.3.7",
+ "mime-types": "2.1.35"
+ }
+}
diff --git a/packages/provider/src/web-whatsapp/package.json b/packages/provider/src/web-whatsapp/package.json
new file mode 100644
index 0000000..7514818
--- /dev/null
+++ b/packages/provider/src/web-whatsapp/package.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "whatsapp-web.js": "1.18.4"
+ }
+}
diff --git a/scripts/checker.js b/scripts/checker.js
new file mode 100644
index 0000000..26f3e41
--- /dev/null
+++ b/scripts/checker.js
@@ -0,0 +1,131 @@
+const { execFile } = require('node:child_process')
+const { readFileSync, writeFileSync, readdirSync } = require('node:fs')
+const { join } = require('path')
+const process = require('node:process')
+const util = require('node:util')
+const semver = require('semver')
+
+const cmd = util.promisify(execFile)
+const OS_ENVIROMENT_WIN = process.platform.includes('win32')
+
+const PATH_PACKAGES = join(__dirname, '..', `packages`)
+const PATH_STARTERS = join(__dirname, '..', `starters`, `apps`)
+const NPM_COMMAND = OS_ENVIROMENT_WIN ? 'npm.cmd' : 'npm'
+const [PKG_NAME] = process.argv.slice(2) || [null]
+
+/**
+ * Revisar ultima version de una paquetes
+ * @param {*} pkgName
+ */
+const checkPkg = async (pkgName = '') => {
+ const { stdout } = await cmd(
+ NPM_COMMAND,
+ ['show', `${pkgName}`, 'version'],
+ {
+ stdio: 'inherit',
+ }
+ )
+
+ return stdout.trim().replace('\n', '')
+}
+
+/**
+ * Revisar todas las dependencias del provider
+ * @param {*} provider
+ * @returns
+ */
+const checkEveryProvider = async (provider = '') => {
+ const pkgDependencies = readFileSync(
+ join(PATH_PACKAGES, 'provider', 'src', provider, 'package.json')
+ )
+ try {
+ const { dependencies } = JSON.parse(pkgDependencies)
+ const devParse = Object.entries(dependencies)
+ const newDevParse = {}
+ for (const [pkgName] of devParse) {
+ const lastVersion = await checkPkg(pkgName)
+ newDevParse[pkgName] = lastVersion
+ }
+ return newDevParse
+ } catch (e) {
+ console.log(e)
+ return {}
+ }
+}
+
+/**
+ * Actualizar depedencias con nuevas versiones
+ * @param {*} provider
+ * @param {*} list
+ * @returns
+ */
+const updateDependencies = async (provider = '', list = {}) => {
+ const pathProvider = join(
+ PATH_PACKAGES,
+ 'provider',
+ 'src',
+ provider,
+ 'package.json'
+ )
+
+ try {
+ const pkgDependencies = readFileSync(pathProvider)
+ const { dependencies } = JSON.parse(pkgDependencies)
+ writeFileSync(
+ pathProvider,
+ JSON.stringify(
+ { dependencies: { ...dependencies, ...list } },
+ null,
+ 2
+ )
+ )
+ } catch (e) {
+ console.log(e)
+ return {}
+ }
+}
+
+/**
+ * Actualizar starters
+ * @param {*} provider
+ * @returns
+ */
+const updateStarters = async (provider = '', updateDev = {}) => {
+ provider = provider === 'web-whatsapp' ? 'wweb' : provider
+ const allStarters = readdirSync(PATH_STARTERS).filter((n) =>
+ n.includes(provider)
+ )
+
+ try {
+ for (const base of allStarters) {
+ const pkgDependenciesBase = readFileSync(
+ join(PATH_STARTERS, base, 'package.json')
+ )
+ const pkgBase = JSON.parse(pkgDependenciesBase)
+ writeFileSync(
+ join(PATH_STARTERS, base, 'package.json'),
+ JSON.stringify(
+ {
+ ...pkgBase,
+ dependencies: { ...pkgBase.dependencies, ...updateDev },
+ },
+ null,
+ 2
+ )
+ )
+ }
+ } catch (e) {
+ console.log(e)
+ return
+ }
+}
+
+const main = async () => {
+ if (PKG_NAME) {
+ const list = await checkEveryProvider(PKG_NAME)
+ await updateDependencies(PKG_NAME, list)
+ await updateStarters(PKG_NAME, list)
+ }
+}
+
+main()
diff --git a/starters/apps/base-bailey-memory/README.md b/starters/apps/base-baileys-memory/README.md
similarity index 100%
rename from starters/apps/base-bailey-memory/README.md
rename to starters/apps/base-baileys-memory/README.md
diff --git a/starters/apps/base-bailey-memory/app.js b/starters/apps/base-baileys-memory/app.js
similarity index 100%
rename from starters/apps/base-bailey-memory/app.js
rename to starters/apps/base-baileys-memory/app.js
diff --git a/starters/apps/base-bailey-memory/package.json b/starters/apps/base-baileys-memory/package.json
similarity index 69%
rename from starters/apps/base-bailey-memory/package.json
rename to starters/apps/base-baileys-memory/package.json
index 9d9bb38..e27fef1 100644
--- a/starters/apps/base-bailey-memory/package.json
+++ b/starters/apps/base-baileys-memory/package.json
@@ -4,7 +4,7 @@
"description": "",
"main": "app.js",
"scripts": {
- "pre-copy": "cd .. && yarn run copy.lib base-bailey-memory",
+ "pre-copy": "cd .. && yarn run copy.lib base-baileys-memory",
"start": "node app.js"
},
"keywords": [],
@@ -13,9 +13,9 @@
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
"@bot-whatsapp/provider": "latest",
- "@adiwajshing/baileys": "^4.4.0",
- "mime-types": "^2.1.35",
- "wa-sticker-formatter": "^4.3.2"
+ "@adiwajshing/baileys": "5.0.0",
+ "mime-types": "2.1.35",
+ "wa-sticker-formatter": "4.3.2"
},
"author": "",
"license": "ISC"
diff --git a/starters/apps/base-bailey-mongo/README.md b/starters/apps/base-baileys-mongo/README.md
similarity index 100%
rename from starters/apps/base-bailey-mongo/README.md
rename to starters/apps/base-baileys-mongo/README.md
diff --git a/starters/apps/base-bailey-mongo/app.js b/starters/apps/base-baileys-mongo/app.js
similarity index 100%
rename from starters/apps/base-bailey-mongo/app.js
rename to starters/apps/base-baileys-mongo/app.js
diff --git a/starters/apps/base-bailey-mongo/package.json b/starters/apps/base-baileys-mongo/package.json
similarity index 71%
rename from starters/apps/base-bailey-mongo/package.json
rename to starters/apps/base-baileys-mongo/package.json
index d154742..2b4e0f7 100644
--- a/starters/apps/base-bailey-mongo/package.json
+++ b/starters/apps/base-baileys-mongo/package.json
@@ -4,7 +4,7 @@
"description": "",
"main": "app.js",
"scripts": {
- "pre-copy": "cd .. && yarn run copy.lib base-bailey-mongo",
+ "pre-copy": "cd .. && yarn run copy.lib base-baileys-mongo",
"start": "node app.js"
},
"keywords": [],
@@ -13,10 +13,10 @@
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
"@bot-whatsapp/provider": "latest",
- "@adiwajshing/baileys": "^4.4.0",
- "mime-types": "^2.1.35",
+ "@adiwajshing/baileys": "5.0.0",
+ "mime-types": "2.1.35",
"mongodb": "^4.12.1",
- "wa-sticker-formatter": "^4.3.2"
+ "wa-sticker-formatter": "4.3.2"
},
"author": "",
"license": "ISC"
diff --git a/starters/apps/base-bailey-mysql/README.md b/starters/apps/base-baileys-mysql/README.md
similarity index 100%
rename from starters/apps/base-bailey-mysql/README.md
rename to starters/apps/base-baileys-mysql/README.md
diff --git a/starters/apps/base-bailey-mysql/app.js b/starters/apps/base-baileys-mysql/app.js
similarity index 100%
rename from starters/apps/base-bailey-mysql/app.js
rename to starters/apps/base-baileys-mysql/app.js
diff --git a/starters/apps/base-bailey-mysql/package.json b/starters/apps/base-baileys-mysql/package.json
similarity index 71%
rename from starters/apps/base-bailey-mysql/package.json
rename to starters/apps/base-baileys-mysql/package.json
index 337ea1a..2d1684f 100644
--- a/starters/apps/base-bailey-mysql/package.json
+++ b/starters/apps/base-baileys-mysql/package.json
@@ -4,7 +4,7 @@
"description": "",
"main": "app.js",
"scripts": {
- "pre-copy": "cd .. && yarn run copy.lib base-bailey-mysql",
+ "pre-copy": "cd .. && yarn run copy.lib base-baileys-mysql",
"start": "node app.js"
},
"keywords": [],
@@ -13,10 +13,10 @@
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
"@bot-whatsapp/provider": "latest",
- "@adiwajshing/baileys": "^4.4.0",
- "mime-types": "^2.1.35",
+ "@adiwajshing/baileys": "5.0.0",
+ "mime-types": "2.1.35",
"mysql2": "^2.3.3",
- "wa-sticker-formatter": "^4.3.2"
+ "wa-sticker-formatter": "4.3.2"
},
"author": "",
"license": "ISC"
diff --git a/starters/apps/base-twilio-memory/package.json b/starters/apps/base-twilio-memory/package.json
index 572ca88..e71ca5a 100644
--- a/starters/apps/base-twilio-memory/package.json
+++ b/starters/apps/base-twilio-memory/package.json
@@ -11,7 +11,7 @@
"dependencies": {
"body-parser": "^1.20.1",
"polka": "^0.5.2",
- "twilio": "^3.83.4",
+ "twilio": "3.84.0",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
diff --git a/starters/apps/base-twilio-mongo/package.json b/starters/apps/base-twilio-mongo/package.json
index c8ead10..4a8c063 100644
--- a/starters/apps/base-twilio-mongo/package.json
+++ b/starters/apps/base-twilio-mongo/package.json
@@ -11,7 +11,7 @@
"dependencies": {
"body-parser": "^1.20.1",
"polka": "^0.5.2",
- "twilio": "^3.83.4",
+ "twilio": "3.84.0",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
diff --git a/starters/apps/base-twilio-mysql/package.json b/starters/apps/base-twilio-mysql/package.json
index 1f5e5d0..d4c4d37 100644
--- a/starters/apps/base-twilio-mysql/package.json
+++ b/starters/apps/base-twilio-mysql/package.json
@@ -11,7 +11,7 @@
"dependencies": {
"body-parser": "^1.20.1",
"polka": "^0.5.2",
- "twilio": "^3.83.4",
+ "twilio": "3.84.0",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
diff --git a/starters/apps/base-venom-memory/package.json b/starters/apps/base-venom-memory/package.json
index c72298a..dfe5408 100644
--- a/starters/apps/base-venom-memory/package.json
+++ b/starters/apps/base-venom-memory/package.json
@@ -9,11 +9,12 @@
},
"keywords": [],
"dependencies": {
- "venom-bot": "^4.3.7",
+ "venom-bot": "4.3.7",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
- "@bot-whatsapp/provider": "latest"
+ "@bot-whatsapp/provider": "latest",
+ "mime-types": "2.1.35"
},
"author": "",
"license": "ISC"
diff --git a/starters/apps/base-venom-mongo/package.json b/starters/apps/base-venom-mongo/package.json
index 6586c9f..3b46613 100644
--- a/starters/apps/base-venom-mongo/package.json
+++ b/starters/apps/base-venom-mongo/package.json
@@ -9,12 +9,12 @@
},
"keywords": [],
"dependencies": {
- "venom-bot": "^4.3.7",
+ "venom-bot": "4.3.7",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
"@bot-whatsapp/provider": "latest",
- "mime-types": "^2.1.35",
+ "mime-types": "2.1.35",
"mongodb": "^4.12.1"
},
"author": "",
diff --git a/starters/apps/base-venom-mysql/package.json b/starters/apps/base-venom-mysql/package.json
index c549d12..670fd00 100644
--- a/starters/apps/base-venom-mysql/package.json
+++ b/starters/apps/base-venom-mysql/package.json
@@ -9,12 +9,13 @@
},
"keywords": [],
"dependencies": {
- "venom-bot": "^4.3.7",
+ "venom-bot": "4.3.7",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
"@bot-whatsapp/provider": "latest",
- "mysql2": "^2.3.3"
+ "mysql2": "^2.3.3",
+ "mime-types": "2.1.35"
},
"author": "",
"license": "ISC"
diff --git a/starters/apps/base-wweb-memory/package.json b/starters/apps/base-wweb-memory/package.json
index 0168dff..fbf9400 100644
--- a/starters/apps/base-wweb-memory/package.json
+++ b/starters/apps/base-wweb-memory/package.json
@@ -9,11 +9,11 @@
},
"keywords": [],
"dependencies": {
- "whatsapp-web.js": "^1.18.4",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
- "@bot-whatsapp/provider": "latest"
+ "@bot-whatsapp/provider": "latest",
+ "whatsapp-web.js": "1.18.4"
},
"author": "",
"license": "ISC"
diff --git a/starters/apps/base-wweb-mongo/package.json b/starters/apps/base-wweb-mongo/package.json
index ea6aae1..c58767a 100644
--- a/starters/apps/base-wweb-mongo/package.json
+++ b/starters/apps/base-wweb-mongo/package.json
@@ -9,7 +9,7 @@
},
"keywords": [],
"dependencies": {
- "whatsapp-web.js": "^1.18.4",
+ "whatsapp-web.js": "1.18.4",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
diff --git a/starters/apps/base-wweb-mysql/package.json b/starters/apps/base-wweb-mysql/package.json
index b09f470..b1c44ff 100644
--- a/starters/apps/base-wweb-mysql/package.json
+++ b/starters/apps/base-wweb-mysql/package.json
@@ -9,7 +9,7 @@
},
"keywords": [],
"dependencies": {
- "whatsapp-web.js": "^1.18.4",
+ "whatsapp-web.js": "1.18.4",
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",