1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1757],{96103:function(s,o,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/en/providers/baileys",function(){return n(54903)}])},54903:function(s,o,n){"use strict";n.r(o),n.d(o,{__N_SSG:function(){return l},default:function(){return MDXContent}});var a=n(97997),t=n(11151),r=n(38706),e=n(99686),i=n(86156);function _createMdxContent(s){let o={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.ah)(),...s.components},{CodeGroup:n,Note:l,Video:p,Warning:c}=o;return n||_missingMdxReference("CodeGroup",!0),l||_missingMdxReference("Note",!0),p||_missingMdxReference("Video",!0),c||_missingMdxReference("Warning",!0),(0,a.BX)(a.HY,{children:[(0,a.tZ)(o.h1,{children:"Baileys Provider"}),"\n",(0,a.BX)(o.p,{children:["The ",(0,a.tZ)(o.a,{href:"https://whiskeysockets.github.io/Baileys/",children:"Baileys"})," library originated as a project for CS-2362 at\n",(0,a.tZ)(o.a,{href:"https://www.ashoka.edu.in/courses/mathematics-and-computer-science/",children:"Ashoka University"})," and is not affiliated\nwith or endorsed by WhatsApp. Use it at your own discretion and avoid spamming individuals. We discourage\nthe use of stalkerware, bulk messaging, or any automated messaging practices."]}),"\n",(0,a.BX)(o.p,{children:[(0,a.BX)(o.strong,{children:[(0,a.tZ)(o.a,{href:"https://whiskeysockets.github.io/Baileys/",children:"Baileys"})," is a free WhatsApp provider"]})," that operates\nvia WhatsApp Web. It interacts directly with WhatsApp Web using a WebSocket and does not require Selenium or any\nother browser. By avoiding Selenium or Chromium, Baileys conserves significant RAM resources."]}),"\n",(0,a.tZ)(r.T,{mode:!0,users:["jorgechavarriaga"]}),"\n",(0,a.tZ)(l,{children:(0,a.tZ)(o.p,{children:"Avoid using buttons and lists as they are not fully compatible. While they may display on some devices, they often fail to function as intended."})}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(o.h2,{id:"qr-code",children:"QR Code"}),"\n",(0,a.tZ)(o.p,{children:"Link device QR Code In the code below you can see the standard way to link a device by scanning the QR code with the whatsapp application."}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"import { createBot, createProvider, createFlow, addKeyword } from '@builderbot/bot'\nimport { BaileysProvider as Provider } from '@builderbot/provider-baileys'\nimport { MemoryDB as Database } from '@builderbot/bot'\n\nconst PORT = process.env.PORT ?? 3008\n\nconst welcomeFlow = addKeyword<Provider, Database>(['hi', 'hello', 'hola'])\n .addAnswer(`\uD83D\uDE4C Hello welcome to this *Chatbot*`)\n\nconst main = async () => {\n const adapterFlow = createFlow([welcomeFlow])\n const adapterProvider = createProvider(Provider)\n const adapterDB = new Database()\n const { httpServer } = await createBot({\n flow: adapterFlow,\n provider: adapterProvider,\n database: adapterDB,\n })\n httpServer(+PORT)\n}\n\nmain()\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { createBot</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createProvider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createFlow</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> addKeyword } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { BaileysProvider </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Provider } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/provider-baileys'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">
1import</span><span style="color: var(--shiki-color-text)"> { MemoryDB </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Database } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PORT</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">process</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">env</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">PORT</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">??</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">3008</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">welcomeFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">addKeyword</span><span style="color: var(--shiki-color-text)"><</span><span style="color: var(--shiki-token-function)">Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">>([</span><span style="color: var(--shiki-token-string-expression)">'hi'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'hello'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'hola'</span><span style="color: var(--shiki-color-text)">])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`\uD83D\uDE4C Hello welcome to this *Chatbot*`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> () </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createFlow</span><span style="color: var(--shiki-color-text)">([welcomeFlow])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterDB</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> { </span><span style="color: var(--shiki-token-constant)">httpServer</span><span style="color: var(--shiki-color-text)"> } </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createBot</span><span style="color: var(--shiki-color-text)">({</span></span>\n<span><span style="color: var(--shiki-color-text)"> flow</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterFlow</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> provider</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterProvider</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> database</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterDB</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">httpServer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-keyword)">+</span><span style="color: var(--shiki-token-constant)">PORT</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>'}),title:"app.ts"}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(o.h2,{id:"pairing-code",children:"Pairing code"}),"\n",(0,a.tZ)(o.p,{children:"Link device pairing code, In the code below you can see the alternative way to link the whatsapp account through a pairing code."}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"import { createBot, createProvider, createFlow, addKeyword } from '@builderbot/bot'\nimport { BaileysProvider as Provider } from '@builderbot/provider-baileys'\nimport { MemoryDB as Database } from '@builderbot/bot'\nimport { config } from 'dotenv'\nconfig()\n\nconst PHONE_NUMBER = process.env.PHONE_NUMBER\n\nconst welcomeFlow = addKeyword<Provider, Database>(['hi', 'hello', 'hola'])\n .addAnswer(`\uD83D\uDE4C Hello welcome to this *Chatbot*`)\n\nconst main = async () => {\n const adapterFlow = createFlow([welcomeFlow])\n const adapterProvider = createProvider(Provider, { usePairingCode: true, phoneNumber: PHONE_NUMBER })\n const adapterDB = new Database()\n const botResult = await createBot({\n flow: adapterFlow,\n provider: adapterProvider,\n database: adapterDB,\n })\n}\n\nmain()\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">
1import</span><span style="color: var(--shiki-color-text)"> { createBot</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createProvider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createFlow</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> addKeyword } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { BaileysProvider </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Provider } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/provider-baileys'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { MemoryDB </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Database } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { config } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'dotenv'</span></span>\n<span><span style="color: var(--shiki-token-function)">config</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">process</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">env</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">welcomeFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">addKeyword</span><span style="color: var(--shiki-color-text)"><</span><span style="color: var(--shiki-token-function)">Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">>([</span><span style="color: var(--shiki-token-string-expression)">'hi'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'hello'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'hola'</span><span style="color: var(--shiki-color-text)">])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`\uD83D\uDE4C Hello welcome to this *Chatbot*`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> () </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createFlow</span><span style="color: var(--shiki-color-text)">([welcomeFlow])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)">
1 { usePairingCode</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> phoneNumber</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterDB</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">botResult</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createBot</span><span style="color: var(--shiki-color-text)">({</span></span>\n<span><span style="color: var(--shiki-color-text)"> flow</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterFlow</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> provider</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterProvider</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> database</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterDB</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>'}),title:"app.ts"}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(o.h2,{id:"send-presence-update",children:"Send Presence Update"}),"\n",(0,a.BX)(o.p,{children:["The method ",(0,a.tZ)("strong",{children:"sendPresenceUpdate"})," lets the person/group with id know whether you're online, offline, typing etc.\nThis method has the following signature:"]}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"(property) sendPresenceUpdate: (type: WAPresence, toJid?: string) => Promise<void>\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-color-text)">(property) sendPresenceUpdate</span><span style="color: var(--shiki-token-punctuation)">:</span><span style="color: var(--shiki-color-text)"> (type</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">WAPresence</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> toJid</span><span style="color: var(--shiki-token-keyword)">?:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">string</span><span style="color: var(--shiki-color-text)">) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">Promise</span><span style="color: var(--shiki-token-keyword)"><void></span></span>\n<span></span>'})}),"\n",(0,a.tZ)(o.p,{children:"WAPresence can be one of the following:"}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"type WAPresence = 'unavailable' | 'available' | 'composing' | 'recording' | 'paused'\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">type</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">WAPresence</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'unavailable'</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">|</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'available'</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">|</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'composing'</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">|</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'recording'</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">|</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'paused'</span></span>\n<span></span>'})}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"import { createBot, createProvider, createFlow, addKeyword, EVENTS } from '@builderbot/bot'\nimport { MemoryDB as Database } from '@builderbot/bot'\nimport { BaileysProvider as Provider } from '@builderbot/provider-baileys'\nimport { config } from 'dotenv'\nconfig()\n\nconst PHONE_NUMBER = process.env.PHONE_NUMBER\n\nconst waitT = (ms: number) => {\n return new Promise((resolve) => {\n setTimeout(() =>
1 {\n resolve(ms)\n }, ms)\n })\n}\n\nconst welcomeFlow = addKeyword<Provider, Database>(EVENTS.WELCOME)\n .addAnswer(`\uD83D\uDCA1 Example *Sending Presence Update*`)\n .addAction(\n async (ctx, { provider, flowDynamic }) => {\n await flowDynamic('This is an example of presence update')\n await provider.vendor.sendPresenceUpdate('recording', ctx.key.remoteJid)\n await waitT(5000)\n await provider.vendor.sendPresenceUpdate('composing', ctx.key.remoteJid)\n await waitT(5000)\n await flowDynamic('Great!')\n }\n )\n\nconst main = async () => {\n const adapterFlow = createFlow([welcomeFlow])\n const adapterProvider = createProvider(Provider, { usePairingCode: true, phoneNumber: PHONE_NUMBER })\n const adapterDB = new Database()\n const botResult = await createBot(\n {\n flow: adapterFlow,\n provider: adapterProvider,\n database: adapterDB,\n }\n )\n\n}\n\nmain()\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { createBot</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createProvider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createFlow</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> addKeyword</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> EVENTS } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { MemoryDB </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Database } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { BaileysProvider </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Provider } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/provider-baileys'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { config } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'dotenv'</span></span>\n<span><span style="color: var(--shiki-token-function)">config</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">process</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">env</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">waitT</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> (ms</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">number</span><span style="color: var(--shiki-color-text)">) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">return</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">Promise</span><span style="color: var(--shiki-color-text)">((resolve) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">setTimeout</span><span style="color: var(--shiki-color-text)">(() </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">resolve</span><span style="color: var(--shiki-color-text)">(ms)</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> ms)</span></span>\n<span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">welcomeFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">addKeyword</span><span style="color: var(--shiki-color-text)"><</span><span style="color: var(--shiki-token-function)">Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">>(</span><span style="color: var(--shiki-token-constant)">EVENTS</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">WELCOME</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`\uD83D\uDCA1 Example *Sending Presence Update*`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAction</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> (ctx</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> flowDynamic }) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">'This is an example of presence update'</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">provider</span><span style="color: var(--shiki-token-function)">
1.</span><span style="color: var(--shiki-token-constant)">vendor</span><span style="color: var(--shiki-token-function)">.sendPresenceUpdate</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">'recording'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">key</span><span style="color: var(--shiki-color-text)">.remoteJid)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">waitT</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-constant)">5000</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">provider</span><span style="color: var(--shiki-token-function)">.</span><span style="color: var(--shiki-token-constant)">vendor</span><span style="color: var(--shiki-token-function)">.sendPresenceUpdate</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">'composing'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">key</span><span style="color: var(--shiki-color-text)">.remoteJid)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">waitT</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-constant)">5000</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">'Great!'</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> () </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createFlow</span><span style="color: var(--shiki-color-text)">([welcomeFlow])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)">
1 { usePairingCode</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> phoneNumber</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterDB</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">botResult</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createBot</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> flow</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterFlow</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> provider</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterProvider</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> database</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterDB</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>'}),title:"app.ts"}),"\n",(0,a.tZ)(p,{label:"Video Send Presence Update",yt:"lknNwerosHQ"}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(o.h2,{id:"number-exists-on-whats-app",children:"Number Exists on WhatsApp"}),"\n",(0,a.BX)(o.p,{children:["To check if an entered number exists on WhatsApp, you use the ",(0,a.tZ)("strong",{children:"onWhatsApp"})," method of the provider.\nThis method has the following signature:"]}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"onWhatsApp: (...jids: string[]) => Promise<{\n exists: boolean;\n jid: string;\n}[]>\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-color-text)">onWhatsApp</span><span style="color: var(--shiki-token-punctuation)">:</span><span style="color: var(--shiki-color-text)"> (</span><span style="color: var(--shiki-token-keyword)">...</span><span style="color: var(--shiki-color-text)">jids</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">string</span><span style="color: var(--shiki-color-text)">[]) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">Promise</span><span style="color: var(--shiki-color-text)"><{</span></span>\n<span><span style="color: var(--shiki-color-text)"> exists</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">boolean</span><span style="color: var(--shiki-color-text)">;</span></span>\n<span><span style="color: var(--shiki-color-text)"> jid</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">string</span><span style="color: var(--shiki-color-text)">;</span></span>\n<span><span style="color: var(--shiki-color-text)">}[]></span></span>\n<span></span>'})}),"\n",(0,a.tZ)(o.p,{children:"This method accepts one or more phone numbers (JIDs) as arguments and returns a promise that resolves to an array of objects containing\nthe existence status (exists) and JID (jid) for each number."}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"import { createBot, createProvider, createFlow, addKeyword, EVENTS } from '@builderbot/bot'\nimport { MemoryDB as Database } from '@builderbot/bot'\nimport { BaileysProvider as Provider } from '@builderbot/provider-baileys'\nimport { config } from 'dotenv'\nconfig()\n\nconst PHONE_NUMBER = process.env.PHONE_NUMBER\n\nconst welcomeFlow = addKeyword<Provider, Database>(EVENTS.WELCOME)\n .addAnswer(`\uD83D\uDCA1 Example *Number Exist on Whatsapp*`)\n .addAnswer(\n '*Enter the number to check:*',\n { capture: true },\n async (ctx, { provider, flowDynamic }) =>
1 {\n const checkNumber = ctx.body\n try {\n const onWhats = await provider.vendor.onWhatsApp(checkNumber)\n if (onWhats[0]?.exists) {\n await flowDynamic([`*Exists:* ${onWhats[0].exists}\\n*JID:* ${onWhats[0].jid}`, `*Object:* ${JSON.stringify(onWhats, null, 6)}`])\n }\n else {\n await flowDynamic(`The number *${checkNumber}* does not exists on Whatsapp.`)\n }\n } catch (error) {\n await flowDynamic(`*Error:* ${error}`);\n }\n }\n )\n\nconst main = async () => {\n const adapterFlow = createFlow([welcomeFlow])\n const adapterProvider = createProvider(Provider, { usePairingCode: true, phoneNumber: PHONE_NUMBER })\n const adapterDB = new Database()\n const botResult = await createBot(\n {\n flow: adapterFlow,\n provider: adapterProvider,\n database: adapterDB,\n }\n )\n}\n\nmain()\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { createBot</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createProvider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createFlow</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> addKeyword</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> EVENTS } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { MemoryDB </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Database } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { BaileysProvider </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Provider } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/provider-baileys'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { config } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'dotenv'</span></span>\n<span><span style="color: var(--shiki-token-function)">config</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">process</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">env</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">welcomeFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">addKeyword</span><span style="color: var(--shiki-color-text)"><</span><span style="color: var(--shiki-token-function)">Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">>(</span><span style="color: var(--shiki-token-constant)">EVENTS</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">WELCOME</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`\uD83D\uDCA1 Example *Number Exist on Whatsapp*`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'*Enter the number to check:*'</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> { capture</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-color-text)"> }</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> (ctx</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> flowDynamic }) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">checkNumber</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-color-text)">.body</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">try</span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">onWhats</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">provider</span><span style="color: var(--shiki-token-function)">
1.</span><span style="color: var(--shiki-token-constant)">vendor</span><span style="color: var(--shiki-token-function)">.onWhatsApp</span><span style="color: var(--shiki-color-text)">(checkNumber)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">if</span><span style="color: var(--shiki-color-text)"> (onWhats[</span><span style="color: var(--shiki-token-constant)">0</span><span style="color: var(--shiki-color-text)">]?.exists) {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">([</span><span style="color: var(--shiki-token-string-expression)">`*Exists:* </span><span style="color: var(--shiki-token-keyword)">${</span><span style="color: var(--shiki-color-text)">onWhats[</span><span style="color: var(--shiki-token-constant)">0</span><span style="color: var(--shiki-color-text)">].exists</span><span style="color: var(--shiki-token-keyword)">}</span><span style="color: var(--shiki-token-string-expression)">\\n*JID:* </span><span style="color: var(--shiki-token-keyword)">${</span><span style="color: var(--shiki-color-text)">onWhats[</span><span style="color: var(--shiki-token-constant)">0</span><span style="color: var(--shiki-color-text)">].jid</span><span style="color: var(--shiki-token-keyword)">}</span><span style="color: var(--shiki-token-string-expression)">`</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">`*Object:* </span><span style="color: var(--shiki-token-keyword)">${</span><span style="color: var(--shiki-token-constant)">JSON</span><span style="color: var(--shiki-token-function)">.stringify</span><span style="color: var(--shiki-color-text)">(onWhats</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">null</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">6</span><span style="color: var(--shiki-color-text)">)</span><span style="color: var(--shiki-token-keyword)">}</span><span style="color: var(--shiki-token-string-expression)">`</span><span style="color: var(--shiki-color-text)">])</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">else</span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`The number *</span><span style="color: var(--shiki-token-keyword)">${</span><span style="color: var(--shiki-color-text)">checkNumber</span><span style="color: var(--shiki-token-keyword)">}</span><span style="color: var(--shiki-token-string-expression)">* does not exists on Whatsapp.`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> } </span><span style="color: var(--shiki-token-keyword)">catch</span><span style="color: var(--shiki-color-text)"> (error) {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">
1`*Error:* </span><span style="color: var(--shiki-token-keyword)">${</span><span style="color: var(--shiki-color-text)">error</span><span style="color: var(--shiki-token-keyword)">}</span><span style="color: var(--shiki-token-string-expression)">`</span><span style="color: var(--shiki-color-text)">);</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> () </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createFlow</span><span style="color: var(--shiki-color-text)">([welcomeFlow])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { usePairingCode</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> phoneNumber</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterDB</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">botResult</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createBot</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> flow</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterFlow</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> provider</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterProvider</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> database</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterDB</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>'}),title:"app.ts"}),"\n",(0,a.tZ)("img",{style:{minHeight:"450px"},className:"rounded-2xl bg-zinc-900 w-full shadow-md dark:ring-1 dark:ring-white/10",src:"/assets/examples/onWhatsapp.png",alt:"API Call Example"}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(o.h2,{id:"profile-picture",children:"Profile Picture"}),"\n",(0,a.BX)(o.p,{children:["The method ",(0,a.tZ)("strong",{children:"profilePictureUrl"})," allows us to retrieve the profile picture of a given number.\nThis method has the following signature:"]}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:'(property) profilePictureUrl: (jid: string, type?: "image" | "preview", timeoutMs?: number) => Promise<string>\n',children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-color-text)">(property) profilePictureUrl</span><span style="color: var(--shiki-token-punctuation)">:</span><span style="color: var(--shiki-color-text)"> (jid</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">string</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> type</span><span style="color: var(--shiki-token-keyword)">?:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">"image"</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">|</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">"preview"</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> timeoutMs</span><span style="color: var(--shiki-token-keyword)">?:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">number</span><span style="color: var(--shiki-color-text)">) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">Promise</span><span style="color: var(--shiki-token-keyword)"><</span><span style="color: var(--shiki-color-text)">string</span><span style="color: var(--shiki-token-keyword)">></span></span>\n<span></span>'})}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"import { createBot, createProvider, createFlow, addKeyword, EVENTS } from '@builderbot/bot'\nimport { BaileysProvider as Provider } from '@builderbot/provider-baileys'\nimport { MemoryDB as Database } from '@builderbot/bot'\nimport { config } from 'dotenv'\nconfig()\n\nconst PHONE_NUMBER = process.env.PHONE_NUMBER\n\nconst welcomeFlow = addKeyword<Provider, Database>(EVENTS.WELCOME)\n .addAnswer(`\uD83D\uDCA1 Example *profile Picture*`)\n .addAnswer(\n 'Enter number to check image profile: ', { capture: true },\n async (ctx, { provider, flowDynamic, fallBack, endFlow }) =>
1 {\n const check = ctx.body + '@s.whatsapp.net'\n try {\n const imageProfile = await provider.vendor.profilePictureUrl(check.replace(/\\+/g, ''), 'image', 10000)\n await flowDynamic([\n {\n body: '*Profile Picture:*',\n media: imageProfile\n }\n ])\n return endFlow('End.')\n } catch (error) {\n await flowDynamic(`Error: ${error.message}`)\n return fallBack('Try it again.')\n }\n\n }\n )\n\nconst main = async () => {\n const adapterFlow = createFlow([welcomeFlow])\n const adapterProvider = createProvider(Provider, { usePairingCode: true, phoneNumber: PHONE_NUMBER })\n const adapterDB = new Database()\n const botResult = await createBot(\n {\n flow: adapterFlow,\n provider: adapterProvider,\n database: adapterDB,\n }\n )\n}\n\nmain()\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { createBot</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createProvider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createFlow</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> addKeyword</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> EVENTS } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { BaileysProvider </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Provider } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/provider-baileys'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { MemoryDB </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Database } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { config } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'dotenv'</span></span>\n<span><span style="color: var(--shiki-token-function)">config</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">process</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">env</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">welcomeFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">addKeyword</span><span style="color: var(--shiki-color-text)"><</span><span style="color: var(--shiki-token-function)">Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">>(</span><span style="color: var(--shiki-token-constant)">EVENTS</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">WELCOME</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`\uD83D\uDCA1 Example *profile Picture*`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'Enter number to check image profile: '</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { capture</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-color-text)"> }</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> (ctx</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> flowDynamic</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> fallBack</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> endFlow }) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">check</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-color-text)">.body </span><span style="color: var(--shiki-token-keyword)">+</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@s.whatsapp.net'</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">try</span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">imageProfile</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">provider</span><span style="color: var(--shiki-token-function)">
1.</span><span style="color: var(--shiki-token-constant)">vendor</span><span style="color: var(--shiki-token-function)">.profilePictureUrl</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-constant)">check</span><span style="color: var(--shiki-token-function)">.replace</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">/\\+/</span><span style="color: var(--shiki-token-keyword)">g</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">''</span><span style="color: var(--shiki-color-text)">)</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'image'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">10000</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">([</span></span>\n<span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> body</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'*Profile Picture:*'</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> media</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> imageProfile</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> ])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">return</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">endFlow</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">'End.'</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> } </span><span style="color: var(--shiki-token-keyword)">catch</span><span style="color: var(--shiki-color-text)"> (error) {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`Error: </span><span style="color: var(--shiki-token-keyword)">${</span><span style="color: var(--shiki-token-constant)">error</span><span style="color: var(--shiki-color-text)">.message</span><span style="color: var(--shiki-token-keyword)">}</span><span style="color: var(--shiki-token-string-expression)">`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">return</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">fallBack</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">'Try it again.'</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> () </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createFlow</span><span style="color: var(--shiki-color-text)">([welcomeFlow])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)">
1 { usePairingCode</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> phoneNumber</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterDB</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">botResult</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createBot</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> flow</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterFlow</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> provider</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterProvider</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> database</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterDB</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>'}),title:"app.ts"}),"\n",(0,a.tZ)("img",{style:{minHeight:"450px"},className:"rounded-2xl bg-zinc-900 w-full shadow-md dark:ring-1 dark:ring-white/10",src:"/assets/examples/imageProfile.png",alt:"API Call Example"}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(o.h2,{id:"modifying-chats",children:"Modifying Chats"}),"\n",(0,a.tZ)(o.p,{children:"The chatModify method provides various options to modify a chat, including:"}),"\n",(0,a.BX)(o.ul,{children:["\n",(0,a.tZ)(o.li,{children:"Archive a chat"}),"\n",(0,a.tZ)(o.li,{children:"Mute/unmute a chat"}),"\n",(0,a.tZ)(o.li,{children:"Mark a chat read/unread"}),"\n",(0,a.tZ)(o.li,{children:"Delete a message for me"}),"\n",(0,a.tZ)(o.li,{children:"Delete a chat"}),"\n",(0,a.tZ)(o.li,{children:"Pin/unpin a chat"}),"\n",(0,a.tZ)(o.li,{children:"Star/unstar a message"}),"\n"]}),"\n",(0,a.tZ)(o.p,{children:"This method has the following signature:"}),"\n",(0,a.tZ)(o.pre,{code:"(property) chatModify: (mod: ChatModification, jid: string) => Promise<void>\n",children:(0,a.tZ)(o.code,{children:"(property) chatModify: (mod: ChatModification, jid: string) => Promise<void>\n"})}),"\n",(0,a.BX)(o.p,{children:[(0,a.tZ)("strong",{children:"Delete a message for me"})," when the received message does not comply with my business logic rules. (Develop your own logic rules)"]}),"\n",(0,a.tZ)(o.pre,{language:"ts",code:"import { createBot, createProvider, createFlow, addKeyword, EVENTS } from '@builderbot/bot'\nimport { BaileysProvider as Provider } from '@builderbot/provider-baileys'\nimport { MemoryDB as Database } from '@builderbot/bot'\nimport { config } from 'dotenv'\nconfig()\n\nconst PHONE_NUMBER = process.env.PHONE_NUMBER\n\nconst badWords = ['fuck', 'ass hole', 'motherfucker']\n\nconst waitT = (ms: number) => {\n return new Promise((resolve) => {\n setTimeout(() =>
1 {\n resolve(ms);\n }, ms)\n })\n}\n\nconst welcomeFlow = addKeyword<Provider, Database>(EVENTS.WELCOME)\n .addAnswer(`\uD83D\uDCA1 Example *Delete User Message:*`)\n .addAction(\n async (ctx, { provider, flowDynamic }) => {\n const resp = ctx.body.toLocaleLowerCase()\n const containsBadWord = badWords.some(word => resp.includes(word))\n const id = ctx.key.id\n const fromMe = ctx.key.fromMe\n const timeStamp = ctx.messageTimestamp\n if (containsBadWord) {\n await flowDynamic('Your message is going to be deleted as you are sending inappropriate language.')\n await waitT(3500)\n try {\n await provider.vendor.chatModify(\n { clear: { messages: [{ id: id, fromMe: fromMe, timestamp: timeStamp }] } },\n ctx.key.remoteJid\n )\n await flowDynamic(`Message deleted successfully.`)\n } catch (error) {\n await flowDynamic(`Error: ${JSON.stringify(error, null, 3)}`)\n }\n }\n await flowDynamic('Welcome!')\n }\n )\n\nconst main = async () => {\n const adapterFlow = createFlow([welcomeFlow])\n const adapterProvider = createProvider(Provider, { usePairingCode: true, phoneNumber: PHONE_NUMBER })\n const adapterDB = new Database()\n const botResult = await createBot(\n {\n flow: adapterFlow,\n provider: adapterProvider,\n database: adapterDB,\n }\n )\n}\n\nmain()\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { createBot</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createProvider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createFlow</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> addKeyword</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> EVENTS } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { BaileysProvider </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Provider } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/provider-baileys'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { MemoryDB </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Database } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { config } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'dotenv'</span></span>\n<span><span style="color: var(--shiki-token-function)">config</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">process</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">
1env</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">badWords</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> [</span><span style="color: var(--shiki-token-string-expression)">'fuck'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'ass hole'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'motherfucker'</span><span style="color: var(--shiki-color-text)">]</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">waitT</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> (ms</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">number</span><span style="color: var(--shiki-color-text)">) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">return</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">Promise</span><span style="color: var(--shiki-color-text)">((resolve) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">setTimeout</span><span style="color: var(--shiki-color-text)">(() </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">resolve</span><span style="color: var(--shiki-color-text)">(ms);</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> ms)</span></span>\n<span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">welcomeFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">addKeyword</span><span style="color: var(--shiki-color-text)"><</span><span style="color: var(--shiki-token-function)">Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">>(</span><span style="color: var(--shiki-token-constant)">EVENTS</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">WELCOME</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`\uD83D\uDCA1 Example *Delete User Message:*`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAction</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> (ctx</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> flowDynamic }) </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">resp</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-token-function)">
1.</span><span style="color: var(--shiki-token-constant)">body</span><span style="color: var(--shiki-token-function)">.toLocaleLowerCase</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">containsBadWord</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">badWords</span><span style="color: var(--shiki-token-function)">.some</span><span style="color: var(--shiki-color-text)">(word </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">resp</span><span style="color: var(--shiki-token-function)">.includes</span><span style="color: var(--shiki-color-text)">(word))</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">id</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">key</span><span style="color: var(--shiki-color-text)">.id</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">fromMe</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">key</span><span style="color: var(--shiki-color-text)">.fromMe</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">timeStamp</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-color-text)">.messageTimestamp</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">if</span><span style="color: var(--shiki-color-text)"> (containsBadWord) {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">'Your message is going to be deleted as you are sending inappropriate language.'</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">waitT</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-constant)">3500</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">try</span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">provider</span><span style="color: var(--shiki-token-function)">
1.</span><span style="color: var(--shiki-token-constant)">vendor</span><span style="color: var(--shiki-token-function)">.chatModify</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> { clear</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> { messages</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> [{ id</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> id</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> fromMe</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> fromMe</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> timestamp</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> timeStamp }] } }</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">ctx</span><span style="color: var(--shiki-color-text)">.</span><span style="color: var(--shiki-token-constant)">key</span><span style="color: var(--shiki-color-text)">.remoteJid</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`Message deleted successfully.`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> } </span><span style="color: var(--shiki-token-keyword)">catch</span><span style="color: var(--shiki-color-text)"> (error) {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`Error: </span><span style="color: var(--shiki-token-keyword)">${</span><span style="color: var(--shiki-token-constant)">JSON</span><span style="color: var(--shiki-token-function)">.stringify</span><span style="color: var(--shiki-color-text)">(error</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">null</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">3</span><span style="color: var(--shiki-color-text)">)</span><span style="color: var(--shiki-token-keyword)">}</span><span style="color: var(--shiki-token-string-expression)">`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">flowDynamic</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">'Welcome!'</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> () </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createFlow</span><span style="color: var(--shiki-color-text)">([welcomeFlow])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)">
1 { usePairingCode</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> phoneNumber</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">PHONE_NUMBER</span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterDB</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">botResult</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createBot</span><span style="color: var(--shiki-color-text)">(</span></span>\n<span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> flow</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterFlow</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> provider</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterProvider</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> database</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterDB</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> }</span></span>\n<span><span style="color: var(--shiki-color-text)"> )</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>'}),title:"app.ts"}),"\n",(0,a.tZ)(p,{label:"Delete user message",yt:"c0fQtjIYFVU"}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(o.h2,{id:"improve-performance-with-baileys",children:"Improve performance with Baileys"}),"\n",(0,a.tZ)(o.p,{children:"Baileys is a powerful provider for WhatsApp, but its ability to listen and process a wide range of events in real-time can lead to significant resource consumption, especially for highly active accounts. This guide will help you optimize your builderbot.app bot's performance when using Baileys as a provider."}),"\n",(0,a.BX)(c,{children:[(0,a.tZ)(o.h3,{children:"Quickly optimize your Baileys provider"}),(0,a.tZ)(o.p,{children:"Activate these options in your Baileys provider configuration to improve performance:"}),(0,a.tZ)(o.pre,{language:"typescript",code:"const adapterProvider = createProvider(Provider, { \n experimentalStore: true, // Significantly reduces resource consumption\n timeRelease: 10800000, // Cleans up data every 3 hours (in milliseconds)\n})\n",children:(0,a.tZ)(o.code,{className:"language-typescript",children:'<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { </span></span>\n<span><span style="color: var(--shiki-color-text)"> experimentalStore</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-comment)">// Significantly reduces resource consumption</span></span>\n<span><span style="color: var(--shiki-color-text)"> timeRelease</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">10800000</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-comment)">// Cleans up data every 3 hours (in milliseconds)</span></span>\n<span><span style="color: var(--shiki-color-text)">})</span></span>\n<span></span>'})}),(0,a.BX)(o.p,{children:["In addition to this configuration I recommend a reboot every 12 or 24 hours depen
1ding on how active your bot is. You can follow this guide to ",(0,a.tZ)(o.a,{href:"/showcases/docker-pm2",children:"configure the restarts"})]}),(0,a.tZ)(o.h3,{children:"Benefits:"}),(0,a.BX)(o.ul,{children:["\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.code,{children:"experimentalStore: true"}),": Limits processing to individual messages only, drastically reducing resource usage."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.code,{children:"timeRelease: 10800000"}),": Performs periodic cleanups of accumulated data every 3 hours."]}),"\n"]}),(0,a.BX)(o.p,{children:[(0,a.tZ)(o.strong,{children:"Note"}),": ",(0,a.tZ)(o.code,{children:"experimentalStore"})," may limit some advanced WhatsApp functionalities, especially for groups."]})]}),"\n",(0,a.tZ)(o.h3,{children:"Types of monitored events"}),"\n",(0,a.tZ)(o.p,{children:"Baileys constantly monitors various types of events, including:"}),"\n",(0,a.BX)(o.ol,{children:["\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Individual messages"}),": Sending and receiving messages in one-on-one chats."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Group messages"}),": All activity in WhatsApp groups."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Read states"}),": Updates when messages are read."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Contact stories"}),": Posting and viewing of statuses/stories."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Message editing and deletion"}),": Changes to existing messages."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Reactions"}),": Emojis and other reactions to messages."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Profile updates"}),": Changes in profile pictures, statuses, etc."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Calls"}),": Notifications of incoming and outgoing calls."]}),"\n"]}),"\n",(0,a.tZ)(o.h3,{children:"Impact on resources"}),"\n",(0,a.BX)(o.ol,{children:["\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Constant processing"}),": Each event triggers processes in the bot, consuming CPU."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Data storage"}),': Events are recorded in "baileys_store.json", increasing storage usage.']}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Frequent overwriting"}),": The file is updated with each new event, which can be I/O intensive."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Exponential growth"}),": In very active accounts, the volume of events can grow rapidly."]}),"\n"]}),"\n",(0,a.tZ)(o.h3,{children:"Optimization strategies"}),"\n",(0,a.tZ)(o.h3,{children:"1. Using ExperimentalStore"}),"\n",(0,a.BX)(o.p,{children:["The ",(0,a.tZ)(o.code,{children:"experimentalStore: true"})," option is an advanced feature in builderbot.app designed to significantly optimize the bot's resource usage."]}),"\n",(0,a.tZ)(o.h4,{children:"How it works:"}),"\n",(0,a.BX)(o.ul,{children:["\n",(0,a.tZ)(o.li,{children:"Limits listening and processing to only individual message events."}),"\n",(0,a.tZ)(o.li,{children:"Drastically reduces resource consumption by ignoring other types of events."}),"\n"]}),"\n",(0,a.tZ)(o.h4,{children:"Implementation:"}),"\n",(0,a.tZ)(o.pre,{language:"typescript",code:"const adapterProvider = createProvider(Provider, { \n experimentalStore: true,\n timeRelease: 10800000, // 3 hours in milliseconds\n})\n",children:(0,a.tZ)(o.code,{className:"language-typescript",children:'<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { </span></span>\n<span><span style="color: var(--shiki-color-text)"> experimentalStore</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> timeRelease</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">10800000</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-comment)">// 3 hours in milliseconds</span></span>\n<span><span style="color: var(--shiki-color-text)">})</span></span>\n<span></span>'})}),"\n",(0,a.tZ)(o.h4,{children:"Important limitations:"}),"\n",(0,a.BX)(o.ul,{children:["\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Only for individual messages"}),': Works exclusively with "message" type events for individual chats.']}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Not compatible with group functions"}),": Not suitable for bots requiring group functionalities."]}),"\n",(0,a.BX)(o.li,{children:[(0,a.tZ)(o.strong,{children:"Feature restriction"}),": Some advanced WhatsApp features may not work correctly."]}),"\n"]}),"\n",(0,a.tZ)(o.h3,{children:"2. Event filtering"}),"\n",(0,a.tZ)(o.p,{children:"Configure Baileys to ignore non-essential events for your bot. This can be done through provider configuration or by selectively handling events in your code."}),"\n",(0,a.tZ)(o.h3,{children:"3. Periodic cleanup"}),"\n",(0,a.BX)(o.p,{children:["Use the ",(0,a.tZ)(o.code,{children:"timeRelease"})," option or scheduled restarts to clear accumulated data. This helps keep the storage file size under control."]}),"\n",(0,a.tZ)(o.h3,{children:"4. Selective monitoring"}),"\n",(0,a.tZ)(o.p,{children:"If possible, limit the number of chats or groups actively monitored. This can significantly reduce the number of processed events."}),"\n",(0,a.tZ)(o.h3,{children:"Implementation example"}),"\n",(0,a.tZ)(o.p,{children:"Here's an example of how to implement these strategies in your bot:"}),"\n",(0,a.BX)(o.p,{children:["This example uses ",(0,a.tZ)(o.code,{children:"experimentalStore"})," and ",(0,a.tZ)(o.code,{children:"timeRelease"})," to optimize the bot's performance."]}),"\n",(0,a.BX)(n,{children:[(0,a.tZ)(o.pre,{language:"ts",code:"import { createBot, createProvider, createFlow, addKeyword } from '@builderbot/bot'\nimport { BaileysProvider as Provider } from '@builderbot/provider-baileys'\nimport { MemoryDB as Database } from '@builderbot/bot'\nimport { config } from 'dotenv'\nconfig()\n\n\nconst welcomeFlow = addKeyword<Provider, Database>(['hi', 'hello', 'hola'])\n .addAnswer(`\uD83D\uDE4C Hello welcome to this *Chatbot*`)\n\nconst main = async () => {\n const adapterFlow = createFlow([welcomeFlow])\n const adapterProvider = createProvider(Provider, { \n timeRelease: 10800000, // 3 hours in milliseconds\n })\n\n const adapterDB = new Database()\n const botResult = await createBot({\n flow: adapterFlow,\n provider: adapterProvider,\n database: adapterDB,\n })\n}\n\nmain()\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">
1import</span><span style="color: var(--shiki-color-text)"> { createBot</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createProvider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createFlow</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> addKeyword } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { BaileysProvider </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Provider } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/provider-baileys'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { MemoryDB </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Database } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { config } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'dotenv'</span></span>\n<span><span style="color: var(--shiki-token-function)">config</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">welcomeFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">addKeyword</span><span style="color: var(--shiki-color-text)"><</span><span style="color: var(--shiki-token-function)">Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">>([</span><span style="color: var(--shiki-token-string-expression)">'hi'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'hello'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'hola'</span><span style="color: var(--shiki-color-text)">])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`\uD83D\uDE4C Hello welcome to this *Chatbot*`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> () </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createFlow</span><span style="color: var(--shiki-color-text)">([welcomeFlow])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { </span></span>\n<span><span style="color: var(--shiki-color-text)"> timeRelease</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">10800000</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-comment)">// 3 hours in milliseconds</span></span>\n<span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterDB</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">botResult</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createBot</span><span style="color: var(--shiki-color-text)">({</span></span>\n<span><span style="color: var(--shiki-color-text)"> flow</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterFlow</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> provider</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterProvider</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> database</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterDB</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>'}),title:"app.ts"}),(0,a.tZ)(o.pre,{language:"ts",code:"import { createBot, createProvider, createFlow, addKeyword } from '@builderbot/bot'\nimport { BaileysProvider as Provider } from '@builderbot/provider-baileys'\nimport { MemoryDB as Database } from '@builderbot/bot'\nimport { config } from 'dotenv'\nconfig()\n\n\nconst welcomeFlow = addKeyword<Provider, Database>(['hi', 'hello', 'hola'])\n .addAnswer(`\uD83D\uDE4C Hello welcome to this *Chatbot*`)\n\nconst main = async () => {\n const adapterFlow = createFlow([welcomeFlow])\n const adapterProvider = createProvider(Provider, { \n experimentalStore: true,\n timeRelease: 10800000, // 3 hours in milliseconds\n })\n\n const adapterDB = new Database()\n const botResult = await createBot({\n flow: adapterFlow,\n provider: adapterProvider,\n database: adapterDB,\n })\n}\n\nmain()\n",children:(0,a.tZ)(o.code,{className:"language-ts",children:'<span><span style="color: var(--shiki-token-keyword)">
1import</span><span style="color: var(--shiki-color-text)"> { createBot</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createProvider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> createFlow</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> addKeyword } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { BaileysProvider </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Provider } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/provider-baileys'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { MemoryDB </span><span style="color: var(--shiki-token-keyword)">as</span><span style="color: var(--shiki-color-text)"> Database } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'@builderbot/bot'</span></span>\n<span><span style="color: var(--shiki-token-keyword)">import</span><span style="color: var(--shiki-color-text)"> { config } </span><span style="color: var(--shiki-token-keyword)">from</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'dotenv'</span></span>\n<span><span style="color: var(--shiki-token-function)">config</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">welcomeFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">addKeyword</span><span style="color: var(--shiki-color-text)"><</span><span style="color: var(--shiki-token-function)">Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">>([</span><span style="color: var(--shiki-token-string-expression)">'hi'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'hello'</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">'hola'</span><span style="color: var(--shiki-color-text)">])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">.addAnswer</span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-string-expression)">`\uD83D\uDE4C Hello welcome to this *Chatbot*`</span><span style="color: var(--shiki-color-text)">)</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">async</span><span style="color: var(--shiki-color-text)"> () </span><span style="color: var(--shiki-token-keyword)">=></span><span style="color: var(--shiki-color-text)"> {</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterFlow</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createFlow</span><span style="color: var(--shiki-color-text)">([welcomeFlow])</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterProvider</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createProvider</span><span style="color: var(--shiki-color-text)">(Provider</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> { </span></span>\n<span><span style="color: var(--shiki-color-text)"> experimentalStore</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> timeRelease</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">10800000</span><span style="color: var(--shiki-token-punctuation)">,</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-comment)">// 3 hours in milliseconds</span></span>\n<span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">adapterDB</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">new</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Database</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">const</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">botResult</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">await</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">createBot</span><span style="color: var(--shiki-color-text)">({</span></span>\n<span><span style="color: var(--shiki-color-text)"> flow</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterFlow</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> provider</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterProvider</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> database</span><span style="color: var(--shiki-token-keyword)">:</span><span style="color: var(--shiki-color-text)"> adapterDB</span><span style="color: var(--shiki-token-punctuation)">,</span></span>\n<span><span style="color: var(--shiki-color-text)"> })</span></span>\n<span><span style="color: var(--shiki-color-text)">}</span></span>\n<span></span>\n<span><span style="color: var(--shiki-token-function)">main</span><span style="color: var(--shiki-color-text)">()</span></span>\n<span></span>'}),title:"app-experimental.ts"})]}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(o.h2,{id:"more-examples",children:"More examples"}),"\n",(0,a.tZ)(o.p,{children:"If you want to see more examples applying Baiely's functions you can check the links below"}),"\n",(0,a.BX)(o.table,{children:[(0,a.tZ)(o.thead,{children:(0,a.BX)(o.tr,{children:[(0,a.tZ)(o.th,{}),(0,a.tZ)(o.th,{})]})}),(0,a.BX)(o.tbody,{children:[(0,a.BX)(o.tr,{children:[(0,a.tZ)(o.td,{children:(0,a.tZ)(o.a,{href:"/providers/baileys/delete-bot-message",children:"Delete Bot Message"})}),(0,a.tZ)(o.td,{children:"Delete an existing message in the conversation"})]}),(0,a.BX)(o.tr,{children:[(0,a.tZ)(o.td,{children:(0,a.tZ)(o.a,{href:"/providers/baileys/blocked-users",children:"Blocked Users on Bot"})}),(0,a.tZ)(o.td,{children:"Block Whatsapp user using the provider"})]}),(0,a.BX)(o.tr,{children:[(0,a.tZ)(o.td,{children:(0,a.tZ)(o.a,{href:"/providers/baileys/fetchStatus",children:"Fetch Status"})}),(0,a.tZ)(o.td,{children:"Retrieve all whatsapp profile status information"})]})]})]}),"\n",(0,a.tZ)(o.hr,{}),"\n",(0,a.tZ)(i.t,{}),"\n",(0,a.tZ)(e._,{})]})}var l=!0;function MDXContent(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:o}={...(0,t.ah)(),...s.components};return o?(0,a.tZ)(o,{...s,children:(0,a.tZ)(_createMdxContent,{...s})}):_createMdxContent(s)}function _missingMdxReference(s,o){throw Error("Expected "+(o?"component":"object")+" `"+s+"` to be defined: you likely forgot to import, pass, or provide it.")}},38706:function(s,o,n){"use strict";n.d(o,{T:function(){return Contributors}});var a=n(97997),t=n(11720),r=n(25675),e=n.n(r),i=n(93077);let l=(0,i.createCache)((0,i.memoryStore)(),{max:100,ttl:864e5,ttlAutopurge:!0}),getProfiles=async function(){let s,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];o=o.map(s=>s.toLowerCase());let fetchUser=async s=>{let o=await l.get(`contributors-${s}`);if(o)return o;let n=await fetch(`https://api.github.com/users/${s}`,{next:{revalidate:3600}});if(!n.ok)throw Error(`Failed to fetch GitHub user: ${s}`);let a=await n.json();return await l.set(`contributors-${s}`,a,864e5),a};s=await Promise.all(o.map(async s=>{try{let o=await fetchUser(s);return{id:o.id,name:o.login.toLowerCase(),avatar:o.avatar_url,profile:o.html_url,contributions:o.contributions}}catch(s){return console.error(s.message),null}}));let n=s.filter(s=>null!==s);return n};function Contributors(s){let{users:o,mode:n}=s,[r,i]=(0,t.useState)([]);return((0,t.useEffect)(()=>{(async function(){try{let s=await getProfiles(o);i(s)}catch(s){console.error("Error fetching profiles:",s)}})()},[]),r.length)?(0,a.tZ)("div",{className:"place-content-center",children:(0,a.tZ)("ul",{className:"flex flex-wrap gap-2 p-0 m-0",children:r.map(s=>(0,a.BX)("li",{className:"list-none p-0 m-0 flex gap-2 bg-gray-100 dark:bg-white/2.5 dark:ring-1 dark:ring-white/10 rounded-2xl",children:[(0,a.tZ)("a",{href:s.profile,target:"_blank",children:(0,a.tZ)(e(),{src:s.avatar,alt:s.name,width:30,height:30,className:"rounded-full hover:shadow-md transition-all shadow-slate-400 m-0 bg-fuchsia-200"})}),n?(0,a.tZ)("span",{className:"lowercase mr-3",children:s.name}):(0,a.tZ)(a.HY,{})]},"contributor-"+s.id))})}):(0,a.tZ)("div",{className:"min-h-[30px]"})}},86049:function(s,o,n){"use strict";n.d(o,{K:function(){return GridPattern}});var a=n(97997),t=n(11720);function GridPattern(s){let{width:o,height:n,x:r,y:e,squares:i,...l}=s,p=(0,t.useId)();return(0,a.BX)("svg",{"aria-hidden":"true",...l,children:[(0,a.tZ)("defs",{children:(0,a.tZ)("pattern",{id:p,width:o,height:n,patternUnits:"userSpaceOnUse",x:r,y:e,children:(0,a.tZ)("path",{d:`M.5 ${n}V.5H${o}`,fill:"none"})})}),(0,a.tZ)("rect",{width:"100%",height:"100%",strokeWidth:0,fill:`url(#${p})`}),i&&(0,a.tZ)("svg",{x:r,y:e,className:"overflow-visible",children:i.map(s=>{let[t,r]=s;return(0,a.tZ)("rect",{strokeWidth:"0",width:o+1,height:n+1,x:t*o,y:r*n},`${t}-${r}`)})})]})}},86156:function(s,o,n){"use strict";n.d(o,{t:function(){return Guides}});var a=n(97997),t=n(5682),r=n(68289);let e=[{href:"/uses-cases#my-first-bot",name:"My first chatbot",description:"Learn how build your first chatbot in few minutes"},{href:"/concepts",name:"Concepts",description:"Understand the essential concepts for building bots"},{href:"/add-functions",name:"Add Functions",description:"The key to learning how to write flows is add-functions."},{href:"/plugins",name:"Plugins",description:"Unlimitate and start implementing the community plugins."}];function Guides(){return(0,a.BX)("div",{className:"my-16 xl:max-w-none",children:[(0,a.tZ)(r.X,{level:2,id:"guides",children:"Guides"}),(0,a.tZ)("div",{className:"not-prose mt-4 grid grid-cols-1 gap-8 border-zinc-900/5 pt-10 dark:border-white/5 sm:grid-cols-2 xl:grid-cols-4",children:e.map(s=>(0,a.BX)("div",{children:[(0,a.tZ)("h3",{className:"text-sm font-semibold text-zinc-900 dark:text-white",children:s.name}),(0,a.tZ)("p",{className:"mt-1 text-sm text-zinc-600 dark:text-zinc-400",children:s.description}),(0,a.tZ)("p",{className:"mt-4",children:(0,a.tZ)(t.z,{href:s.href,variant:"text",arrow:"right",children:"Read more"})})]},s.href))})]})}},99686:function(s,o,n){"use strict";n.d(o,{_:function(){return Resources}});var a=n(97997),t=n(41664),r=n.n(t),e=n(65512),i=n(40406);function useMotionTemplate(s,...o){let n=s.length;return(0,e.N)(o.filter(i.i),function(){let a="";for(let t=0;t<n;t++){a+=s[t];let n=o[t];
1n&&(a+=(0,i.i)(n)?n.get():n)}return a})}var l=n(50508),p=n(4960),c=n(86049),k=n(68289);let y=[{href:"/showcases/modularize",name:"Modularize",description:"Learn how to modularise flows so that you can have a more maintainable bot.",icon:function(s){return(0,a.BX)("svg",{viewBox:"0 0 20 20","aria-hidden":"true",...s,children:[(0,a.tZ)("path",{strokeWidth:"0",fillRule:"evenodd",clipRule:"evenodd",d:"M10 .5a9.5 9.5 0 0 1 5.598 17.177C14.466 15.177 12.383 13.5 10 13.5s-4.466 1.677-5.598 4.177A9.5 9.5 0 0 1 10 .5ZM12.5 8a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"}),(0,a.tZ)("path",{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",d:"M10 .5a9.5 9.5 0 0 1 5.598 17.177A9.458 9.458 0 0 1 10 19.5a9.458 9.458 0 0 1-5.598-1.823A9.5 9.5 0 0 1 10 .5Z"}),(0,a.tZ)("path",{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",d:"M4.402 17.677C5.534 15.177 7.617 13.5 10 13.5s4.466 1.677 5.598 4.177M10 5.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5Z"})]})},pattern:{y:16,squares:[[0,1],[1,3]]}},{href:"/tutorials/api-use",name:"Send Message",description:"How to send a message via HTTP to start conversations, you can send multimedia as well.",icon:function(s){return(0,a.BX)("svg",{viewBox:"0 0 20 20","aria-hidden":"true",...s,children:[(0,a.tZ)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10 16.5c4.142 0 7.5-3.134 7.5-7s-3.358-7-7.5-7c-4.142 0-7.5 3.134-7.5 7 0 1.941.846 3.698 2.214 4.966L3.5 17.5c2.231 0 3.633-.553 4.513-1.248A8.014 8.014 0 0 0 10 16.5Z"}),(0,a.tZ)("path",{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",d:"M7.5 8.5h5M8.5 11.5h3"})]})},pattern:{y:-6,squares:[[-1,2],[1,3]]}},{href:"/deploy/docker",name:"Dockerizer",description:"A good practice is to dockerise your bots to make them more maintainable and effective.",icon:function(s){return(0,a.BX)("svg",{viewBox:"0 0 20 20","aria-hidden":"true",...s,children:[(0,a.tZ)("path",{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",d:"M2.5 5.5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v8a3 3 0 0 1-3 3h-9a3 3 0 0 1-3-3v-8Z"}),(0,a.tZ)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10 10 4.526 5.256c-.7-.607-.271-1.756.655-1.756h9.638c.926 0 1.355 1.15.655 1.756L10 10Z"})]})},pattern:{y:32,squares:[[0,2],[1,4]]}},{href:"/events",name:"Events",description:"Learning about events will make us more fluent when creating chatbots.",icon:function(s){return(0,a.BX)("svg",{viewBox:"0 0 20 20","aria-hidden":"true",...s,children:[(0,a.tZ)("path",{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",d:"M10.046 16H1.955a.458.458 0 0 1-.455-.459C1.5 13.056 3.515 11 6 11h.5"}),(0,a.tZ)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7.5 15.454C7.5 12.442 9.988 10 13 10s5.5 2.442 5.5 5.454a.545.545 0 0 1-.546.546H8.045a.545.545 0 0 1-.545-.546Z"}),(0,a.tZ)("path",{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",d:"M6.5 4a2 2 0 1 1 0 4 2 2 0 0 1 0-4Z"}),(0,a.tZ)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13 2a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5Z"})]})},pattern:{y:22,squares:[[0,1]]}}];function ResourceIcon(s){let{icon:o}=s;return(0,a.tZ)("div",{className:"flex h-7 w-7 items-center justify-center rounded-full bg-zinc-900/5 ring-1 ring-zinc-900/25 backdrop-blur-[2px] transition duration-300 group-hover:bg-white/50 group-hover:ring-zinc-900/25 dark:bg-white/7.5 dark:ring-white/15 dark:group-hover:bg-teal-300/10 dark:group-hover:ring-teal-400",children:(0,a.tZ)(o,{className:"h-5 w-5 fill-zinc-700/10 stroke-zinc-700 transition-colors duration-300 group-hover:stroke-zinc-900 dark:fill-white/10 dark:stroke-zinc-400 dark:group-hover:fill-teal-300/10 dark:group-hover:stroke-teal-400"})})}function ResourcePattern(s){let{mouseX:o,mouseY:n,...t}=s,r=useMotionTemplate`radial-gradient(180px at ${o}px ${n}px, white, transparent)`,e={maskImage:r,WebkitMaskImage:r};return(0,a.BX)("div",{className:"pointer-events-none",children:[(0,a.tZ)("div",{className:"absolute inset-0 rounded-2xl transition duration-300 [mask-image:linear-gradient(white,transparent)] group-hover:opacity-50",children:(0,a.tZ)(c.K,{width:72,height:56,x:"50%",className:"absolute inset-x-0 inset-y-[-30%] h-[160%] w-full skew-y-[-18deg] fill-black/[0.02] stroke-black/5 dark:fill-white/1 dar
1k:stroke-white/2.5",...t})}),(0,a.tZ)(l.E.div,{className:"absolute inset-0 rounded-2xl bg-gradient-to-r from-[#D7EDEA] to-[#F4FBDF] opacity-0 transition duration-300 group-hover:opacity-100 dark:from-[#202D2E] dark:to-[#303428]",style:e}),(0,a.tZ)(l.E.div,{className:"absolute inset-0 rounded-2xl opacity-0 mix-blend-overlay transition duration-300 group-hover:opacity-100",style:e,children:(0,a.tZ)(c.K,{width:72,height:56,x:"50%",className:"absolute inset-x-0 inset-y-[-30%] h-[160%] w-full skew-y-[-18deg] fill-black/50 stroke-black/70 dark:fill-white/2.5 dark:stroke-white/10",...t})})]})}function Resource(s){let{resource:o}=s,n=(0,p.c)(0),t=(0,p.c)(0);return(0,a.BX)("div",{onMouseMove:function(s){let{currentTarget:o,clientX:a,clientY:r}=s,{left:e,top:i}=o.getBoundingClientRect();n.set(a-e),t.set(r-i)},className:"group relative flex rounded-2xl bg-zinc-50 transition-shadow hover:shadow-md hover:shadow-zinc-900/5 dark:bg-white/2.5 dark:hover:shadow-black/5",children:[(0,a.tZ)(ResourcePattern,{...o.pattern,mouseX:n,mouseY:t}),(0,a.tZ)("div",{className:"absolute inset-0 rounded-2xl ring-1 ring-inset ring-zinc-900/7.5 group-hover:ring-zinc-900/10 dark:ring-white/10 dark:group-hover:ring-white/20"}),(0,a.BX)("div",{className:"relative rounded-2xl px-4 pb-4 pt-16",children:[(0,a.tZ)(ResourceIcon,{icon:o.icon}),(0,a.tZ)("h3",{className:"mt-4 text-sm font-semibold leading-7 text-zinc-900 dark:text-white",children:(0,a.BX)(r(),{href:o.href,children:[(0,a.tZ)("span",{className:"absolute inset-0 rounded-2xl"}),o.name]})}),(0,a.tZ)("p",{className:"mt-1 text-sm text-zinc-600 dark:text-zinc-400",children:o.description})]})]},o.href)}function Resources(){return(0,a.BX)("div",{className:"my-16 xl:max-w-none",children:[(0,a.tZ)(k.X,{level:2,id:"resources",children:"Resources"}),(0,a.tZ)("div",{className:"not-prose mt-4 grid grid-cols-1 gap-8 border-zinc-900/5 pt-10 dark:border-white/5 sm:grid-cols-2 xl:grid-cols-4",children:y.map(s=>(0,a.tZ)(Resource,{resource:s},s.href))})]})}}},function(s){s.O(0,[3077,2888,179],function(){return s(s.s=96103)}),_N_E=s.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.