@neelegirly/baileys 2.2.16 → 2.2.18
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/README.md +131 -44
- package/lib/Utils/branding.js +47 -3
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,32 +1,91 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# 🌸 @neelegirly/baileys 🌸
|
|
4
|
+
|
|
5
|
+
### *Die WhatsApp Web API mit sauberem Neelegirly-Glow-up*
|
|
6
|
+
### *QR Branding · Wrapper-Aware Update Notify · LID · Smart Queue*
|
|
7
|
+
|
|
8
|
+
[](https://www.npmjs.com/package/@neelegirly/baileys)
|
|
9
|
+
[](https://www.npmjs.com/package/@neelegirly/wa-api)
|
|
10
|
+
[](https://www.npmjs.com/package/@neelegirly/libsignal)
|
|
11
|
+
[](https://nodejs.org)
|
|
12
|
+
[](https://www.npmjs.com/package/@neelegirly/baileys)
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<img src="https://files.catbox.moe/5bqumy.jpeg" width="780" alt="@neelegirly/baileys Hero" />
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center"><sub>2026 Glow-Up Edition · klarere QR-Statuszeilen · Companion-Stack auf <strong>2.2.18 / 1.8.0 / 1.0.28</strong></sub></p>
|
|
19
|
+
|
|
20
|
+
[**Installation**](#-installation) · [**Quickstart**](#-quickstart) · [**Highlights**](#-highlights) · [**QR Branding**](#-qr-branding--update-status) · [**Migration**](#-namespace-migration) · [**Release Notes**](#-release-notes-2218)
|
|
21
|
+
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
Neelegirlys Variante von Baileys ist die WhatsApp-Web-Basis für stabile Bots, schöne QR-Flows und einen sauber gepinnten Multi-Session-Stack. Die Library bleibt nah an Baileys, aber mit fokussiertem Branding, Update-Notify und Begleit-Ökosystem für `@neelegirly/wa-api`.
|
|
4
27
|
|
|
5
28
|
> Hinweis: Dieses Projekt ist nicht offiziell mit WhatsApp, Meta oder Baileys-Upstream verbunden.
|
|
6
29
|
|
|
7
|
-
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## ✨ Highlights
|
|
33
|
+
|
|
34
|
+
| Feature | Beschreibung | Status |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| 💖 Multi-Device API | WhatsApp Web auf Node.js mit Event-Flow | ✅ |
|
|
37
|
+
| 📷 QR Branding | Header/Footer + Wrapper-/Versionskontext direkt im QR-Flow | ✅ |
|
|
38
|
+
| 🔔 Wrapper-Aware Update Notify | Status für Baileys **und** optionalen Wrapper-Kontext | ✅ |
|
|
39
|
+
| 🚀 Smart Queue | Retries, Prioritäten und Bulk-Sending für produktive Setups | ✅ |
|
|
40
|
+
| 🧷 LID / Session-Fokus | passend für moderne Multi-Device-/Linked-ID-Flows | ✅ |
|
|
41
|
+
| 🎀 Neelegirly Scope | sauber auf `@neelegirly/*` ausgerichtet | ✅ |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 🆕 Was sich in `v2.2.18` geändert hat
|
|
8
46
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
- Update-Pruefung (npm zuerst, GitHub-Fallback) mit semver-Vergleich
|
|
47
|
+
- ✅ QR-Branding zeigt den Baileys- und Wrapper-Status jetzt klarer als `up to date` oder `update available`
|
|
48
|
+
- ✅ Wrapper-Hinweise werden nur noch angezeigt, wenn wirklich ein Update vorhanden ist
|
|
49
|
+
- ✅ Companion-Stack auf `@neelegirly/wa-api 1.8.0` abgestimmt
|
|
50
|
+
- ✅ README auf den neuen Release- und Update-Notify-Stand gebracht
|
|
14
51
|
|
|
15
|
-
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 📦 Kompatibilität
|
|
16
55
|
|
|
17
56
|
| Paket | Empfohlene Version |
|
|
18
57
|
| --- | --- |
|
|
19
|
-
| `@neelegirly/baileys` | `2.2.
|
|
20
|
-
| `@neelegirly/wa-api` | `1.
|
|
21
|
-
| `@neelegirly/libsignal` | `1.0.
|
|
58
|
+
| `@neelegirly/baileys` | `2.2.18` |
|
|
59
|
+
| `@neelegirly/wa-api` | `1.8.0` |
|
|
60
|
+
| `@neelegirly/libsignal` | `1.0.28` |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 🚀 Installation
|
|
65
|
+
|
|
66
|
+
### npm
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm install @neelegirly/baileys@2.2.18 @neelegirly/libsignal@1.0.28 --save-exact
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### yarn
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
yarn add @neelegirly/baileys@2.2.18 @neelegirly/libsignal@1.0.28 --exact
|
|
76
|
+
```
|
|
22
77
|
|
|
23
|
-
|
|
78
|
+
### pnpm
|
|
24
79
|
|
|
25
80
|
```bash
|
|
26
|
-
|
|
81
|
+
pnpm add @neelegirly/baileys@2.2.18 @neelegirly/libsignal@1.0.28 --save-exact
|
|
27
82
|
```
|
|
28
83
|
|
|
29
|
-
|
|
84
|
+
> Für den kompletten Neelegirly-Stack passt dazu `@neelegirly/wa-api@1.8.0`.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## ⚡ Quickstart
|
|
30
89
|
|
|
31
90
|
```ts
|
|
32
91
|
import makeWASocket, {
|
|
@@ -51,16 +110,15 @@ async function start() {
|
|
|
51
110
|
|
|
52
111
|
sock.ev.on('connection.update', ({ connection, lastDisconnect }) => {
|
|
53
112
|
if (connection === 'open') {
|
|
54
|
-
console.log('Verbunden')
|
|
113
|
+
console.log('Verbunden 💖')
|
|
55
114
|
return
|
|
56
115
|
}
|
|
57
116
|
|
|
58
117
|
if (connection === 'close') {
|
|
59
118
|
const statusCode = lastDisconnect?.error?.output?.statusCode
|
|
60
119
|
const isLoggedOut = statusCode === DisconnectReason.loggedOut
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
120
|
+
|
|
121
|
+
if (!isLoggedOut) start().catch(console.error)
|
|
64
122
|
}
|
|
65
123
|
})
|
|
66
124
|
}
|
|
@@ -68,41 +126,70 @@ async function start() {
|
|
|
68
126
|
start().catch(console.error)
|
|
69
127
|
```
|
|
70
128
|
|
|
71
|
-
|
|
129
|
+
> Direktes `sock.ev.on('creds.update', saveCreds)` ist für kleine Demos okay. In produktiven Multi-Session-Setups sollten Credential-Saves gebündelt oder debounced werden.
|
|
72
130
|
|
|
73
|
-
|
|
131
|
+
---
|
|
74
132
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
133
|
+
## 🧩 Companion Stack
|
|
134
|
+
|
|
135
|
+
| Paket | Rolle |
|
|
136
|
+
|------|-------|
|
|
137
|
+
| `@neelegirly/baileys 2.2.18` | Socket, Events, Messaging |
|
|
138
|
+
| `@neelegirly/libsignal 1.0.28` | Signal-Protokoll-Komponente |
|
|
139
|
+
| `@neelegirly/wa-api 1.8.0` | Lifecycle-, Session- und Update-Wrapper |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 🩷 QR Branding & Update Status
|
|
144
|
+
|
|
145
|
+
Beim QR-Scan werden automatisch Markenzeilen oberhalb und unterhalb des QR-Codes ausgegeben. Die Ausgabe liest Versionen dynamisch aus `package.json`, verarbeitet Update-Status robust und kann zusätzlich Wrapper-Kontext aus `@neelegirly/wa-api` darstellen.
|
|
146
|
+
|
|
147
|
+
Typische Anzeige:
|
|
148
|
+
|
|
149
|
+
- `Baileys Update-Status: up to date (2.2.18)`
|
|
150
|
+
- `Wrapper Update-Status: up to date (1.8.0)`
|
|
151
|
+
- Bei echten Updates werden kompakte Hinweise auf `latest` eingeblendet
|
|
79
152
|
|
|
80
|
-
|
|
153
|
+
Wenn kein Wrapper-Kontext vorhanden ist, bleibt die Anzeige sauber bei Baileys. Kein unnötiges Drama, nur QR. ✨
|
|
81
154
|
|
|
82
|
-
|
|
83
|
-
Die Anzeige liest Versionen dynamisch aus `package.json` und zeigt bei Bedarf einen kompakten Update-Hinweis an.
|
|
155
|
+
---
|
|
84
156
|
|
|
85
|
-
## Update-Check
|
|
157
|
+
## 🔄 Update-Check
|
|
86
158
|
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
- Fehler
|
|
159
|
+
- Quelle 1: npm Registry (`registry.npmjs.org`)
|
|
160
|
+
- Quelle 2: GitHub Releases (`neelegirly/baileys`) als Fallback
|
|
161
|
+
- Fehler und Timeouts werden abgefangen, ohne den Prozess zu stoppen
|
|
90
162
|
- Semver-Vergleich wird numerisch ausgewertet
|
|
163
|
+
- Wrapper-Status kann über die von `@neelegirly/wa-api` gesetzten Umgebungsvariablen übernommen werden
|
|
91
164
|
|
|
92
|
-
|
|
165
|
+
Wenn du direkt prüfen willst:
|
|
93
166
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
167
|
+
```ts
|
|
168
|
+
import { checkNpmVersion } from '@neelegirly/baileys'
|
|
169
|
+
|
|
170
|
+
const info = await checkNpmVersion('@neelegirly/baileys', '2.2.18', {
|
|
171
|
+
githubRepo: 'neelegirly/baileys'
|
|
172
|
+
})
|
|
173
|
+
|
|
174
|
+
console.log(info)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 🌐 Namespace-Migration
|
|
97
180
|
|
|
98
|
-
|
|
181
|
+
Wenn du vom Upstream kommst, nutze den Neelegirly-Scope:
|
|
182
|
+
|
|
183
|
+
```diff
|
|
184
|
+
- import makeWASocket from '@whiskeysockets/baileys'
|
|
185
|
+
+ import makeWASocket from '@neelegirly/baileys'
|
|
186
|
+
```
|
|
99
187
|
|
|
100
|
-
|
|
101
|
-
- Migration auf den Neelegirly-Namespace explizit dokumentiert.
|
|
102
|
-
- Kompatibilitaetsmatrix auf `2.2.16 / 1.7.15 / 1.0.27` aktualisiert.
|
|
188
|
+
---
|
|
103
189
|
|
|
104
|
-
##
|
|
190
|
+
## 📝 Release Notes `2.2.18`
|
|
105
191
|
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
-
|
|
192
|
+
- 🌸 QR-/Footer-Branding zeigt Baileys- und Wrapper-Status klarer an
|
|
193
|
+
- 🧠 Wrapper-Updatehinweise werden nur bei echten Updates eingeblendet
|
|
194
|
+
- 🔗 Companion-Stack auf `2.2.18 / 1.8.0 / 1.0.28` aktualisiert
|
|
195
|
+
- ✨ README auf neuen Release- und Update-Notify-Stand gebracht
|
package/lib/Utils/branding.js
CHANGED
|
@@ -75,9 +75,12 @@ const getResolvedVersions = () => {
|
|
|
75
75
|
return {
|
|
76
76
|
baileysPackage: meta.name,
|
|
77
77
|
baileysVersion: meta.version,
|
|
78
|
+
baileysLatest: process.env.NEELEGIRLY_BAILEYS_LATEST || null,
|
|
79
|
+
baileysUpdateState: process.env.NEELEGIRLY_BAILEYS_UPDATE_STATE || null,
|
|
78
80
|
wrapperPackage: wrapperPackage || null,
|
|
79
81
|
wrapperVersion: wrapperVersion || null,
|
|
80
82
|
wrapperLatest: process.env.NEELEGIRLY_WRAPPER_UPDATE || null,
|
|
83
|
+
wrapperUpdateState: process.env.NEELEGIRLY_WRAPPER_UPDATE_STATE || null,
|
|
81
84
|
libsignalVersion: libsignalVersion || null
|
|
82
85
|
};
|
|
83
86
|
};
|
|
@@ -109,8 +112,23 @@ const getQrBranding = async () => {
|
|
|
109
112
|
const versions = getResolvedVersions();
|
|
110
113
|
const update = await getBaileysUpdateInfo();
|
|
111
114
|
const shouldShowBaileysUpdateHint = Boolean(update?.hasUpdate) && !hasShownBaileysUpdateHint;
|
|
112
|
-
const
|
|
113
|
-
Boolean(versions.wrapperPackage && versions.wrapperLatest)
|
|
115
|
+
const wrapperHasUpdate =
|
|
116
|
+
versions.wrapperUpdateState === "update-available" && Boolean(versions.wrapperPackage && versions.wrapperLatest);
|
|
117
|
+
const shouldShowWrapperUpdateHint = wrapperHasUpdate && !hasShownWrapperUpdateHint;
|
|
118
|
+
|
|
119
|
+
const baileysStatusLine = update
|
|
120
|
+
? update.hasUpdate
|
|
121
|
+
? `Baileys Update-Status: ${update.latest} verfügbar (du nutzt ${update.current})`
|
|
122
|
+
: `Baileys Update-Status: up to date (${update.current})`
|
|
123
|
+
: `Baileys Update-Status: derzeit nicht erreichbar`;
|
|
124
|
+
|
|
125
|
+
const wrapperStatusLine = versions.wrapperPackage && versions.wrapperVersion
|
|
126
|
+
? wrapperHasUpdate
|
|
127
|
+
? `Wrapper Update-Status: ${versions.wrapperLatest} verfügbar (du nutzt ${versions.wrapperVersion})`
|
|
128
|
+
: versions.wrapperUpdateState === "up-to-date"
|
|
129
|
+
? `Wrapper Update-Status: up to date (${versions.wrapperVersion})`
|
|
130
|
+
: `Wrapper Update-Status: wird geprüft (${versions.wrapperVersion})`
|
|
131
|
+
: null;
|
|
114
132
|
|
|
115
133
|
const headerLines = [
|
|
116
134
|
buildDivider(),
|
|
@@ -129,6 +147,11 @@ const getQrBranding = async () => {
|
|
|
129
147
|
headerLines.push(color(`Signal-Core: @neelegirly/libsignal v${versions.libsignalVersion}`, ANSI.cyan));
|
|
130
148
|
}
|
|
131
149
|
|
|
150
|
+
headerLines.push(color(baileysStatusLine, update?.hasUpdate ? ANSI.yellow : ANSI.gray));
|
|
151
|
+
if (wrapperStatusLine) {
|
|
152
|
+
headerLines.push(color(wrapperStatusLine, wrapperHasUpdate ? ANSI.yellow : ANSI.gray));
|
|
153
|
+
}
|
|
154
|
+
|
|
132
155
|
if (shouldShowBaileysUpdateHint) {
|
|
133
156
|
const source = update.source || "npm";
|
|
134
157
|
headerLines.push(
|
|
@@ -152,9 +175,30 @@ const getQrBranding = async () => {
|
|
|
152
175
|
color(`💖 ${BRAND.footerClaim}`, ANSI.magenta),
|
|
153
176
|
color(`Powered by ${BRAND.name}`, ANSI.cyan),
|
|
154
177
|
color(BRAND.footerTagline, ANSI.cyan),
|
|
155
|
-
color(`Aktive Basis: ${versions.baileysPackage} v${versions.baileysVersion}`, ANSI.gray)
|
|
178
|
+
color(`Aktive Basis: ${versions.baileysPackage} v${versions.baileysVersion}`, ANSI.gray),
|
|
179
|
+
color(
|
|
180
|
+
update
|
|
181
|
+
? update.hasUpdate
|
|
182
|
+
? `Baileys: ${update.current} → ${update.latest}`
|
|
183
|
+
: `Baileys: ${update.current} ist aktuell.`
|
|
184
|
+
: `Baileys: Update-Check derzeit nicht erreichbar.`,
|
|
185
|
+
update?.hasUpdate ? ANSI.yellow : ANSI.gray
|
|
186
|
+
)
|
|
156
187
|
];
|
|
157
188
|
|
|
189
|
+
if (wrapperStatusLine) {
|
|
190
|
+
footerLines.push(
|
|
191
|
+
color(
|
|
192
|
+
wrapperHasUpdate
|
|
193
|
+
? `Wrapper: ${versions.wrapperVersion} → ${versions.wrapperLatest}`
|
|
194
|
+
: versions.wrapperUpdateState === "up-to-date"
|
|
195
|
+
? `Wrapper: ${versions.wrapperVersion} ist aktuell.`
|
|
196
|
+
: `Wrapper: Update-Check derzeit nicht verfügbar.`,
|
|
197
|
+
wrapperHasUpdate ? ANSI.yellow : ANSI.gray
|
|
198
|
+
)
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
|
|
158
202
|
if (shouldShowBaileysUpdateHint) {
|
|
159
203
|
footerLines.push(
|
|
160
204
|
color(`Du nutzt ${update.current}, neu ist ${update.latest}.`, ANSI.yellow)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neelegirly/baileys",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.18",
|
|
4
4
|
"description": "Neelegirly fork of Baileys: multi-device WhatsApp Web API for Node.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"whatsapp",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@adiwajshing/keyed-db": "^0.2.4",
|
|
49
49
|
"@cacheable/node-cache": "^1.5.4",
|
|
50
50
|
"@hapi/boom": "^9.1.3",
|
|
51
|
-
"@neelegirly/libsignal": "1.0.
|
|
51
|
+
"@neelegirly/libsignal": "1.0.28",
|
|
52
52
|
"async-mutex": "^0.5.0",
|
|
53
53
|
"audio-decode": "^2.1.3",
|
|
54
54
|
"axios": "^1.3.3",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"ws": "^8.13.0"
|
|
64
64
|
},
|
|
65
65
|
"overrides": {
|
|
66
|
-
"@neelegirly/libsignal": "1.0.
|
|
66
|
+
"@neelegirly/libsignal": "1.0.28"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@adiwajshing/eslint-config": "github:adiwajshing/eslint-config",
|