NitinBot001 commited on
Commit
1d1373f
·
verified ·
1 Parent(s): 655bff0

Create server.js

Browse files
Files changed (1) hide show
  1. server.js +151 -0
server.js ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { default as makeWASocket, DisconnectReason, useMultiFileAuthState, makeInMemoryStore } from '@whiskeysockets/baileys';
2
+ import express from 'express';
3
+ import qrcode from 'qrcode-terminal';
4
+ import pino from 'pino';
5
+
6
+ const app = express();
7
+ app.use(express.json());
8
+
9
+ let sock = null;
10
+ let qrCode = null;
11
+ let isConnected = false;
12
+
13
+ const logger = pino({ level: 'silent' });
14
+
15
+ // Initialize WhatsApp connection
16
+ async function connectToWhatsApp() {
17
+ const { state, saveCreds } = await useMultiFileAuthState('auth_info');
18
+
19
+ sock = makeWASocket({
20
+ auth: state,
21
+ printQRInTerminal: true,
22
+ logger,
23
+ });
24
+
25
+ sock.ev.on('creds.update', saveCreds);
26
+
27
+ sock.ev.on('connection.update', (update) => {
28
+ const { connection, lastDisconnect, qr } = update;
29
+
30
+ if (qr) {
31
+ qrCode = qr;
32
+ console.log('QR Code received, scan it!');
33
+ qrcode.generate(qr, { small: true });
34
+ }
35
+
36
+ if (connection === 'close') {
37
+ const shouldReconnect = lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut;
38
+ console.log('Connection closed. Reconnecting:', shouldReconnect);
39
+ isConnected = false;
40
+
41
+ if (shouldReconnect) {
42
+ connectToWhatsApp();
43
+ }
44
+ } else if (connection === 'open') {
45
+ console.log('✅ WhatsApp connected successfully!');
46
+ isConnected = true;
47
+ qrCode = null;
48
+ }
49
+ });
50
+
51
+ sock.ev.on('messages.upsert', async (m) => {
52
+ const msg = m.messages[0];
53
+ if (!msg.key.fromMe && m.type === 'notify') {
54
+ console.log('New message:', msg.message?.conversation || 'Media message');
55
+ }
56
+ });
57
+ }
58
+
59
+ // Routes
60
+ app.get('/', (req, res) => {
61
+ res.json({
62
+ status: 'running',
63
+ connected: isConnected,
64
+ endpoints: {
65
+ status: 'GET /status',
66
+ qr: 'GET /qr',
67
+ send: 'POST /send',
68
+ logout: 'POST /logout'
69
+ }
70
+ });
71
+ });
72
+
73
+ app.get('/status', (req, res) => {
74
+ res.json({
75
+ connected: isConnected,
76
+ hasQR: qrCode !== null
77
+ });
78
+ });
79
+
80
+ app.get('/qr', (req, res) => {
81
+ if (qrCode) {
82
+ res.json({
83
+ success: true,
84
+ qr: qrCode,
85
+ message: 'Scan this QR code with WhatsApp'
86
+ });
87
+ } else if (isConnected) {
88
+ res.json({
89
+ success: false,
90
+ message: 'Already connected to WhatsApp'
91
+ });
92
+ } else {
93
+ res.json({
94
+ success: false,
95
+ message: 'QR code not available yet, please wait...'
96
+ });
97
+ }
98
+ });
99
+
100
+ app.post('/send', async (req, res) => {
101
+ if (!isConnected || !sock) {
102
+ return res.status(400).json({
103
+ success: false,
104
+ message: 'WhatsApp not connected'
105
+ });
106
+ }
107
+
108
+ const { number, message } = req.body;
109
+
110
+ if (!number || !message) {
111
+ return res.status(400).json({
112
+ success: false,
113
+ message: 'number and message are required'
114
+ });
115
+ }
116
+
117
+ try {
118
+ // Format number (add @s.whatsapp.net if not present)
119
+ const jid = number.includes('@') ? number : `${number}@s.whatsapp.net`;
120
+
121
+ await sock.sendMessage(jid, { text: message });
122
+
123
+ res.json({
124
+ success: true,
125
+ message: 'Message sent successfully'
126
+ });
127
+ } catch (error) {
128
+ res.status(500).json({
129
+ success: false,
130
+ message: error.message
131
+ });
132
+ }
133
+ });
134
+
135
+ app.post('/logout', async (req, res) => {
136
+ if (sock) {
137
+ await sock.logout();
138
+ isConnected = false;
139
+ qrCode = null;
140
+ res.json({ success: true, message: 'Logged out successfully' });
141
+ } else {
142
+ res.json({ success: false, message: 'Not connected' });
143
+ }
144
+ });
145
+
146
+ // Start server
147
+ const PORT = process.env.PORT || 7860;
148
+ app.listen(PORT, '0.0.0.0', () => {
149
+ console.log(`🚀 Baileys WhatsApp Server running on port ${PORT}`);
150
+ connectToWhatsApp();
151
+ });