owpenwork 0.1.9 → 0.1.11
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/dist/cli.js +1 -1
- package/dist/whatsapp.js +64 -45
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ import { BridgeStore } from "./db.js";
|
|
|
9
9
|
import { createLogger } from "./logger.js";
|
|
10
10
|
import { createClient } from "./opencode.js";
|
|
11
11
|
import { loginWhatsApp, unpairWhatsApp } from "./whatsapp.js";
|
|
12
|
-
const VERSION = "0.1.
|
|
12
|
+
const VERSION = "0.1.11";
|
|
13
13
|
const STEP_OPTIONS = [
|
|
14
14
|
{
|
|
15
15
|
value: "config",
|
package/dist/whatsapp.js
CHANGED
|
@@ -120,55 +120,74 @@ export async function loginWhatsApp(config, logger) {
|
|
|
120
120
|
const log = logger.child({ channel: "whatsapp" });
|
|
121
121
|
const { state, saveCreds } = await useMultiFileAuthState(authDir);
|
|
122
122
|
const { version } = await fetchLatestBaileysVersion();
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
sock.end(undefined);
|
|
143
|
-
resolve();
|
|
144
|
-
};
|
|
145
|
-
sock.ev.on("creds.update", async () => {
|
|
146
|
-
await saveCreds();
|
|
147
|
-
if (state.creds?.registered) {
|
|
148
|
-
finish("creds.registered");
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
sock.ev.on("connection.update", (update) => {
|
|
152
|
-
if (update.qr) {
|
|
153
|
-
qrcode.generate(update.qr, { small: true });
|
|
154
|
-
log.info("scan the QR code to connect WhatsApp");
|
|
155
|
-
}
|
|
156
|
-
if (update.connection === "open") {
|
|
157
|
-
finish("connection.open");
|
|
158
|
-
}
|
|
159
|
-
if (update.connection === "close") {
|
|
160
|
-
const lastDisconnect = update.lastDisconnect;
|
|
161
|
-
const statusCode = lastDisconnect?.error?.output?.statusCode;
|
|
162
|
-
if (statusCode === 515 && state.creds?.registered) {
|
|
163
|
-
finish("connection.close.registered");
|
|
123
|
+
const credsPath = path.join(authDir, "creds.json");
|
|
124
|
+
const maxAttempts = 2;
|
|
125
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
126
|
+
const result = await new Promise((resolve) => {
|
|
127
|
+
let finished = false;
|
|
128
|
+
const sock = makeWASocket({
|
|
129
|
+
auth: {
|
|
130
|
+
creds: state.creds,
|
|
131
|
+
keys: makeCacheableSignalKeyStore(state.keys, log),
|
|
132
|
+
},
|
|
133
|
+
version,
|
|
134
|
+
logger: log,
|
|
135
|
+
printQRInTerminal: false,
|
|
136
|
+
syncFullHistory: false,
|
|
137
|
+
markOnlineOnConnect: false,
|
|
138
|
+
browser: ["owpenbot", "cli", "0.1.0"],
|
|
139
|
+
});
|
|
140
|
+
const finish = (reason, status) => {
|
|
141
|
+
if (finished)
|
|
164
142
|
return;
|
|
165
|
-
|
|
143
|
+
finished = true;
|
|
144
|
+
log.info({ reason }, "whatsapp login finished");
|
|
145
|
+
sock.end(undefined);
|
|
146
|
+
resolve(status);
|
|
147
|
+
};
|
|
148
|
+
sock.ev.on("creds.update", async () => {
|
|
149
|
+
await saveCreds();
|
|
166
150
|
if (state.creds?.registered) {
|
|
167
|
-
finish("
|
|
151
|
+
finish("creds.registered", "linked");
|
|
168
152
|
}
|
|
169
|
-
}
|
|
153
|
+
});
|
|
154
|
+
sock.ev.on("connection.update", (update) => {
|
|
155
|
+
if (update.qr) {
|
|
156
|
+
qrcode.generate(update.qr, { small: true });
|
|
157
|
+
log.info("scan the QR code to connect WhatsApp");
|
|
158
|
+
}
|
|
159
|
+
if (update.connection === "open") {
|
|
160
|
+
finish("connection.open", "linked");
|
|
161
|
+
}
|
|
162
|
+
if (update.connection === "close") {
|
|
163
|
+
const lastDisconnect = update.lastDisconnect;
|
|
164
|
+
const statusCode = lastDisconnect?.error?.output?.statusCode;
|
|
165
|
+
if (statusCode === 515) {
|
|
166
|
+
if (state.creds?.registered || fs.existsSync(credsPath)) {
|
|
167
|
+
log.info("whatsapp login requires reconnect; completing login");
|
|
168
|
+
finish("connection.restart.required", "linked");
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
log.warn("whatsapp restart requested before creds registered");
|
|
172
|
+
finish("connection.restart.required", "restart");
|
|
173
|
+
}
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (state.creds?.registered) {
|
|
177
|
+
finish("connection.close.registered", "linked");
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
});
|
|
170
181
|
});
|
|
171
|
-
|
|
182
|
+
if (result === "linked") {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (attempt < maxAttempts) {
|
|
186
|
+
log.warn("retrying whatsapp login after restart");
|
|
187
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
throw new Error("WhatsApp login failed after restart");
|
|
172
191
|
}
|
|
173
192
|
export function unpairWhatsApp(config, logger) {
|
|
174
193
|
const authDir = path.resolve(config.whatsappAuthDir);
|