bot-mwsm 3.0.4 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/Mwsm.yml +20 -57
- package/Dockerfile +95 -37
- package/README.md +10 -18
- package/bash/mwsm.sh +270 -142
- package/bash/setup.sh +47 -27
- package/mwsm.db +0 -0
- package/mwsm.js +464 -424
- package/package.json +6 -5
- package/version.json +2 -2
|
@@ -22,6 +22,7 @@ on:
|
|
|
22
22
|
- "style.css"
|
|
23
23
|
- "version.json"
|
|
24
24
|
- "mwsm.py"
|
|
25
|
+
- "Dockerfile"
|
|
25
26
|
release:
|
|
26
27
|
types: [published, edited]
|
|
27
28
|
workflow_dispatch:
|
|
@@ -33,7 +34,6 @@ concurrency:
|
|
|
33
34
|
jobs:
|
|
34
35
|
sync:
|
|
35
36
|
runs-on: ubuntu-latest
|
|
36
|
-
# evita loops criados pelo próprio bot
|
|
37
37
|
if: ${{ !startsWith(github.event.head_commit.message, '🔄 Bot-Mwsm') }}
|
|
38
38
|
|
|
39
39
|
steps:
|
|
@@ -54,21 +54,27 @@ jobs:
|
|
|
54
54
|
echo "📂 Verificando arquivos modificados..."
|
|
55
55
|
git fetch origin main --no-tags
|
|
56
56
|
|
|
57
|
-
# lidar com repositório com apenas 1 commit ou em runners onde HEAD^ pode não existir
|
|
58
57
|
if git rev-parse --verify HEAD^ >/dev/null 2>&1; then
|
|
59
58
|
CHANGED_FILES=$(git diff --name-only HEAD^ HEAD || echo "")
|
|
60
59
|
else
|
|
61
|
-
# fallback: usa a lista de arquivos do último commit
|
|
62
60
|
CHANGED_FILES=$(git diff --name-only HEAD || git ls-files)
|
|
63
61
|
fi
|
|
64
62
|
|
|
65
63
|
echo "$CHANGED_FILES"
|
|
64
|
+
|
|
65
|
+
# Detectar alterações no DB e no Dockerfile
|
|
66
66
|
if echo "$CHANGED_FILES" | grep -q "mwsm.db"; then
|
|
67
67
|
echo "DB_CHANGED=true" >> "$GITHUB_OUTPUT"
|
|
68
68
|
else
|
|
69
69
|
echo "DB_CHANGED=false" >> "$GITHUB_OUTPUT"
|
|
70
70
|
fi
|
|
71
71
|
|
|
72
|
+
if echo "$CHANGED_FILES" | grep -q "Dockerfile"; then
|
|
73
|
+
echo "DOCKERFILE_CHANGED=true" >> "$GITHUB_OUTPUT"
|
|
74
|
+
else
|
|
75
|
+
echo "DOCKERFILE_CHANGED=false" >> "$GITHUB_OUTPUT"
|
|
76
|
+
fi
|
|
77
|
+
|
|
72
78
|
- name: 🔢 Atualizar version.json e package.json (sincroniza com último release e calcula incremento)
|
|
73
79
|
id: version
|
|
74
80
|
env:
|
|
@@ -120,7 +126,6 @@ jobs:
|
|
|
120
126
|
jq --arg v "$NEW_VER" --arg d "$PATCH" \
|
|
121
127
|
'.version[0].release=$v | .version[0].patch=$d' version.json > version.tmp && mv version.tmp version.json
|
|
122
128
|
|
|
123
|
-
# normaliza o package.json: força name para 'bot-mwsm' (resolverá o 403 do npm por case)
|
|
124
129
|
jq --arg v "$NEW_VER" --arg name "bot-mwsm" \
|
|
125
130
|
'.version=$v | .name=$name' package.json > package.tmp && mv package.tmp package.json
|
|
126
131
|
|
|
@@ -146,7 +151,6 @@ jobs:
|
|
|
146
151
|
git config --global user.name "Bot-Mwsm 🤖"
|
|
147
152
|
git config --global user.email "143403919+MKCodec@users.noreply.github.com"
|
|
148
153
|
git config --global commit.gpgsign false
|
|
149
|
-
|
|
150
154
|
git add README.md package.json version.json || true
|
|
151
155
|
|
|
152
156
|
if git diff --cached --quiet; then
|
|
@@ -172,83 +176,43 @@ jobs:
|
|
|
172
176
|
|
|
173
177
|
- name: 🧩 Verificar autenticação NPM (OIDC ping)
|
|
174
178
|
run: |
|
|
175
|
-
set -e
|
|
176
|
-
echo "🔍 Verificando conectividade com registry (OIDC test via npm ping)..."
|
|
177
179
|
if npm ping >/dev/null 2>&1; then
|
|
178
|
-
echo "✅ npm ping ok (pode usar OIDC
|
|
180
|
+
echo "✅ npm ping ok (pode usar OIDC)."
|
|
179
181
|
else
|
|
180
|
-
echo "⚠️ npm ping falhou —
|
|
181
|
-
# não falha aqui; deixamos o publish tentar e fallback por token cuidar do resto
|
|
182
|
+
echo "⚠️ npm ping falhou — tentativa continuará mesmo assim."
|
|
182
183
|
fi
|
|
183
184
|
|
|
184
|
-
- name: ⚙️ Setup Node
|
|
185
|
+
- name: ⚙️ Setup Node
|
|
185
186
|
uses: actions/setup-node@v4
|
|
186
187
|
with:
|
|
187
188
|
node-version: '20'
|
|
188
189
|
registry-url: 'https://registry.npmjs.org'
|
|
189
190
|
|
|
190
|
-
- name:
|
|
191
|
-
run: |
|
|
192
|
-
node --version
|
|
193
|
-
npm --version
|
|
194
|
-
echo "package.json version:" $(jq -r .version package.json)
|
|
195
|
-
echo "version.json release:" $(jq -r '.version[0].release // .version' version.json)
|
|
196
|
-
|
|
197
|
-
- name: 📦 Publicar no NPM (Trusted Publisher - OIDC)
|
|
191
|
+
- name: 📦 Publicar no NPM (Trusted Publisher)
|
|
198
192
|
id: publish_oidc
|
|
199
193
|
continue-on-error: true
|
|
200
194
|
run: |
|
|
201
|
-
set -e
|
|
202
|
-
echo "📦 Tentando publicar via OIDC (Trusted Publisher)..."
|
|
203
195
|
VERSION=$(jq -r '.version[0].release // .version' version.json)
|
|
204
|
-
# já normalizamos name e version no passo anterior
|
|
205
196
|
jq --arg v "$VERSION" '.version=$v' package.json > package.tmp && mv package.tmp package.json
|
|
206
|
-
|
|
207
|
-
# instalar dependências caso necessário para build (não deve afetar publish)
|
|
208
197
|
npm ci --no-audit --no-fund || true
|
|
209
|
-
|
|
210
198
|
PUBLISHED=$(npm view bot-mwsm version 2>/dev/null || echo "")
|
|
211
199
|
if [ "$PUBLISHED" = "$VERSION" ]; then
|
|
212
|
-
echo "⚠️ Versão $VERSION já
|
|
200
|
+
echo "⚠️ Versão $VERSION já publicada — pulando."
|
|
213
201
|
exit 0
|
|
214
202
|
fi
|
|
215
|
-
|
|
216
|
-
# publish: se trusted publisher estiver configurado no npm, o runner usará OIDC
|
|
217
203
|
npm publish --provenance --access public
|
|
218
204
|
|
|
219
|
-
- name: 📦 Fallback publish via NPM_TOKEN
|
|
205
|
+
- name: 📦 Fallback publish via NPM_TOKEN
|
|
220
206
|
if: ${{ steps.publish_oidc.outcome == 'failure' }}
|
|
221
207
|
env:
|
|
222
208
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
223
209
|
run: |
|
|
224
|
-
set -e
|
|
225
|
-
echo "⚠️ Publicação via OIDC falhou — tentando fallback com NPM_TOKEN..."
|
|
226
|
-
VERSION=$(jq -r '.version[0].release // .version' version.json)
|
|
227
|
-
|
|
228
|
-
if [ -z "${NPM_TOKEN:-}" ]; then
|
|
229
|
-
echo "❌ NPM_TOKEN não encontrado nas secrets. Aborting."
|
|
230
|
-
exit 1
|
|
231
|
-
fi
|
|
232
|
-
|
|
233
|
-
# configura token para registry
|
|
234
210
|
npm config set //registry.npmjs.org/:_authToken "${NPM_TOKEN}"
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
PUBLISHED=$(npm view bot-mwsm version 2>/dev/null || echo "")
|
|
238
|
-
if [ "$PUBLISHED" = "$VERSION" ]; then
|
|
239
|
-
echo "⚠️ Versão $VERSION já publicada (detected after fallback check) — nada a fazer."
|
|
240
|
-
exit 0
|
|
241
|
-
fi
|
|
242
|
-
|
|
243
|
-
echo "🔁 Publicando versão $VERSION via token..."
|
|
244
|
-
npm publish --access public || {
|
|
245
|
-
echo "❌ Falha total no publish, mesmo com fallback."
|
|
246
|
-
exit 1
|
|
247
|
-
}
|
|
248
|
-
echo "✅ Publicação via token concluída com sucesso!"
|
|
211
|
+
VERSION=$(jq -r '.version[0].release // .version' version.json)
|
|
212
|
+
npm publish --access public
|
|
249
213
|
|
|
250
214
|
- name: 🐋 Build & Push Docker Image
|
|
251
|
-
if: steps.detect.outputs.DB_CHANGED == 'true'
|
|
215
|
+
if: steps.detect.outputs.DB_CHANGED == 'true' || steps.detect.outputs.DOCKERFILE_CHANGED == 'true'
|
|
252
216
|
env:
|
|
253
217
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
254
218
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
@@ -259,16 +223,15 @@ jobs:
|
|
|
259
223
|
VERSION="${{ steps.version.outputs.version }}"
|
|
260
224
|
IMAGE="${DOCKERHUB_USERNAME}/mwsm"
|
|
261
225
|
|
|
262
|
-
echo "🔐 Fazendo login no Docker Hub..."
|
|
263
226
|
echo "${DOCKERHUB_TOKEN}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin
|
|
264
227
|
|
|
265
|
-
echo "🏗️ Construindo imagem ${IMAGE}:${VERSION}..."
|
|
266
228
|
docker buildx create --use --name builder || true
|
|
267
229
|
docker buildx build --platform linux/amd64 \
|
|
268
230
|
-t "${IMAGE}:${VERSION}" \
|
|
269
231
|
-t "${IMAGE}:latest" \
|
|
232
|
+
-f Dockerfile \
|
|
270
233
|
--push .
|
|
271
234
|
|
|
272
|
-
echo "✅
|
|
235
|
+
echo "✅ Docker atualizado com sucesso:"
|
|
273
236
|
echo " 🔹 ${IMAGE}:${VERSION}"
|
|
274
237
|
echo " 🔹 ${IMAGE}:latest"
|
package/Dockerfile
CHANGED
|
@@ -1,42 +1,100 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
FROM node:20-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
# =========================
|
|
2
|
+
# 🧱 Etapa 1: Builder
|
|
3
|
+
# =========================
|
|
4
|
+
FROM node:20.19.1-bookworm-slim AS builder
|
|
5
|
+
|
|
6
|
+
WORKDIR /var/api/Mwsm
|
|
7
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
|
8
|
+
ENV TZ=America/Sao_Paulo
|
|
9
|
+
|
|
10
|
+
# -----------------------------------------------------------------
|
|
11
|
+
# Instala dependências essenciais + Rust (necessário p/ tokenizers)
|
|
12
|
+
# -----------------------------------------------------------------
|
|
13
|
+
RUN apt-get update && apt-get upgrade -y && \
|
|
14
|
+
apt-get install -y \
|
|
15
|
+
git curl wget unzip build-essential pkg-config \
|
|
16
|
+
python3 python3-dev python3-pip python3-venv \
|
|
17
|
+
rustc cargo \
|
|
18
|
+
chromium chromium-driver \
|
|
19
|
+
sqlite3 jq ca-certificates openssl lsb-release \
|
|
20
|
+
fonts-dejavu fonts-liberation fontconfig locales \
|
|
21
|
+
libgomp1 libopenblas-dev liblapack-dev \
|
|
22
|
+
libxshmfence1 libgbm1 libxkbcommon0 libdrm2 \
|
|
23
|
+
libasound2 libpulse0 \
|
|
24
|
+
libcairo2 libpango1.0-0 libpangocairo-1.0-0 \
|
|
25
|
+
libappindicator3-1 libatk-bridge2.0-0 libatk1.0-0 \
|
|
26
|
+
libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \
|
|
27
|
+
libxcursor1 libxdamage1 libxext6 libxfixes3 \
|
|
28
|
+
libxi6 libxrandr2 libxrender1 libxss1 libxtst6 xdg-utils dbus \
|
|
29
|
+
&& locale-gen pt_BR.UTF-8 && \
|
|
30
|
+
rm -rf /var/lib/apt/lists/*
|
|
31
|
+
|
|
32
|
+
ENV LANG=pt_BR.UTF-8
|
|
33
|
+
ENV LC_ALL=pt_BR.UTF-8
|
|
34
|
+
|
|
35
|
+
# -----------------------------------------------------------------
|
|
36
|
+
# Clone do repositório (raso)
|
|
37
|
+
# -----------------------------------------------------------------
|
|
38
|
+
RUN git clone --depth 1 https://github.com/MKCodec/Mwsm.git .
|
|
39
|
+
|
|
40
|
+
# -----------------------------------------------------------------
|
|
41
|
+
# Instala dependências Node.js (mantendo versões do package.json)
|
|
42
|
+
# -----------------------------------------------------------------
|
|
43
|
+
RUN npm install --no-audit --no-fund
|
|
44
|
+
|
|
45
|
+
# -----------------------------------------------------------------
|
|
46
|
+
# Ambiente virtual Python com versões fixas
|
|
47
|
+
# -----------------------------------------------------------------
|
|
48
|
+
RUN python3 -m venv /opt/venv && \
|
|
49
|
+
/opt/venv/bin/pip install --upgrade pip && \
|
|
50
|
+
/opt/venv/bin/pip install --no-cache-dir \
|
|
51
|
+
flask==2.2.5 \
|
|
52
|
+
sentence-transformers==2.2.2 \
|
|
53
|
+
huggingface_hub==0.10.1 \
|
|
54
|
+
torch torchvision \
|
|
55
|
+
--extra-index-url https://download.pytorch.org/whl/cpu
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# =========================
|
|
59
|
+
# 🚀 Etapa 2: Runtime
|
|
60
|
+
# =========================
|
|
61
|
+
FROM node:20.19.1-bookworm-slim
|
|
62
|
+
|
|
30
63
|
WORKDIR /var/api/Mwsm
|
|
64
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
|
65
|
+
ENV TZ=America/Sao_Paulo
|
|
66
|
+
ENV LANG=pt_BR.UTF-8
|
|
67
|
+
ENV LC_ALL=pt_BR.UTF-8
|
|
68
|
+
ENV PATH="/opt/venv/bin:$PATH"
|
|
31
69
|
|
|
32
|
-
#
|
|
33
|
-
|
|
70
|
+
# -----------------------------------------------------------------
|
|
71
|
+
# Instala dependências mínimas do runtime
|
|
72
|
+
# -----------------------------------------------------------------
|
|
73
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
74
|
+
python3 python3-venv chromium chromium-driver \
|
|
75
|
+
sqlite3 ca-certificates openssl fontconfig locales \
|
|
76
|
+
fonts-dejavu fonts-liberation \
|
|
77
|
+
libgomp1 libopenblas-dev liblapack-dev \
|
|
78
|
+
libxshmfence1 libgbm1 libxkbcommon0 libdrm2 \
|
|
79
|
+
libasound2 libpulse0 libcairo2 libpango1.0-0 \
|
|
80
|
+
libpangocairo-1.0-0 libappindicator3-1 libatk-bridge2.0-0 \
|
|
81
|
+
libatk1.0-0 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \
|
|
82
|
+
libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 \
|
|
83
|
+
libxrandr2 libxrender1 libxss1 libxtst6 xdg-utils dbus \
|
|
84
|
+
&& locale-gen pt_BR.UTF-8 && \
|
|
85
|
+
ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime && \
|
|
86
|
+
rm -rf /var/lib/apt/lists/*
|
|
34
87
|
|
|
35
|
-
#
|
|
36
|
-
|
|
88
|
+
# -----------------------------------------------------------------
|
|
89
|
+
# Copia ambiente Python e código do builder
|
|
90
|
+
# -----------------------------------------------------------------
|
|
91
|
+
COPY --from=builder /opt/venv /opt/venv
|
|
92
|
+
COPY --from=builder /var/api/Mwsm /var/api/Mwsm
|
|
37
93
|
|
|
38
|
-
#
|
|
39
|
-
|
|
94
|
+
# -----------------------------------------------------------------
|
|
95
|
+
# PM2 para gerenciar processos
|
|
96
|
+
# -----------------------------------------------------------------
|
|
97
|
+
RUN npm install -g pm2 --silent --no-audit --no-fund
|
|
40
98
|
|
|
41
|
-
|
|
42
|
-
CMD ["pm2-runtime", "
|
|
99
|
+
EXPOSE 8000 5005
|
|
100
|
+
CMD ["pm2-runtime", "start", "mwsm.json"]
|
package/README.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<a href="javascript:void(0)">
|
|
5
|
-
<img src="https://img.shields.io/badge/Build-3.0.
|
|
5
|
+
<img src="https://img.shields.io/badge/Build-3.0.5-blue?style=for-the-badge" alt="Badge">
|
|
6
6
|
</a>
|
|
7
7
|
<a href="javascript:void(0)">
|
|
8
|
-
<img src="https://img.shields.io/badge/Update-
|
|
8
|
+
<img src="https://img.shields.io/badge/Update-22%2F10%2F2025%2021:10-green?style=for-the-badge" alt="Badge">
|
|
9
9
|
</a>
|
|
10
10
|
<a href="https://github.com/MKCodec/Mwsm">
|
|
11
11
|
<img src="https://img.shields.io/github/stars/MKCodec/Mwsm?style=for-the-badge" alt="Badge">
|
|
@@ -59,24 +59,16 @@ permitindo enviar mensagens, sincronizar cobranças e gerenciar comunicações c
|
|
|
59
59
|
|
|
60
60
|
## 🧠 Requisitos
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
62
|
+
**Servidores compatíveis:**
|
|
63
|
+
- 🧩 **MkAuth** (Devuan Beowulf)
|
|
64
|
+
- 🐧 **Debian** 10 / 11 / 12 / **13**
|
|
65
|
+
- 💻 **Ubuntu 20** / 22 / 24
|
|
66
|
+
- 🐋 **Docker**
|
|
65
67
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
Acesse o **Wiki Oficial do Mwsm** e aprenda passo a passo como instalar, configurar e usar:
|
|
71
|
-
|
|
72
|
-
> 📘 **Wiki Oficial:**
|
|
73
|
-
> [https://github.com/MKCodec/Mwsm/wiki](https://github.com/MKCodec/Mwsm/wiki)
|
|
68
|
+
**Outros requisitos:**
|
|
69
|
+
- [API MkAuth modificada](https://github.com/MKCodec/MkAuth-API) para uso com **Mwsm**
|
|
70
|
+
- Conexão estável com **WhatsApp Web**
|
|
74
71
|
|
|
75
|
-
### 🔹 Seções Disponíveis:
|
|
76
|
-
- **[Introdução](https://github.com/MKCodec/Mwsm/wiki/Home)** — visão geral e recursos do projeto
|
|
77
|
-
- **[Instalação](https://github.com/MKCodec/Mwsm/wiki/Instalação)** — instalação automática e pré-requisitos
|
|
78
|
-
- **[Configuração](https://github.com/MKCodec/Mwsm/wiki/Configuração)** — como ajustar e ativar o sistema
|
|
79
|
-
- **[Suporte e Integração](https://github.com/MKCodec/Mwsm/wiki/Suporte-e-Intregração)** — integrações externas e testes
|
|
80
72
|
|
|
81
73
|
---
|
|
82
74
|
|