Spaces:
Paused
Paused
Update index.js
Browse files
index.js
CHANGED
|
@@ -51,7 +51,8 @@ app.get('/checkState', async (req, res) => {
|
|
| 51 |
const sessionData = { ip, apiKey };
|
| 52 |
fs.writeFileSync(sessionFile, JSON.stringify(sessionData, null, 2));
|
| 53 |
|
| 54 |
-
|
|
|
|
| 55 |
}
|
| 56 |
|
| 57 |
res.cookie('apiKey', apiKey, {
|
|
@@ -71,12 +72,18 @@ app.get('/checkState', async (req, res) => {
|
|
| 71 |
}
|
| 72 |
});
|
| 73 |
|
| 74 |
-
|
|
|
|
| 75 |
const { apiKey } = req.query;
|
| 76 |
|
| 77 |
if (apiKey) {
|
| 78 |
const qrFile = path.join(sessionDir, `${apiKey}_qr.svg`);
|
| 79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
if (fs.existsSync(qrFile)) {
|
| 81 |
res.sendFile(qrFile);
|
| 82 |
} else {
|
|
@@ -115,35 +122,37 @@ async function connectToWhatsApp(apiKey, ip) {
|
|
| 115 |
printQRInTerminal: true
|
| 116 |
});
|
| 117 |
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
}
|
| 126 |
-
}
|
| 127 |
-
console.log('Opened connection');
|
| 128 |
-
} else if (qr) {
|
| 129 |
-
// Send QR code to client
|
| 130 |
-
const qrImage = qri.imageSync(qr, { type: 'svg' });
|
| 131 |
-
fs.writeFileSync(path.join(sessionDir, `${apiKey}_qr.svg`), qrImage);
|
| 132 |
-
}
|
| 133 |
-
});
|
| 134 |
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
|
|
|
| 144 |
}
|
| 145 |
|
| 146 |
-
|
| 147 |
const PORT = 7860;
|
| 148 |
app.listen(PORT, () => {
|
| 149 |
console.log(`Server is running on port ${PORT}`);
|
|
|
|
| 51 |
const sessionData = { ip, apiKey };
|
| 52 |
fs.writeFileSync(sessionFile, JSON.stringify(sessionData, null, 2));
|
| 53 |
|
| 54 |
+
// Initialize WhatsApp connection
|
| 55 |
+
await connectToWhatsApp(apiKey, ip);
|
| 56 |
}
|
| 57 |
|
| 58 |
res.cookie('apiKey', apiKey, {
|
|
|
|
| 72 |
}
|
| 73 |
});
|
| 74 |
|
| 75 |
+
// Serve QR code for login
|
| 76 |
+
app.get('/qrCode', async (req, res) => {
|
| 77 |
const { apiKey } = req.query;
|
| 78 |
|
| 79 |
if (apiKey) {
|
| 80 |
const qrFile = path.join(sessionDir, `${apiKey}_qr.svg`);
|
| 81 |
|
| 82 |
+
if (!fs.existsSync(qrFile)) {
|
| 83 |
+
// Generate QR code if it does not exist
|
| 84 |
+
await connectToWhatsApp(apiKey);
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
if (fs.existsSync(qrFile)) {
|
| 88 |
res.sendFile(qrFile);
|
| 89 |
} else {
|
|
|
|
| 122 |
printQRInTerminal: true
|
| 123 |
});
|
| 124 |
|
| 125 |
+
return new Promise((resolve, reject) => {
|
| 126 |
+
sock.ev.on('connection.update', (update) => {
|
| 127 |
+
const { connection, lastDisconnect, qr } = update;
|
| 128 |
+
if (connection === 'close') {
|
| 129 |
+
const shouldReconnect = (lastDisconnect.error instanceof Boom) ? lastDisconnect.error.output.statusCode !== DisconnectReason.loggedOut : true;
|
| 130 |
+
console.log('Connection closed due to ', lastDisconnect.error, ', reconnecting ', shouldReconnect);
|
| 131 |
+
if (shouldReconnect) {
|
| 132 |
+
connectToWhatsApp(apiKey, ip);
|
| 133 |
+
}
|
| 134 |
+
} else if (connection === 'open') {
|
| 135 |
+
console.log('Opened connection');
|
| 136 |
+
resolve();
|
| 137 |
+
} else if (qr) {
|
| 138 |
+
// Generate QR code
|
| 139 |
+
const qrImage = qri.imageSync(qr, { type: 'svg' });
|
| 140 |
+
fs.writeFileSync(path.join(sessionDir, `${apiKey}_qr.svg`), qrImage);
|
| 141 |
}
|
| 142 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
|
| 144 |
+
sock.ev.on('messages.upsert', async m => {
|
| 145 |
+
console.log(JSON.stringify(m, undefined, 2));
|
| 146 |
+
console.log('Replying to', m.messages[0].key.remoteJid);
|
| 147 |
+
await sock.sendMessage(m.messages[0].key.remoteJid, { text: 'Hello there!' });
|
| 148 |
+
});
|
| 149 |
|
| 150 |
+
// Save session to file
|
| 151 |
+
const sessionFile = path.join(sessionDir, `${ip}.json`);
|
| 152 |
+
fs.writeFileSync(sessionFile, JSON.stringify({ apiKey, ip, session: sock.state }, null, 2));
|
| 153 |
+
});
|
| 154 |
}
|
| 155 |
|
|
|
|
| 156 |
const PORT = 7860;
|
| 157 |
app.listen(PORT, () => {
|
| 158 |
console.log(`Server is running on port ${PORT}`);
|