├── README.md ├── example.js └── package.json /README.md: -------------------------------------------------------------------------------- 1 | ## Dependencies 2 | 3 | ```sh 4 | node-cache 5 | readline 6 | @whiskeysockets/baileys: v6.6.0^ 7 | ``` 8 | 9 | # Variable and function 10 | 11 |

1.

12 | 13 | ```js 14 | const { makeCacheableSignalKeyStore, PHONENUMBER_MCC, Browsers } = require("@whiskeysockets/baileys") 15 | 16 | const NodeCache = require("node-cache"); 17 | const readline = require("readline"); 18 | ``` 19 | 20 |

2.

21 | 22 | ```js 23 | const useStore = false /** change to true if needed */ 24 | ``` 25 | 26 |

3.

27 | 28 | ```js 29 | const MAIN_LOGGER = pino({ timestamp: () => `,"time":"${new Date().toJSON()}"` }); 30 | 31 | const logger = MAIN_LOGGER.child({}); 32 | logger.level = "trace"; 33 | 34 | const store = useStore ? makeInMemoryStore({ logger }) : undefined; 35 | store?.readFromFile("./store.json"); 36 | 37 | // Save every 1m 38 | setInterval(() => { 39 | store?.writeToFile("./store.json"); 40 | }, 10000 * 6); 41 | 42 | const msgRetryCounterCache = new NodeCache(); 43 | 44 | const rl = readline.createInterface({ 45 | input: process.stdin, 46 | output: process.stdout, 47 | }); 48 | const question = (text) => new Promise((resolve) => rl.question(text, resolve)); 49 | 50 | const P = require("pino")({ 51 | level: "silent", 52 | }); 53 | ``` 54 | 55 | # Conection option 56 | 57 | ```js 58 | async function start() { 59 | let { state, saveCreds } = await useMultiFileAuthState(sessionName); 60 | let { version, isLatest } = await fetchLatestBaileysVersion(); 61 | const sock = makeWASocket({ 62 | version, 63 | logger: P, /** P for hidden logger log */ 64 | printQRInTerminal: true, /** If you want to use scan, then change the value of this variable to false */ 65 | browser: Browsers.ubuntu("Chrome"), /** There are several browser options, see documentation from @whiskeysockets/baileys */ 66 | auth: { 67 | creds: state.creds, 68 | keys: makeCacheableSignalKeyStore(state.keys, P), 69 | }, 70 | msgRetryCounterCache, 71 | }); 72 | store?.bind(sock.ev); 73 | 74 | sock.ev.on("creds.update", saveCreds); // to save creds 75 | 76 | if (!sock.authState.creds.registered) { 77 | const phoneNumber = await question( 78 | "Enter your active whatsapp number: " 79 | ); 80 | const code = await sock.requestPairingCode(phoneNumber); 81 | console.log(`pairing with this code: ${code}`); 82 | } 83 | } 84 | start(); 85 | ``` 86 | 87 |

Thankyou for visit my github

88 | -------------------------------------------------------------------------------- /example.js: -------------------------------------------------------------------------------- 1 | const { 2 | default: makeWASocket, 3 | fetchLatestBaileysVersion, 4 | makeCacheableSignalKeyStore, 5 | makeInMemoryStore, 6 | PHONENUMBER_MCC, 7 | useMultiFileAuthState, 8 | Browsers, 9 | } = require("@whiskeysockets/baileys"); 10 | const pino = require("pino"); 11 | const NodeCache = require("node-cache"); 12 | const readline = require("readline"); 13 | /** Change it to true if needed */ 14 | const useStore = false; 15 | 16 | const MAIN_LOGGER = pino({ 17 | timestamp: () => `,"time":"${new Date().toJSON()}"`, 18 | }); 19 | 20 | const logger = MAIN_LOGGER.child({}); 21 | logger.level = "trace"; 22 | 23 | const store = useStore ? makeInMemoryStore({ logger }) : undefined; // Inisialisasi store jika penggunaan store diaktifkan 24 | store?.readFromFile(`store.json`); 25 | 26 | setInterval(() => { 27 | store?.writeToFile("store.json"); 28 | }, 60000 * 60); 29 | 30 | const msgRetryCounterCache = new NodeCache(); 31 | 32 | const rl = readline.createInterface({ 33 | input: process.stdin, 34 | output: process.stdout, 35 | }); 36 | const question = text => new Promise(resolve => rl.question(text, resolve)); 37 | 38 | const P = require("pino")({ 39 | level: "silent", 40 | }); 41 | 42 | async function start() { 43 | let { state, saveCreds } = await useMultiFileAuthState("AUTH"); 44 | let { version, isLatest } = await fetchLatestBaileysVersion(); 45 | const sock = makeWASocket({ 46 | version, 47 | logger: P, 48 | printQRInTerminal: false, 49 | browser: Browsers.ubuntu("Chrome"), 50 | auth: { 51 | creds: state.creds, 52 | keys: makeCacheableSignalKeyStore(state.keys, P), 53 | }, 54 | msgRetryCounterCache, 55 | }); 56 | store?.bind(sock.ev); 57 | 58 | sock.ev.on("creds.update", saveCreds); 59 | 60 | if (!sock.authState.creds.registered) { 61 | const phoneNumber = await question("Enter your active whatsapp number: "); 62 | const code = await sock.requestPairingCode(phoneNumber); 63 | console.log(`pairing with this code: ${code}`); 64 | } 65 | 66 | // to upsert message from whatsapp 67 | sock.ev.process(async events => { 68 | if (events["connection.update"]) { 69 | const update = events["connection.update"]; 70 | const { connection, lastDisconnect } = update; 71 | if (connection === "close") { 72 | if ( 73 | lastDisconnect && 74 | lastDisconnect.error && 75 | lastDisconnect.error.output && 76 | lastDisconnect.error.output.statusCode !== DisconnectReason.loggedOut 77 | ) { 78 | start(); 79 | } else { 80 | console.log("Connection closed. You are logged out."); 81 | } 82 | } 83 | console.log("connection update", update); 84 | } 85 | }); 86 | return sock; 87 | } 88 | 89 | start(); 90 | 91 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wabot", 3 | "version": "0.0.1", 4 | "description": "WhatsappBot", 5 | "main": "index.js", 6 | "type": "commonjs", 7 | "scripts": { 8 | "start": "node index.js" 9 | }, 10 | "dependencies": { 11 | "@adiwajshing/keyed-db": "latest", 12 | "@whiskeysockets/baileys": "^6.6.0", 13 | "node-cache": "latest", 14 | "readline": "latest" 15 | } 16 | } 17 | --------------------------------------------------------------------------------