forked from jauhariel/AutoReadStoryWhatsapp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
120 lines (102 loc) · 5.71 KB
/
index.js
1
2
3
4
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
const {makeWASocket, DisconnectReason, useMultiFileAuthState, Browsers} = require('@whiskeysockets/baileys');
const pino = require('pino');
const readline = require('readline');
const fs = require('fs');
const path = require('path');
let useCode = true;
let loggedInNumber;
async function connectToWhatsApp(){
const sessionPath = path.join(__dirname, 'sessions');
const sessionExists = fs.existsSync(sessionPath) && fs.readdirSync(sessionPath).length > 0;
const { state, saveCreds } = await useMultiFileAuthState('sessions');
const sock = makeWASocket({
logger: pino({ level: 'fatal' }),
auth: state,
printQRInTerminal: !useCode,
defaultQueryTimeoutMs: undefined,
keepAliveIntervalMs: 30000,
browser: Browsers.macOS('Chrome'),
shouldSyncHistoryMessage: () => false,
markOnlineOnConnect: true,
syncFullHistory: false,
generateHighQualityLinkPreview: true
});
if (useCode && !sessionExists) {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
console.log("Halo sepertinya kamu belum login, Mau login wangsaf pakai pairing code?\nSilahkan balas dengan (y/n)\nketik y untuk setuju atau ketik n untuk login menggunakan qrcode") // pesan untuk yang menggunakan panel
const askPairingCode = () => {
rl.question('\nApakah kamu ingin menggunakan pairing code untuk login ke wangsaf? (y/n): ', async (answer) => {
if (answer.toLowerCase() === 'y' || answer.trim() === '') {
console.log("\nWokeh kalau gitu silahkan masukkan nomor wangsafmu!\ncatatan : awali dengan 62 contoh 628123456789") // pesan untuk yang menggunakan panel
const askWaNumber = () => {
rl.question('\nMasukkan nomor wangsaf Anda: ', async (waNumber) => {
if (!/^\d+$/.test(waNumber)) {
console.log('\nNomor harus berupa angka!\nSilakan masukkan nomor wangsaf kembali!.');
askWaNumber();
} else {
const code = await sock.requestPairingCode(waNumber);
console.log('\nCek notifikasi wangsafmu dan masukin kode login wangsaf:', code);
rl.close();
}
});
};
askWaNumber();
} else if (answer.toLowerCase() === 'n') {
useCode = false;
console.log('\nBuka wangsafmu lalu klik titik tiga di kanan atas kemudian klik perangkat tertaut setelah itu Silahkan scan QR code dibawah untuk login ke wangsaf');
connectToWhatsApp();
rl.close();
} else {
console.log('\nInput tidak valid. Silakan masukkan "y" atau "n".');
askPairingCode();
}
});
};
askPairingCode();
}
sock.ev.on('connection.update', (update) => {
const { connection, lastDisconnect } = update;
if(connection === 'close') {
const shouldReconnect = lastDisconnect.error?.output.statusCode !== DisconnectReason.loggedOut;
if(shouldReconnect) {
console.log('Mencoba menghubungkan ke wangsaf...\n');
connectToWhatsApp();
} else {
console.log('Terputus dari wangsaf, silahkan hapus folder sessions dan login ke wangsaf kembali');
}
} else if(connection === 'open') {
console.log('Terhubung ke wangsaf')
loggedInNumber = sock.user.id.split('@')[0].split(':')[0];
console.log(`kamu berhasil login dengan nomor: ${loggedInNumber} \n`);
console.log("Bot sudah aktif!\n\nSelamat menikmati fitur auto read story whatsapp by Jauhariel\n\nCatatan :\n1. Klik ctrl dan c pada keyboard secara bersamaan untuk memberhentikan bot!\n2. Jangan lupa untuk menghapus folder sessions jika ingin login dengan nomor lain atau terjadi masalah login seperti stuck di 'menghubungkan ke wangsaf'!\n3.Kamu bisa menambahkan nomor yang tidak ingin kamu lihat story-nya secara otomatis di file blacklist.txt.\n");
}
})
sock.ev.on('creds.update', saveCreds);
sock.ev.on('messages.upsert', async ({ messages }) => {
const msg = messages[0];
if (!msg.message) return;
if (msg.key.remoteJid === "status@broadcast") {
const senderNumber = msg.key.participant ? msg.key.participant.split('@')[0] : 'Tidak diketahui';
const senderName = msg.pushName || 'Tidak diketahui';
const blacklistPath = path.join(__dirname, 'blacklist.txt');
const blacklist = fs.readFileSync(blacklistPath, 'utf-8').split('\n').map(num => num.trim());
if (msg.message.protocolMessage) {
console.log(`Status dari ${senderName} (${senderNumber}) telah dihapus.\n`);
} else {
if (blacklist.includes(senderNumber)) {
console.log(`${senderName} (${senderNumber}) membuat status tapi karena ada di blacklist. Status tidak akan dilihat.\n`);
return;
}
await sock.readMessages([msg.key]);
console.log(`Berhasil melihat Status dari: ${senderName} (${senderNumber})\n`);
const targetNumber = loggedInNumber;
const messageContent = `Status dari *${senderName}* (${senderNumber}) telah dilihat.`;
await sock.sendMessage(`${targetNumber}@s.whatsapp.net`, { text: messageContent });
}
}
});
}
connectToWhatsApp();