{"_id":"@jojoxyz/condemnedforce-baileys","name":"@jojoxyz/condemnedforce-baileys","dist-tags":{"latest":"2.3.0"},"versions":{"2.3.0":{"name":"@jojoxyz/condemnedforce-baileys","version":"2.3.0","description":"baileys modifikasi by jojo — stable lane, anti-overhit, fast replies, no dropped messages","keywords":["whatsapp","laurine-wabot","baileys","whatsapp-web","whatsapp-chat","whatsapp-group","botwa","stvnnvs"],"license":"MIT","author":{"name":"jojo_xyz"},"main":"lib/index.js","types":"lib/index.d.ts","publishConfig":{"access":"public"},"scripts":{"build:all":"tsc && typedoc","build:docs":"typedoc","build:tsc":"tsc","changelog:last":"conventional-changelog -p angular -r 2","changelog:preview":"conventional-changelog -p angular -u","gen:protobuf":"sh WAProto/GenerateStatics.sh","lint":"eslint src --ext .js,.ts,.jsx,.tsx","lint:fix":"eslint src --fix --ext .js,.ts,.jsx,.tsx","prepack":"","prepare":"","preinstall":"node ./engine-requirements.js","release":"release-it","test":"jest"},"dependencies":{"@adiwajshing/keyed-db":"^0.2.4","@hapi/boom":"^9.1.3","@cacheable/node-cache":"^1.4.0","async-mutex":"^0.5.0","audio-decode":"^2.1.3","axios":"^1.3.3","cache-manager":"4.0.1","chalk":"^4.1.2","futoin-hkdf":"^1.5.1","libphonenumber-js":"^1.10.20","lodash":"^4.17.21","libsignal":"github:KelvinXRaiden/libsignal-node","music-metadata":"^7.12.3","node-cache":"^5.1.2","node-fetch":"^2.6.1","pino":"^7.0.0","protobufjs":"^7.2.4","uuid":"^9.0.0","ws":"^8.13.0"},"devDependencies":{"@adiwajshing/eslint-config":"github:adiwajshing/eslint-config","@types/got":"^9.6.11","@types/jest":"^27.5.1","@types/node":"^16.0.0","@types/sharp":"^0.29.4","@types/ws":"^8.0.0","conventional-changelog-cli":"^2.2.2","eslint":"^8.0.0","jest":"^27.0.6","jimp":"^0.16.1","link-preview-js":"^3.0.0","open":"^8.4.2","qrcode-terminal":"^0.12.0","release-it":"^15.10.3","sharp":"^0.30.5","ts-jest":"^27.0.3","ts-node":"^10.8.1","typedoc":"^0.24.7","typescript":"^4.6.4","json":"^11.0.0"},"peerDependencies":{"link-preview-js":"^3.0.0","qrcode-terminal":"^0.12.0","sharp":"^0.32.2"},"peerDependenciesMeta":{"jimp":{"optional":true},"link-preview-js":{"optional":true},"qrcode-terminal":{"optional":true},"sharp":{"optional":true}},"packageManager":"yarn@1.22.19","engines":{"node":">=20.0.0"},"gitHead":"e968ce7b83bcb47d3916495ddb2107e73944248e","_id":"@jojoxyz/condemnedforce-baileys@2.3.0","_nodeVersion":"18.20.4","_npmVersion":"9.2.0","dist":{"integrity":"sha512-QbRIxjAWOV5JIY59ulG1V92NBfpokRheZ+Y7CihCOwyg8j5lzuMg040nvtQ/Lgv8ZRRtjsNiQLqDRxgl8zT6cQ==","shasum":"2671be17a393ca5fd91238753ef4ec4f1f7ff864","tarball":"https://registry.npmjs.org/@jojoxyz/condemnedforce-baileys/-/condemnedforce-baileys-2.3.0.tgz","fileCount":235,"unpackedSize":9978690,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGsnQcvtOQmfnX6e5EFk3vnuYq4Ki9O3q0WVluoyJoClAiBTm5V1k6ofpykTgr8vYD539FGHZQLJnoJiCl83ORaxRw=="}]},"_npmUser":{"name":"jojoxyz","email":"jojoxyz443@gmail.com"},"directories":{},"maintainers":[{"name":"jojoxyz","email":"jojoxyz443@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/condemnedforce-baileys_2.3.0_1790127772257_0.5011338065632576"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-23T01:42:52.093Z","2.3.0":"2026-09-23T01:42:52.434Z","modified":"2026-09-23T01:42:52.692Z"},"maintainers":[{"name":"jojoxyz","email":"jojoxyz443@gmail.com"}],"description":"baileys modifikasi by jojo — stable lane, anti-overhit, fast replies, no dropped messages","keywords":["whatsapp","laurine-wabot","baileys","whatsapp-web","whatsapp-chat","whatsapp-group","botwa","stvnnvs"],"author":{"name":"jojo_xyz"},"license":"MIT","readme":"# bayilescondemnedforce\n\nBaileys modifikasi by jojo. Versi **2.3.0** menambah fitur Cpxbail di atas jalur 2.2.x. JID nomor, ID `3EB0`, anti-call, anti-overhit, dan banner naga tetap ada. Tidak ada fitur lama yang dihapus.\n\n## Yang baru\n\n- **Anti-overhit.** Query IQ dibatasi (maks 3 sekaligus) dan query grup yang sama digabung, jadi bot tidak menembak server WhatsApp sampai putus.\n- **Balasan tetap cepat.** Pesan reply, react, edit, delete, dan chat yang baru masuk lewat jalur prioritas. Broadcast/status menunggu di belakang.\n- **Tidak ada yang dibuang diam-diam.** Antrian kirim tidak di-drop. Kalau socket sudah mati, `sendMessage` melempar error dan payload-nya ada di `sock.antiOverhit.drainFailed()`.\n- **Pesan masuk tidak nyangkut.** Satu pesan rusak tidak menghentikan antrian offline. Kalau handler error, pesan tetap di-ack dan tetap di-emit supaya event berikutnya tidak hilang.\n- **Cache metadata grup** 5 menit + lookup node lebih cepat, jadi balasan grup tidak nunggu IQ berulang.\n- **Hint reconnect** di `connection.update`: `shouldReconnect` dan `reconnectDelayMs`. Jangan loop reconnect kalau session sudah logout.\n\nFitur kirim yang sudah ada tetap jalan: button, list, interactive, album, payment, product, event, poll result, group story, sticker pack, newsletter, AI icon, edit/delete.\n\n## Cpxbail yang ditambah di 2.3.0\n\n- `checkBanStatus(nomor)` — cek akun aktif, banned, atau tidak terdaftar.\n- Username: `checkUsername`, `setUsername`, `deleteUsername`, `getMyUsername`, `setUsernamePin`, `findUserByUsername`, `fetchContactUsernames`, `getUsernameRecommendations`, `checkUsernameMulti`.\n- Komunitas: `communityCreate`, `communityMetadata`, `communityCreateGroup`, `communityLinkGroup`, `communityParticipantsUpdate`, dan method komunitas lain di socket.\n- GenAI: `sendTable`, `sendList`, `sendCodeBlock`, `sendLatex`, `sendLatexImage`, `sendRichMessage`. `html` / `map` / `imageUrl` ikut `richResponse`.\n- Album bersih: `sendMessage(jid, { album: [{ image }, { video }], caption })`. Metadata spam tidak dikirim.\n- `aiLabel` default nyala untuk chat pribadi, termasuk `@lid`. Matikan dengan `aiLabel: false`.\n- `noSelfSync: true` tidak menyalin pesan ke device sendiri. Kalau lawan tidak punya device, kirim gagal dengan status 421, tidak diam-diam sukses.\n- `updateMemberLabel`, `sendMessageMembers`.\n- `sock.lidMapping` menyimpan pasangan LID/nomor. `sock.rateLimiter` tersedia, tidak menahan setiap kirim.\n- `connection.update.classifyDisconnect` memberi kategori putus. `shouldReconnect` tetap yang lama: 428 tetap reconnect, 440 tidak.\n\nYang ditambah:\n\n- `mentionAll` atau `mentions: ['@all']` di grup\n- `externalAdReply` di pesan biasa\n- `code`, `table`, `latex`, `richResponse`\n- `sendStatusMention(content, jids)` — status + mention, sudah di-pace\n- `updateCallPrivacy`, `updateMessagesPrivacy`, `updateDisableLinkPreviewsPrivacy`\n- JID masuk dinormalkan ke `628xxx@s.whatsapp.net` kalau WhatsApp kirim `@lid`. LID asli tetap di `key.remoteJidLid` / `key.participantLid`. Case memakai `msg.sender` atau `msg.key.participant || msg.key.remoteJid`. Pesan ephemeral, view-once, dan caption dibuka dulu supaya teksnya kebaca. Tombol native flow ikut `buttonsResponseMessage.selectedButtonId`.\n- ID pesan baru format `3EB0...` (prefix `Z4PH-` sudah diganti).\n- Anti-call **nyala default**: tolak telepon pribadi dan grup, plus set privasi panggilan `none` saat konek. Matikan dengan `antiCall: false`.\n\n## Pakai\n\n```js\nconst { default: makeWASocket, useMultiFileAuthState, DisconnectReason } = require('@jojoxyz/condemnedforce-baileys')\n\nconst { state, saveCreds } = await useMultiFileAuthState('./session')\nconst sock = makeWASocket({\n  auth: state,\n  // default sudah nyala. Matikan dengan antiOverhit: false\n  antiOverhit: {\n    replyGapMs: 30,\n    normalGapMs: 260,\n    bulkGapMs: 650\n  },\n  antiCall: false\n})\n\nsock.ev.on('creds.update', saveCreds)\nsock.ev.on('connection.update', ({ connection, lastDisconnect, shouldReconnect, reconnectDelayMs }) => {\n  if (connection !== 'close') return\n  const code = lastDisconnect?.error?.output?.statusCode\n  if (shouldReconnect === false || code === DisconnectReason.loggedOut) return\n  setTimeout(start, reconnectDelayMs || 2000)\n})\n\n// balasan — jalur cepat, tidak nunggu antrian bulk\nawait sock.sendMessage(jid, { text: 'siap' }, { quoted: msg })\n\n// sebut semua member grup\nawait sock.sendMessage(groupJid, { text: 'absen', mentionAll: true })\n\n// bulk / status jangan disamakan kecepatannya dengan reply\nawait sock.sendMessage(jid, { text: 'promo' }, { priority: 'low' })\n\nawait sock.sendMessage(jid, {\n  code: { language: 'js', content: 'console.log(1)' },\n  text: 'contoh',\n  ai: true\n})\n```\n\nKalau kirim gagal karena socket putus, jangan anggap pesannya hilang:\n\n```js\nconst missed = sock.antiOverhit.drainFailed()\n```\n\nPanggil itu setelah socket baru `open`, lalu kirim ulang yang masih perlu.\n\n## Config anti-overhit\n\n| Field | Default | Fungsi |\n| --- | --- | --- |\n| `maxConcurrentQueries` | 3 | batas IQ yang jalan bareng |\n| `replyGapMs` | 30 | jeda balasan setelah burst |\n| `normalGapMs` | 260 | jeda pesan biasa |\n| `bulkGapMs` | 650 | jeda broadcast/status |\n| `burst` | 4 | balasan pertama dalam 2 detik tanpa jeda |\n| `replyWindowMs` | 45000 | chat yang baru ngechat dianggap reply |\n| `holdWhileOfflineMs` | 2500 | tahan kirim sebentar kalau socket baru putus, lalu error (tidak di-drop diam-diam) |\n\n`sock.antiOverhit.stats()` dan `sock.queryLane.stats()` buat pantau antrian.\n","readmeFilename":"README.md","_rev":"1-55a1b9e291dc32c32146e3a24a06ef81"}