{"_id":"@igniter-js/bot","_rev":"26-8e4fab0a0dd7475f087796da5ff378be","name":"@igniter-js/bot","dist-tags":{"alpha":"0.2.13","latest":"0.2.105"},"versions":{"0.1.0-alpha.0":{"name":"@igniter-js/bot","version":"0.1.0-alpha.0","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.1.0-alpha.0","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"95307cabfaf833b79cef9f39b1cc9bea7b62e9ef","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.1.0-alpha.0.tgz","fileCount":9,"integrity":"sha512-P3hz4k0904dB0K8fBs3YQ3o80cbaahSilaYVUVClqyon0pvd2gWSY7cjSB7oUyBRDONojj0PTqleKwbtM/aOzQ==","signatures":[{"sig":"MEQCIGMIJNGV/Y9rztZUmIZ+ndlU3JtsCG9jC65zTYHd37lfAiAMGrh0Bu9DoEFbz0eYkzRASUd9T/g2l3AFH2FB9AEC7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381142},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","adapters/index":"src/adapters/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./package.json":"./package.json"},"gitHead":"2a008ece980eb3617c51c4769c23a487f08ee0c5","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.1.0-alpha.0_1760472808250_0.9092887369928664","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.1":{"name":"@igniter-js/bot","version":"0.1.0-alpha.1","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.1.0-alpha.1","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"7467ea2c65386219d021edf26fcb2525ca1b59d5","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.1.0-alpha.1.tgz","fileCount":33,"integrity":"sha512-N7PVstre08VDsy5lBBFIjWhsDiWt6ENRaIklk86YMLyNwN6PtYkyFosAxZ6OJrWncuHa+Dq9qFisyZGo6BeYHA==","signatures":[{"sig":"MEQCIEnpiSVDWO5ik4pm0mrBGvlYOGOvaUsMnBbAKg5RxqPkAiAdEAR9yoOW0/p1qfUKnhvwl5fDAsesYgPJGZMfbiSFZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":958372},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","adapters/index":"src/adapters/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./package.json":"./package.json"},"gitHead":"0b06e1f7980cddf58e87bd2fc29dd1e9f52b3f9f","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.1.0-alpha.1_1760474862182_0.6281694585420783","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.2":{"name":"@igniter-js/bot","version":"0.1.0-alpha.2","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.1.0-alpha.2","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"31ddd695d09b6eaef12b05ea93226ff275940ff9","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.1.0-alpha.2.tgz","fileCount":33,"integrity":"sha512-+g7wJ9EHXqa8chh2mivEIrCbJ+i0o6I2AfUyUMgsVNTdW09RThnJimJ4swKMkOOndwHueLauX9roJHBsIxep2A==","signatures":[{"sig":"MEQCIDjkV214t/DGpzC4jKDgnlCtGY/BC/MflDFHWkUBU3WEAiAb6CAHDun4YRVd8h+eFzPij7K3k/Sa/fiD7fypPLHuMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":958372},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","adapters/index":"src/adapters/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./package.json":"./package.json"},"gitHead":"0b06e1f7980cddf58e87bd2fc29dd1e9f52b3f9f","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.1.0-alpha.2_1760474980131_0.5552027271091968","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.3":{"name":"@igniter-js/bot","version":"0.1.0-alpha.3","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.1.0-alpha.3","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"827c34a9d9cb93a24772758e63c1d94064789664","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.1.0-alpha.3.tgz","fileCount":33,"integrity":"sha512-da3YTvTH0cpzM0uPqq7529we4ojzPM4kSEAAkzUEvZBpxX1oY72DK/1f6YcoDlvbc3M1UqtMbYqdngD4wS/Ifw==","signatures":[{"sig":"MEUCIQCEZIXdS31St1JXcAyA2IxXzS7+febQBYUQAfsTOj5E6wIgdbcimIJ4tPBWo+dxqycV+kaECPLqywT4foZNJnt2T3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":958387},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","adapters/index":"src/adapters/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./package.json":"./package.json"},"gitHead":"0b06e1f7980cddf58e87bd2fc29dd1e9f52b3f9f","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.1.0-alpha.3_1760476603364_0.8171626380412327","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.0":{"name":"@igniter-js/bot","version":"0.2.0-alpha.0","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.0","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"b3c91b8df992b9d640d17d3661c896544fcc993f","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.0.tgz","fileCount":57,"integrity":"sha512-CkHLULkJa9nlIWsrrFqmsZdKXOIEdL7IQvOAj4XdIWJ6ns5mWEaguGYaXd0Xe9h08C0wpOF7y0yz385dyzQ3qw==","signatures":[{"sig":"MEUCICp/iHmYD60V9zFp05pR2hD0YbC2Fx6QHEK+ur8f9DaUAiEA44uGSybhOsC2nZdR/iQ6Al1iGEMePJOdNzZExdr9KNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1527085},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"50d82045f48666fbd645c80a80458d59d3b081f0","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.0_1761947082866_0.481953250740943","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.1":{"name":"@igniter-js/bot","version":"0.2.0-alpha.1","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.1","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"9cc81ee7c672e1456a3d06bd0d18ce0824a68529","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.1.tgz","fileCount":57,"integrity":"sha512-ZsDy2tfAoKzV6/0wGEt6YTherP2yT6qIl0QFP8CIUvuiGI4jtevYpPn1H43FcSzw94go0eou/xotjeOPz+gkCA==","signatures":[{"sig":"MEUCIQDoMV1+guusYOj64017lgnjmApz7e4V4DjO7wfKnhvgBwIgMKTTMRSna3zjd15a94EdAzjIklN+dGD5kiZaJ+3ga3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1934258},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"50d82045f48666fbd645c80a80458d59d3b081f0","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.1_1761954380923_0.6665533428312571","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.2":{"name":"@igniter-js/bot","version":"0.2.0-alpha.2","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.2","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"2e9adbeb394b8770e13322d8f226ffc2c367c59a","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.2.tgz","fileCount":57,"integrity":"sha512-xgsLrqHH4RJ+vAqR28nTrnps4dGZyuppG7BJdo0oXKIeE31BDMafXd4H1/JW8pE7pFr5unQHSxn0TwC9J/JEQw==","signatures":[{"sig":"MEUCIQDoHPZzCpttpG0z02i61Hv3C/llkY6Gs0XIRGQ1bsWJPwIgGY66ya8fxiLrS+2a9C4Jm2D7AYjALXC0RQydl+8409I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1979706},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"50d82045f48666fbd645c80a80458d59d3b081f0","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.2_1761998075564_0.5042774121565241","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.3":{"name":"@igniter-js/bot","version":"0.2.0-alpha.3","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.3","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"b99ed8442ad394adcef544e341064d940e4e386e","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.3.tgz","fileCount":57,"integrity":"sha512-TuUfC2cypVO3c4Uhz+V65FvnKNZ5EtM4a2s8Xad5FYlB6B2tjhE6DDWV29DKcMTIqEQQXHwUeVZJwFqwSURrcA==","signatures":[{"sig":"MEQCIBfgMsbwaO6UToI9IqAnT27Se701pArqcUM5Wn4RNtToAiAPN0QG+I5QikHNFFj+tKPwEfSjhgbeOx05n+dpguseaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2387601},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"50d82045f48666fbd645c80a80458d59d3b081f0","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.3_1762008725627_0.9285630557594042","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.4":{"name":"@igniter-js/bot","version":"0.2.0-alpha.4","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.4","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"52a20b987e81e1a9c88987954895483944d2cf17","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.4.tgz","fileCount":57,"integrity":"sha512-JA/ucDbYcQfVwp3IiQcybf5p/LSAvSsYuuHYQwgK9wrojrRsb2QkjtVaYcQwcuSEABz783cHgKzDIrZopI9lxw==","signatures":[{"sig":"MEYCIQDwbMpvvtbuTQYsfFwfMmVSZDTa1BIX+aZqs6sCFbvSZwIhAJ/x5cmg0Wg2Agbd0fq6e5oblDq8v8BOZtv37D2wowni","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2385337},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"50d82045f48666fbd645c80a80458d59d3b081f0","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.4_1762009043555_0.09830634855750509","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.5":{"name":"@igniter-js/bot","version":"0.2.0-alpha.5","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.5","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"3c1e93f1003450906c24886f68901e16b4149805","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.5.tgz","fileCount":57,"integrity":"sha512-KbIqzDxKwBx4XKr7Vg/b+6MdxV/TKphh9YJp5+aTpE23R6O5a4vfYWiVmXBEuuCrIAq1NPMQHx1yqNtUfHw2Vg==","signatures":[{"sig":"MEYCIQCeL6haVLhOXbHuCN1QGUI2SsfuYhCW+xtvgGaw9U6cLAIhAKkaPWB1yTfPqfs10x4ZDdODWowYiVwzpoitaELV6mbf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2385283},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"50d82045f48666fbd645c80a80458d59d3b081f0","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.5_1762009265923_0.8667528593068992","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.6":{"name":"@igniter-js/bot","version":"0.2.0-alpha.6","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.6","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"4f1c10ad0a4d9168ff295892ebbf73ccda59da4e","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.6.tgz","fileCount":62,"integrity":"sha512-GdqosG65SG8rb0VDmg66LYIwe27DpHLpopreNhhe/gK/VhdwVBiSxDYGjjfurAM0xELhiS0WEIkaxIPxG/uLbA==","signatures":[{"sig":"MEUCIQCD4MdZfpClbA7JDUbr2ko5zQwcMdO8ykL/cWwjzcDYOwIgdvl3Jq6m5OY37IALQ+vHPcv8K6qZVTktsH5cECejqns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3154605},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"72529f46143a569439a9117f1ef5a92034a020ea","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.6_1762014182870_0.6355692159900517","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.7":{"name":"@igniter-js/bot","version":"0.2.0-alpha.7","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.7","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"add6840f474835d76f0909f5fb4339e21ef389a2","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.7.tgz","fileCount":65,"integrity":"sha512-515z4WD1xp/AAP5OyexAgr5h2Y1fFkkKJl9XA/yevODKGi16p0BW8WUe0E9qTrjoLqe1+RIcvflCbVT8ZthkHg==","signatures":[{"sig":"MEUCIBvLi/Rx2fcFcOVeY/6cHnS2k2ms5JOYy5ng28GxWBbrAiEAu5XTgMFcesFigsYpQXxhti+3rqacPFibjHfgX0k5mYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3214359},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"c3249cb8fdb77e33466e02d1fb51269bccb30428","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.7_1762226612295_0.8799168359480631","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.8":{"name":"@igniter-js/bot","version":"0.2.0-alpha.8","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.8","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"df655c9fe20800d362af15ede683275b1493ae0b","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.8.tgz","fileCount":65,"integrity":"sha512-O+IlTRZGNUiIyB+dXcyRugb2i6Vq634dfjOjmxYYMf+/+0dOM3WCGh1RwohMDRcCIRIezNqgJgABcL9+xvklaQ==","signatures":[{"sig":"MEUCIQCfuZk+kenQAIdnWW//qG4khORzUNJp3J/lvuhm2RKVJwIgZjiPZ0HR//Hd5XgNpR4u49yu1aNMWovESZY0fUeqf8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3216524},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"c3249cb8fdb77e33466e02d1fb51269bccb30428","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.8_1762226709626_0.5918410159245224","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.9":{"name":"@igniter-js/bot","version":"0.2.0-alpha.9","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.9","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"8d8cc86af77993cd44c75ddd45a6e38367dd9c22","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.9.tgz","fileCount":77,"integrity":"sha512-2YsF4rAI94foLol3ybuJoFdLZhkj/7KqOj5Qmid3kzPCXpMCPiIRaLBoNlmp1c9k4qOexDn/fv5uJxeO9AfqFA==","signatures":[{"sig":"MEYCIQCb8/8gZjzr1PPrYirwuj4YM/fsMTHCeP1cEpf4CGATqQIhANWgQOmJnEhL8HSIPRsg2Lkz7K21nS5NY4h7fySL92Z6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3227559},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"c3249cb8fdb77e33466e02d1fb51269bccb30428","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.9_1762226864404_0.23253508834898828","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.11":{"name":"@igniter-js/bot","version":"0.2.0-alpha.11","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.11","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"56d89e5a649c36a3c80a5947474ea5f6dd15339f","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.11.tgz","fileCount":77,"integrity":"sha512-NhCCD/ezo7D9X5DO+3lDXFxuvOEEee8Gm++vAT8BYszO0er9SQOxSqlD3md9b5VnjJGbvADPhLV2quODJOjZRw==","signatures":[{"sig":"MEUCIQCY/dJeY6s6dcfoXuZUbT2m8JdPq+lxLl8YFfzPqnrInQIgCXrjIocVKpPRI3ffFf+66JQWd83CaFI2pLJxRq0yISU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3237043},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"c3249cb8fdb77e33466e02d1fb51269bccb30428","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.11_1762227088051_0.28395374328102707","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.12":{"name":"@igniter-js/bot","version":"0.2.0-alpha.12","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.12","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"fcb8dd2d330c55817770f7e7f9c4e26bfb73766d","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.12.tgz","fileCount":77,"integrity":"sha512-8la+8VoZ70culmoyefmvr57DPIo593jzh3U+GLFIjRgTPNG5hDV3Crd+4kTwH2vP0t4mvansAGdFddP5XW+eXw==","signatures":[{"sig":"MEUCIQCUZ8gwnXzUCMTAJkA4CukW/AeSOwYu0+3L7Bf60LEKJAIgJGd5ENhxejnPSTRwgwuNvY9uoBqEdWtSYnTg8qZN4HQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3240331},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"c3249cb8fdb77e33466e02d1fb51269bccb30428","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.12_1762228020455_0.83889195108409","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-alpha.13":{"name":"@igniter-js/bot","version":"0.2.0-alpha.13","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.0-alpha.13","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"a4ee6fe800507b2d4d9bda3d4c461acb8d8d0a03","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.0-alpha.13.tgz","fileCount":77,"integrity":"sha512-I9oc9CkL0QsSmyD7x3bX0Ju1LSa7rwD4wjh9bQIt2ZLubkAXFuBTK8jFK4VkCPUjij2YD20t5QRGdQBJ5NPAbg==","signatures":[{"sig":"MEQCIDhZQMKoHfAJlohjxQ0sFmXxYiL2IbzTujCDXqXkUgpVAiA3VvWNmJ9BQZBbKS8VU8t0NxWj9OCvicAOKLNA58cjnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3240241},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"c3249cb8fdb77e33466e02d1fb51269bccb30428","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.0-alpha.13_1762228435116_0.9914596892979415","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@igniter-js/bot","version":"0.2.1","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.1","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"6ab182529dc3a631352a8cdb430130f902842937","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.1.tgz","fileCount":63,"integrity":"sha512-BOqDPgfoUz4XFaUtroqp2fCIdl3jGTIfJ1RlEo5V8IYn0m8Yw4CclpTqVUsWy8uG5AtRuZa+VBegYLin8/Gdww==","signatures":[{"sig":"MEYCIQDvLjTXpP8bUeA41RdcJex+ARqK6BYocYQhlgcpmpGWBgIhAMMjHcb1666FgRXTA7eHd/U2AKbi4M0EOM1LjcSAYClh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3202664},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"d8f6a8a98db6c468bb38f85e536aebf7c32295af","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.1_1762757427001_0.5906638720191375","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@igniter-js/bot","version":"0.2.11","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.11","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"54450558870fa22eeda6b2cf62db2d705d605fcc","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.11.tgz","fileCount":63,"integrity":"sha512-UH/MvBkkqhs5SSFOhVRDc0TZjAS1GkNCEIOHm9HBdCHyfJQzenWP6y0+5uUdlRftdXg3/BGOVvvabJENceabMw==","signatures":[{"sig":"MEUCIQD4R0I9J0YeaxmZXE/C1seFRklB3VQkvmY+NjLrM9AxqgIgXklDCBYven0bGjZSSYyAZcGXDR9g/UwjVhctp1yDI4I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3331215},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"4eb1afd4e3128f4af609ee8d093339419da37759","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.11_1766608489293_0.3491277356474889","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@igniter-js/bot","version":"0.2.12","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.12","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"195dc8e1bf81d3e50a17663755a4a6589114b288","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.12.tgz","fileCount":63,"integrity":"sha512-McH/N+WEf1ZchyIGAzdRyiWkP4PTYclp4nESa+liJLF1+7l7MmqLwybT0j4ZW+WzdGMmsY0TchLSG7/tzhXDXQ==","signatures":[{"sig":"MEUCIQDdxiBwqQkVYQIv2ats0zBv+ulp3u0pY9mVw72NvJTMdAIgOJEcdfg39bBNKKpFRyWX58omEkqky7+Axyt6QWt7cQ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3360321},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"4eb1afd4e3128f4af609ee8d093339419da37759","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.12_1766609133552_0.26150982229898845","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@igniter-js/bot","version":"0.2.13","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.13","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"090e073498bfbd9f14256f46f0503a6f4f00e2d9","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.13.tgz","fileCount":63,"integrity":"sha512-i74/xzeOnDvbYxob+GCFQ8giItx866nrBuErlPEjVOUWNTWgiVe053SwWNT8xWjiwOwGLPQqDngApP723HX6JA==","signatures":[{"sig":"MEUCICh79QeXhyX5o7xt1zgkasgNv2A+WTaBldQGZ8k84Pl5AiEAn21dPMTInbC/SVCZ+3nTO/mfBffBwgYGmAPJET1RvqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3366370},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"a5b87460388911b9a8cbdc5e3c889237289cb1b1","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"10.9.3","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.13_1767611134051_0.3411724574066777","host":"s3://npm-registry-packages-npm-production"}},"0.2.101":{"name":"@igniter-js/bot","version":"0.2.101","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.101","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"0ec36fcb23fc226c00a531059df93dffa78a9bbe","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.101.tgz","fileCount":63,"integrity":"sha512-D8fSjLkDI4TDGGEwgrHlZVHw6DIaLLYyitl5iQFoYjcn3LV1I7hS2pkWOTXG2fnCCRw/LaIYPBBvRqNXzpmCTg==","signatures":[{"sig":"MEUCIQD1xnh+7jIHywVba5YaLmdY40QPLC1Hh8dYlEsqOqDGGAIgCe9jfj1mJQ9LFdKI5ubLPlBAzap9Dp1HRpF3nVkpevU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3389344},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"a6aa21c272324b0d8a0dcb8cfeef582fe132b31e","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"11.16.0","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"26.3.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.101_1783470792494_0.3345432008472575","host":"s3://npm-registry-packages-npm-production"}},"0.2.102":{"name":"@igniter-js/bot","version":"0.2.102","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.102","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"ae75dd5cc2f3b377dbe60bcf8333da712662ec91","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.102.tgz","fileCount":63,"integrity":"sha512-UCF7HbDQe8946Euftj3xo9xDQg9sQvTXUPwKJ0++t/GN/fecXxxx/cXQYFilrmH4ynWCW/YEbu5R7eH/e6dKAg==","signatures":[{"sig":"MEUCIB0ZBnfCpW727OaDeDjM4DN5VEU2zQCo5KZ/ZT9uq1pZAiEA2/aeTdTT0zQXDNkfTWX6Q1cwyinlKGOsTNQwNXR0qTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3799784},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"a6aa21c272324b0d8a0dcb8cfeef582fe132b31e","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"11.16.0","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"26.3.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.102_1783485612348_0.5498060303343839","host":"s3://npm-registry-packages-npm-production"}},"0.2.103":{"name":"@igniter-js/bot","version":"0.2.103","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.103","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"18ffc0ea94591608c24cda3a380b194f04c67cdc","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.103.tgz","fileCount":63,"integrity":"sha512-jhQoqhbVqObsKknAV0ldwwTuj/yV4Qli3oq0kmyLO4eMzF+trgTp9smIA94Xd/aY9W91/eE0rXXRbj811xeuUg==","signatures":[{"sig":"MEQCIEfHYSZiIT1Bn0pklW3yHxA4M/JK2WpMyfS/aAwJG/S0AiBm7+p0aCmjIKBgl69F2cFcmzuSuempfQVsdxcGcgEd+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3800576},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"a6aa21c272324b0d8a0dcb8cfeef582fe132b31e","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"11.16.0","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"26.3.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.103_1783488071485_0.7679930095668812","host":"s3://npm-registry-packages-npm-production"}},"0.2.104":{"name":"@igniter-js/bot","version":"0.2.104","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","_id":"@igniter-js/bot@0.2.104","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"homepage":"https://igniterjs.com","bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"dist":{"shasum":"1799958a3c284a5be93585a17320f02b775e4139","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.104.tgz","fileCount":63,"integrity":"sha512-MDirRKRjf8YrafYo0d3Js/kBwd0DFHeO3+Vj0y+xfHti3T8xCNhDqHLYQbN7lFKvy9HOM+7Nh2zrbu2QYDyf5g==","signatures":[{"sig":"MEYCIQDt9hgRSAvC4dlPy8BJQakyMgOLFhqx433rL+fi9FbFDAIhAIWYqXAgEncMrmjdG9CI4GTKqkGfmJ0R37/we7qk1oFL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3839398},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":{"index":"src/index.ts","types/index":"src/types/index.ts","stores/index":"src/stores/index.ts","plugins/index":"src/plugins/index.ts","adapters/index":"src/adapters/index.ts","middlewares/index":"src/middlewares/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts"},"shims":false,"format":["esm","cjs"],"minify":false,"outDir":"dist","target":"es2022","splitting":false},"type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./package.json":"./package.json"},"gitHead":"a6aa21c272324b0d8a0dcb8cfeef582fe132b31e","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"repository":{"url":"git+https://github.com/felipebarcelospro/igniter-js.git","type":"git"},"_npmVersion":"11.16.0","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","directories":{},"sideEffects":false,"_nodeVersion":"26.3.0","dependencies":{"zod":"^3.25.67"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","eslint":"^8.57.0","vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.9.0","@igniter-js/eslint-config":"*"},"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bot_0.2.104_1783488407240_0.37976317689492856","host":"s3://npm-registry-packages-npm-production"}},"0.2.105":{"name":"@igniter-js/bot","version":"0.2.105","description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/felipebarcelospro/igniter-js.git"},"bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"homepage":"https://igniterjs.com","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","zaileys","baileys","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"sideEffects":false,"type":"module","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","import":"./dist/adapters/index.mjs","require":"./dist/adapters/index.cjs"},"./adapters/*":{"types":"./dist/adapters/*.d.ts","import":"./dist/adapters/*.mjs","require":"./dist/adapters/*.cjs"},"./middlewares":{"types":"./dist/middlewares/index.d.ts","import":"./dist/middlewares/index.mjs","require":"./dist/middlewares/index.cjs"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.mjs","require":"./dist/plugins/index.cjs"},"./stores":{"types":"./dist/stores/index.d.ts","import":"./dist/stores/index.mjs","require":"./dist/stores/index.cjs"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.mjs","require":"./dist/types/index.cjs"},"./package.json":"./package.json"},"scripts":{"build":"tsup","dev":"tsup --watch","clean":"rm -rf dist","typecheck":"tsc --noEmit","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"dependencies":{"zod":"^3.25.67"},"peerDependencies":{"typescript":">=5.0.0","zaileys":"*"},"peerDependenciesMeta":{"zaileys":{"optional":true}},"devDependencies":{"@igniter-js/eslint-config":"*","@types/node":"^22.9.0","eslint":"^8.57.0","tsup":"^8.3.5","typescript":"^5.6.3","vitest":"^2.1.4","zaileys":"*"},"tsup":{"entry":{"index":"src/index.ts","adapters/index":"src/adapters/index.ts","adapters/telegram/index":"src/adapters/telegram/index.ts","adapters/whatsapp/index":"src/adapters/whatsapp/index.ts","adapters/discord/index":"src/adapters/discord/index.ts","adapters/zaileys/index":"src/adapters/zaileys/index.ts","middlewares/index":"src/middlewares/index.ts","plugins/index":"src/plugins/index.ts","stores/index":"src/stores/index.ts","types/index":"src/types/index.ts"},"format":["esm","cjs"],"splitting":false,"dts":true,"clean":true,"outDir":"dist","target":"es2022","shims":false,"minify":false},"publishConfig":{"access":"public","tag":"alpha"},"gitHead":"a6aa21c272324b0d8a0dcb8cfeef582fe132b31e","_id":"@igniter-js/bot@0.2.105","_nodeVersion":"26.3.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-uokzKOQYWZirYADiRWFmfKtc8oPDH0skXQtfzxNqUlbjJBoZg1vhk2XQMbKpkL+5ZJ7qxMdQQMXGo68iaDLGZQ==","shasum":"0460f1179da1ae516ac78951eb60e7d9ac16b38e","tarball":"https://registry.npmjs.org/@igniter-js/bot/-/bot-0.2.105.tgz","fileCount":69,"unpackedSize":4717173,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCWEZYBpo4F0QaDbf7sToddc61rJEzixobc5DTyIAJTVgIhALEp3Nt07b/7QZTSY1xINDLxMnUQ14kljSd9/hA+dq7L"}]},"_npmUser":{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"},"directories":{},"maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bot_0.2.105_1783536182492_0.5799008501250689"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-14T20:13:28.169Z","modified":"2026-07-08T18:43:02.880Z","0.1.0-alpha.0":"2025-10-14T20:13:28.467Z","0.1.0-alpha.1":"2025-10-14T20:47:42.375Z","0.1.0-alpha.2":"2025-10-14T20:49:40.378Z","0.1.0-alpha.3":"2025-10-14T21:16:43.593Z","0.2.0-alpha.0":"2025-10-31T21:44:43.110Z","0.2.0-alpha.1":"2025-10-31T23:46:21.172Z","0.2.0-alpha.2":"2025-11-01T11:54:35.770Z","0.2.0-alpha.3":"2025-11-01T14:52:05.947Z","0.2.0-alpha.4":"2025-11-01T14:57:23.788Z","0.2.0-alpha.5":"2025-11-01T15:01:06.207Z","0.2.0-alpha.6":"2025-11-01T16:23:03.086Z","0.2.0-alpha.7":"2025-11-04T03:23:32.540Z","0.2.0-alpha.8":"2025-11-04T03:25:09.912Z","0.2.0-alpha.9":"2025-11-04T03:27:44.649Z","0.2.0-alpha.11":"2025-11-04T03:31:28.337Z","0.2.0-alpha.12":"2025-11-04T03:47:00.713Z","0.2.0-alpha.13":"2025-11-04T03:53:55.313Z","0.2.1":"2025-11-10T06:50:27.194Z","0.2.11":"2025-12-24T20:34:49.484Z","0.2.12":"2025-12-24T20:45:33.757Z","0.2.13":"2026-01-05T11:05:34.249Z","0.2.101":"2026-07-08T00:33:12.646Z","0.2.102":"2026-07-08T04:40:12.581Z","0.2.103":"2026-07-08T05:21:11.658Z","0.2.104":"2026-07-08T05:26:47.445Z","0.2.105":"2026-07-08T18:43:02.704Z"},"bugs":{"url":"https://github.com/felipebarcelospro/igniter-js/issues"},"author":{"name":"Felipe Barcelos","email":"felipebarcelospro@gmail.com"},"license":"MIT","homepage":"https://igniterjs.com","keywords":["igniter-js","bot","chatbot","telegram","whatsapp","zaileys","baileys","messaging","adapter","middleware","commands","typescript","zod","framework","type-safe"],"repository":{"type":"git","url":"git+https://github.com/felipebarcelospro/igniter-js.git"},"description":"A modern, type-safe multi-platform bot framework for the Igniter.js ecosystem (adapters, middleware, commands, rich content).","maintainers":[{"name":"felipebarcelospro","email":"felipebarcelospro@gmail.com"}],"readme":"# @igniter-js/bot\n\n<div align=\"center\">\n\n[![NPM Version](https://img.shields.io/npm/v/@igniter-js/bot.svg)](https://www.npmjs.com/package/@igniter-js/bot)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue)](https://www.typescriptlang.org/)\n[![Node.js](https://img.shields.io/badge/Node.js-18+-green)](https://nodejs.org)\n\n**Type-safe, multi-platform bot framework for the Igniter.js ecosystem.**\n\nBuild sophisticated chatbots for **Telegram**, **WhatsApp**, **Discord**, and custom platforms with a clean fluent API, powerful middleware system, session management, and end-to-end TypeScript inference.\n\n[Quick Start](#-quick-start) · [Adapters](#-adapters) · [API Reference](#-api-reference) · [Examples](#-real-world-examples) · [Troubleshooting](#-troubleshooting)\n\n</div>\n\n> **Status:** Alpha — API is stabilizing. Breaking changes are minimized but may occur before v1.0.0.\n\n---\n\n## ✨ Why @igniter-js/bot?\n\nBuilding chatbots across multiple platforms shouldn't mean learning a different API for each one. @igniter-js/bot gives you:\n\n- ✅ **Unified API** — One builder, one context, one middleware pipeline. Telegram, WhatsApp, and Discord feel the same.\n- ✅ **Type safety** — Zod-backed validation with full TypeScript inference. Catch errors at compile time, not runtime.\n- ✅ **Middleware pipeline** — Express-like middleware for auth, rate-limiting, logging, and custom policies.\n- ✅ **Session support** — Stateful conversation flows with pluggable stores (Memory, Redis-ready interface).\n- ✅ **Capabilities-aware** — Adapters declare what they support. The framework validates before execution.\n- ✅ **Framework-ready** — Dedicated route adapters for Next.js and TanStack Start.\n- ✅ **Extensible** — Build custom adapters, middlewares, plugins, and session stores.\n- ✅ **Tree-shakeable** — Zero runtime overhead for unused features.\n\n---\n\n## 📦 Installation\n\n```bash\nnpm install @igniter-js/bot zod\n# or\npnpm add @igniter-js/bot zod\n# or\nyarn add @igniter-js/bot zod\n# or\nbun add @igniter-js/bot zod\n```\n\n**Requirements:** Node.js >= 18, TypeScript >= 5.0, Zod >= 3.0\n\n### Import Paths\n\nThe package supports organized imports for better tree-shaking and code clarity:\n\n```typescript\n// Main entry — everything in one import\nimport { IgniterBot, telegram, memoryStore } from '@igniter-js/bot'\n\n// Organized imports — recommended for larger projects\nimport { telegram, whatsapp, discord } from '@igniter-js/bot/adapters'\nimport { rateLimitMiddleware, authMiddleware, loggingMiddleware } from '@igniter-js/bot/middlewares'\nimport { analyticsPlugin } from '@igniter-js/bot/plugins'\nimport { memoryStore } from '@igniter-js/bot/stores'\nimport type { BotContext, BotCommand } from '@igniter-js/bot/types'\n```\n\n---\n\n## 🚀 Quick Start\n\nCreate your first bot in under 60 seconds:\n\n```typescript\nimport { IgniterBot, telegram } from '@igniter-js/bot'\n\nconst bot = IgniterBot\n  .create()\n  .withHandle('@mybot')\n  .addAdapter('telegram', telegram({\n    token: process.env.TELEGRAM_TOKEN!,\n  }))\n  .addCommand('start', {\n    name: 'start',\n    aliases: ['hello'],\n    description: 'Greets the user',\n    help: 'Use /start to begin',\n    async handle(ctx) {\n      await ctx.reply('👋 Welcome! I am your bot.')\n    }\n  })\n  .build()\n\n// Initialize adapters (register webhooks, commands)\nawait bot.start()\n\n// Use in a Next.js API route\nexport async function POST(req: Request) {\n  return bot.handle('telegram')(req)\n}\n```\n\n✅ **Success check:** Your bot now responds to `/start` on Telegram.\n\n---\n\n## 🧱 Core Concepts\n\n### Architecture\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                    IgniterBotBuilder                     │\n│  .create() → .withHandle() → .addAdapter() → .build()  │\n└──────────────────────┬──────────────────────────────────┘\n                       │ build()\n                       ▼\n┌─────────────────────────────────────────────────────────┐\n│                      Bot Instance                        │\n│  ┌──────────┐  ┌──────────┐  ┌──────────┐              │\n│  │ Telegram │  │ WhatsApp │  │ Discord  │  ...adapters │\n│  └────┬─────┘  └────┬─────┘  └────┬─────┘              │\n│       │              │              │                    │\n│       └──────────────┼──────────────┘                    │\n│                      ▼                                   │\n│           ┌──────────────────┐                          │\n│           │ Middleware Chain │  auth → rate-limit → log │\n│           └────────┬─────────┘                          │\n│                    ▼                                     │\n│           ┌──────────────────┐                          │\n│           │ Command Handler  │  /start, /help, /admin   │\n│           └────────┬─────────┘                          │\n│                    ▼                                     │\n│           ┌──────────────────┐                          │\n│           │  Session Store   │  Memory / Custom         │\n│           └──────────────────┘                          │\n└─────────────────────────────────────────────────────────┘\n```\n\n### Key Abstractions\n\n| Concept | Description |\n|---------|-------------|\n| **Builder** | Fluent API for configuring your bot (adapters, commands, middlewares, plugins) |\n| **Adapter** | Platform-specific implementation (Telegram Bot API, WhatsApp Cloud API, Discord API) |\n| **Middleware** | Function `(ctx, next) => Promise<void>` that processes every request |\n| **Command** | Named handler triggered by `/command` messages, with optional Zod validation |\n| **Session** | Per-user, per-channel state persisted across messages |\n| **Plugin** | Reusable package of commands, middlewares, adapters, and hooks |\n| **Context** | Rich object passed through the pipeline with helpers: `ctx.reply()`, `ctx.session`, etc. |\n\n---\n\n## 🛠 Builder API\n\n### Configuration\n\n```typescript\nconst bot = IgniterBot\n  .create()\n  .withHandle('@mybot')              // Sets handle; auto-derives id='mybot', name='Mybot'\n  .withId('custom-id')               // Optional: override auto-derived ID\n  .withName('My Custom Bot')         // Optional: override auto-derived name\n  .withLogger(console)               // Optional: structured logger (console, pino, winston)\n  .withSessionStore(memoryStore())   // Optional: session storage (default: in-memory)\n  .withOptions({                     // Optional: advanced configuration\n    timeout: 30000,\n    retries: 3,\n    autoRegisterCommands: true,\n    errorHandler: async (error, ctx) => {\n      console.error('Bot error:', error.code, error.message)\n    }\n  })\n```\n\n**Handle inheritance:** When you call `.withHandle('@mybot')`, the `id` and `name` are auto-derived from the handle. Each adapter inherits the global handle but can override it per platform.\n\n### Adding Adapters\n\n```typescript\n// Single adapter\n.addAdapter('telegram', telegram({\n  token: process.env.TELEGRAM_TOKEN!,\n  // handle inherits from bot-level .withHandle()\n}))\n\n// Multiple adapters at once\n.addAdapters({\n  telegram: telegram({ token: process.env.TELEGRAM_TOKEN! }),\n  whatsapp: whatsapp({ token: process.env.WHATSAPP_TOKEN!, phone: process.env.WHATSAPP_PHONE! }),\n  discord: discord({ token: process.env.DISCORD_TOKEN!, applicationId: process.env.DISCORD_APP_ID! })\n})\n\n// Override handle for a specific platform\n.addAdapter('telegram', telegram({\n  token: '...',\n  handle: '@custom_telegram_handle'  // Platform-specific override\n}))\n```\n\n### Adding Commands\n\n```typescript\n// Simple command\n.addCommand('ping', {\n  name: 'ping',\n  aliases: ['pong'],\n  description: 'Check if bot is alive',\n  help: 'Use /ping to test connectivity',\n  async handle(ctx) {\n    await ctx.reply('🏓 Pong!')\n  }\n})\n\n// Command with Zod validation — fully typed args\n.addCommand('ban', {\n  name: 'ban',\n  description: 'Ban a user',\n  help: 'Use /ban <userId> [reason]',\n  args: z.object({\n    userId: z.string(),\n    reason: z.string().optional()\n  }),\n  async handle(ctx, args) {\n    // args is fully typed: { userId: string; reason?: string }\n    await banUser(args.userId, args.reason)\n    await ctx.reply(`Banned ${args.userId}: ${args.reason || 'No reason given'}`)\n  }\n})\n\n// Command with subcommands\n.addCommand('config', {\n  name: 'config',\n  description: 'Bot configuration',\n  subcommands: {\n    set: {\n      args: z.object({ key: z.string(), value: z.string() }),\n      async handle(ctx, args) {\n        await setConfig(args.key, args.value)\n        await ctx.reply(`Set ${args.key} = ${args.value}`)\n      }\n    },\n    get: {\n      args: z.object({ key: z.string() }),\n      async handle(ctx, args) {\n        const value = await getConfig(args.key)\n        await ctx.reply(`${args.key}: ${value}`)\n      }\n    }\n  }\n})\n\n// Bulk registration\n.addCommands({\n  start: { name: 'start', /* ... */ },\n  help: { name: 'help', /* ... */ },\n  about: { name: 'about', /* ... */ }\n})\n\n// Prefixed command groups\n.addCommandGroup('admin', {\n  ban: { name: 'ban', /* ... */ },   // Registered as 'admin_ban'\n  kick: { name: 'kick', /* ... */ }  // Registered as 'admin_kick'\n})\n```\n\n### Event Handlers\n\n```typescript\n.onMessage(async (ctx) => {\n  console.log(`Message from ${ctx.message.author.username}`)\n})\n\n.onError(async (ctx) => {\n  console.error('Bot error:', (ctx as any).error?.message)\n})\n\n.onStart(async () => {\n  console.log('Bot is online!')\n})\n\n// Note: onCommand is stored but not auto-emitted by process() yet.\n// Use bot.emit('command', ctx) to trigger manually.\n.onCommand(async (ctx) => {\n  console.log('Command executed')\n})\n```\n\n### Building\n\n```typescript\nconst bot = IgniterBot\n  .create()\n  // ... configuration ...\n  .build()  // Returns a Bot instance\n\n// Start all adapters\nawait bot.start()\n```\n\n---\n\n## 🌐 Adapters\n\n### Telegram\n\nFull-featured Telegram Bot API adapter with webhook and long-polling support:\n\n```typescript\nimport { telegram } from '@igniter-js/bot/adapters'\n\n// Minimal — uses global bot handle\ntelegram({ token: 'your_bot_token' })\n\n// With webhook\ntelegram({\n  token: 'your_bot_token',\n  webhook: {\n    url: 'https://example.com/api/telegram',\n    secret: 'webhook_secret_token'\n  }\n})\n\n// Override handle\ntelegram({\n  token: 'your_bot_token',\n  handle: '@custom_telegram_bot'\n})\n```\n\n**Capabilities:**\n- ✅ Text, images, videos, audio, documents, stickers\n- ✅ Locations, contacts, polls\n- ✅ Interactive buttons and inline keyboards\n- ✅ Edit and delete messages\n- ✅ Webhooks and long polling\n- ✅ Slash commands\n- **Limits:** 4,096 chars, 50 MB files, 8 buttons per message\n\n### WhatsApp (Cloud API)\n\nWhatsApp Cloud API adapter (Meta Business):\n\n```typescript\nimport { whatsapp } from '@igniter-js/bot/adapters'\n\n// Minimal — uses global bot handle\nwhatsapp({ token: 'your_token', phone: 'phone_number_id' })\n\n// Override handle (WhatsApp uses keywords, not @handles)\nwhatsapp({\n  token: 'your_token',\n  phone: 'phone_number_id',\n  handle: 'custom_keyword'\n})\n```\n\n**Capabilities:**\n- ✅ Text, images, videos, audio, documents\n- ✅ Locations, contacts\n- ✅ Interactive buttons and lists\n- ✅ Message reactions\n- ❌ No edit/delete via API\n- **Limits:** 4,096 chars, 100 MB files, 3 buttons per message\n\n### WhatsApp (Zaileys — Baileys-based)\n\nA **non-webhook** adapter using [zaileys](https://github.com/zeative/zaileys), a type-safe\nBaileys wrapper. Connects via persistent WebSocket — no Meta Business account required.\nWorks with personal WhatsApp numbers.\n\n```typescript\nimport { zaileys } from '@igniter-js/bot/adapters'\n\nzaileys({\n  authType: 'qr',              // 'qr' (default) | 'pairing'\n  sessionId: 'my-bot',         // Unique per phone number\n  phoneNumber: '628123456789', // E.164, required for pairing auth\n  ignoreMe: true,              // Drop own messages (default: true)\n  qrTerminal: true,            // Print QR to terminal (default: true)\n  statusLog: true,             // Show connection status (default: true)\n  handle: 'mybot',             // Bot keyword for group mentions\n})\n```\n\n**Configuration options:**\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `authType` | `'qr' \\| 'pairing'` | `'qr'` | Login method: QR code scan or pairing code |\n| `phoneNumber` | `string` | — | Phone in E.164 (digits only, with country code). Required for pairing |\n| `sessionId` | `string` | `'igniter-bot'` | Auth persistence key. Unique per phone number |\n| `ignoreMe` | `boolean` | `true` | Drop messages from your own account |\n| `qrTerminal` | `boolean` | `true` | Print QR to terminal (set `false` for headless/remote) |\n| `statusLog` | `boolean` | `true` | Print human-readable connection status lines |\n| `handle` | `string` | — | Bot keyword for mention detection in groups |\n| `debug` | `boolean` | `false` | Enable zaileys debug logging (`ZAILEYS_DEBUG=1`) |\n\n**Authentication flow:**\n1. Start your bot → a QR code prints in the terminal (or `pairing-code` event fires).\n2. Open **WhatsApp → Linked Devices → Link a Device** and scan the QR.\n3. Session persists in `./.zaileys/auth/<sessionId>/` — no re-scan on restart.\n\n**Capabilities:**\n- ✅ Text, images, videos, audio (voice notes), documents, stickers\n- ✅ Locations, contacts, polls\n- ✅ Interactive messages (buttons, lists, carousels, templates)\n- ✅ Rich Messages (AIRich markdown via zaileys `{ rich: true }`)\n- ✅ Edit text messages, delete messages for everyone\n- ✅ Emoji reactions\n- ✅ Group chat support\n- ✅ WhatsApp newsletters/channels\n- ✅ QR code and pairing-code authentication\n- ✅ Auto-reconnect with exponential backoff\n- ❌ No webhooks — uses persistent WebSocket (no `bot.handle()` needed)\n- **Limits:** 65,536 chars, 100 MB files, 10 buttons per message\n\n**Multi-bot support:** Create multiple adapter instances with different `sessionId` values.\nEach instance connects to a different WhatsApp number.\n\n```typescript\nconst bot = IgniterBot.create()\n  .addAdapters({\n    support: zaileys({ sessionId: 'support-desk', authType: 'qr' }),\n    sales: zaileys({ sessionId: 'sales-team', authType: 'pairing', phoneNumber: '628987654321' }),\n  })\n  .build()\n\nawait bot.start()\n```\n\n### Discord\n\nDiscord Interactions API adapter with slash commands:\n\n```typescript\nimport { discord } from '@igniter-js/bot/adapters'\n\ndiscord({\n  token: 'your_token',\n  applicationId: 'your_app_id',\n  publicKey: 'your_public_key'  // Recommended for Ed25519 signature verification\n})\n```\n\n**Capabilities:**\n- ✅ Text, images, videos, audio, documents\n- ✅ Interactive buttons and message components\n- ✅ Edit and delete messages\n- ✅ Message reactions\n- ✅ Slash commands (APPLICATION_COMMAND)\n- ✅ Message components (MESSAGE_COMPONENT — button clicks)\n- ✅ Ed25519 signature verification\n- ❌ No stickers, location, contact, or polls via API\n- **Limits:** 2,000 chars, 25 MB files (100 MB for verified bots), 5 buttons per row\n\n### Raw Client Access\n\nEvery adapter exposes its raw platform client via `bot.adapter.<name>` with full\ntype inference. Use this for any platform-specific functionality beyond messaging:\n\n```typescript\n// WhatsApp (Zaileys) — full Baileys-based Client\nbot.adapter.whatsapp.on('qr', ({ qrString }) => { /* send to frontend */ })\nawait bot.adapter.whatsapp.group.create('My Group', ['628xxx@s.whatsapp.net'])\nawait bot.adapter.whatsapp.newsletter.create('Channel')\nawait bot.adapter.whatsapp.profile.setStatus('Online via Igniter.js')\nawait bot.adapter.whatsapp.broadcast(recipients, (b) => b.text('Hi!'))\n\n// Telegram — HTTP client for direct Bot API calls\nawait bot.adapter.telegram.post('/sendMessage', { chat_id: 123, text: 'Hi' })\nconst me = await bot.adapter.telegram.get('/getMe')\n```\n\n### Creating Custom Adapters\n\n```typescript\nimport { Bot, BotError, BotErrorCodes } from '@igniter-js/bot'\nimport { z } from 'zod'\n\nconst myAdapter = Bot.adapter({\n  name: 'my-platform',\n  parameters: z.object({\n    token: z.string(),\n    handle: z.string().optional(),\n  }),\n  capabilities: {\n    content: {\n      text: true, image: false, video: false, audio: false,\n      document: false, sticker: false, location: false,\n      contact: false, poll: false, interactive: false,\n    },\n    actions: { edit: false, delete: false, react: false, pin: false, thread: false },\n    features: { webhooks: true, longPolling: false, commands: false,\n      mentions: false, groups: false, channels: false, users: false, files: false },\n    limits: { maxMessageLength: 2000, maxFileSize: 5 * 1024 * 1024, maxButtonsPerMessage: 0 },\n  },\n  async init({ client, config, commands, logger }) {\n    logger?.info?.('Adapter initialized')\n  },\n  async handle({ request, config, logger, client }) {\n    const body = await request.json()\n    return {\n      event: 'message',\n      provider: 'my-platform',\n      channel: { id: body.channelId, name: body.channelId, isGroup: false },\n      message: {\n        id: body.messageId,\n        content: { type: 'text', content: body.text, raw: body.text },\n        author: { id: body.userId, name: body.userName, username: body.username },\n        isMentioned: true,\n      },\n    }\n  },\n  async sendText({ client, channel, text, options, config, logger }) {\n    if (!client) throw new BotError(BotErrorCodes.CLIENT_NOT_PROVIDED)\n    await client.post('/send', { channel, text })\n  },\n})\n```\n\n---\n\n## ⚙️ Middlewares\n\n### Rate Limiting\n\n```typescript\nimport { rateLimitMiddleware, rateLimitPresets } from '@igniter-js/bot/middlewares'\n\n// Custom configuration\n.addMiddleware(rateLimitMiddleware({\n  maxRequests: 10,\n  windowMs: 60000,  // 1 minute\n  message: 'Too many requests. Please try again later.',\n  skip: (ctx) => isAdmin(ctx.message.author.id)\n}))\n\n// Pre-built presets\n.addMiddleware(rateLimitPresets.strict())     // 5 req/min\n.addMiddleware(rateLimitPresets.moderate())   // 10 req/min\n.addMiddleware(rateLimitPresets.lenient())    // 20 req/min\n.addMiddleware(rateLimitPresets.perCommand()) // 3 req/10s per command\n```\n\n### Authentication\n\n```typescript\nimport { authMiddleware, authPresets, roleMiddleware } from '@igniter-js/bot/middlewares'\n\n// Whitelist specific users\n.addMiddleware(authMiddleware({\n  allowedUsers: ['user123', 'user456'],\n  unauthorizedMessage: 'You are not authorized to use this bot.'\n}))\n\n// Pre-built presets\n.addMiddleware(authPresets.adminsOnly(['admin1', 'admin2']))\n.addMiddleware(authPresets.privateOnly())     // No groups\n.addMiddleware(authPresets.groupsOnly())      // Only groups\n.addMiddleware(authPresets.whitelist(['user1', 'user2']))\n.addMiddleware(authPresets.blacklist(['blocked1']))\n\n// Role-based authorization\n.addMiddleware(roleMiddleware({\n  getRoles: async (userId) => {\n    const user = await database.users.findById(userId)\n    return user.roles  // e.g., ['admin', 'moderator']\n  },\n  requiredRoles: ['admin', 'moderator'],\n  unauthorizedMessage: 'You need admin or moderator role.'\n}))\n```\n\n### Logging\n\n```typescript\nimport { loggingMiddleware, loggingPresets, commandLoggingMiddleware } from '@igniter-js/bot/middlewares'\n\n// Standard logging\n.addMiddleware(loggingMiddleware({\n  logMessages: true,\n  logCommands: true,\n  logErrors: true,\n  logMetrics: true,\n  includeUserInfo: true,\n  includeContent: false,  // Don't log PII\n}))\n\n// Pre-built presets\n.addMiddleware(loggingPresets.minimal())     // Only errors\n.addMiddleware(loggingPresets.standard())    // Messages, commands, errors\n.addMiddleware(loggingPresets.verbose())     // Everything + metrics + content\n.addMiddleware(loggingPresets.debug())       // JSON-formatted for troubleshooting\n.addMiddleware(loggingPresets.production())  // Standard without user info\n\n// Command-specific logging\n.addMiddleware(commandLoggingMiddleware({\n  logger: pinoLogger,\n  includeParams: true\n}))\n```\n\n### Custom Middleware\n\n```typescript\nimport type { Middleware } from '@igniter-js/bot'\n\nconst translationMiddleware: Middleware = async (ctx, next) => {\n  const lang = ctx.message.author.id.startsWith('BR') ? 'pt' : 'en'\n  ;(ctx as any).lang = lang\n  return next()\n}\n\n.addMiddleware(translationMiddleware)\n```\n\n---\n\n## 🔌 Plugins\n\nPlugins package commands, middlewares, and hooks into reusable modules:\n\n```typescript\nimport { analyticsPlugin } from '@igniter-js/bot/plugins'\n\n.usePlugin(analyticsPlugin({\n  trackEvent: async (event, properties) => {\n    await analyticsService.track(event, properties)\n  },\n  trackMessages: true,\n  trackCommands: true,\n  trackErrors: true,\n  includeUserInfo: false,\n}))\n```\n\nThe analytics plugin automatically registers a `/stats` command showing message count, command count, error count, and unique users.\n\n### Creating Custom Plugins\n\n```typescript\nimport type { BotPlugin } from '@igniter-js/bot'\n\nconst welcomePlugin: BotPlugin = {\n  name: 'welcome',\n  version: '1.0.0',\n  description: 'Sends welcome message to new members',\n\n  middlewares: [\n    async (ctx, next) => {\n      if (ctx.event === 'message' && ctx.channel.isGroup) {\n        console.log(`New message in group ${ctx.channel.name}`)\n      }\n      await next()\n    }\n  ],\n\n  commands: {\n    welcome: {\n      name: 'welcome',\n      aliases: [],\n      description: 'Set welcome message',\n      help: 'Use /welcome <message>',\n      args: z.object({ message: z.string() }),\n      async handle(ctx, args) {\n        await saveWelcomeMessage(ctx.channel.id, args.message)\n        await ctx.reply('Welcome message set!')\n      }\n    }\n  },\n\n  hooks: {\n    onStart: async () => console.log('Welcome plugin ready'),\n  }\n}\n\n.usePlugin(welcomePlugin)\n```\n\n---\n\n## 💬 Context Helpers\n\nThe `BotContext` includes convenient helper methods for common operations:\n\n```typescript\n// Simple text reply (auto-detects Rich Messages when content has headings/tables/etc)\nawait ctx.reply('Hello!')\n\n// Rich Message reply (headings, tables, media blocks, 32K chars)\nawait ctx.replyRich(`# Sales Report Q2\n\n| Month  | Revenue |\n|--------|---------|\n| Jan    | $42K    |\n| Feb    | $58K    |\n`)\n\n// Rich Message with options\nawait ctx.replyRich('# Report', { isRtl: false, skipEntityDetection: true })\n\n// Reply with interactive buttons\nawait ctx.replyWithButtons('Choose an option:', [\n  { id: '1', label: 'Option A', action: 'callback', data: 'opt_a' },\n  { id: '2', label: 'Option B', action: 'callback', data: 'opt_b' },\n  { id: '3', label: 'Website', action: 'url', data: { url: 'https://example.com' } },\n])\n\n// Reply with image\nawait ctx.replyWithImage('https://example.com/photo.jpg', 'Check this out!')\n\n// Reply with document\nawait ctx.replyWithDocument(fileObject, 'Important document')\n\n// React to a message with emoji (Telegram, WhatsApp, Discord)\nawait ctx.react('👍')               // reacts to current message\nawait ctx.react('❤️', 'msg-456')    // reacts to specific message\n\n// Edit an existing message (if adapter supports it)\nif (ctx.editMessage) {\n  await ctx.editMessage('message_id', { type: 'text', content: 'Updated!' })\n}\n\n// Delete a message (if adapter supports it)\nif (ctx.deleteMessage) {\n  await ctx.deleteMessage('message_id')\n}\n\n// Show typing indicator\nif (ctx.sendTyping) {\n  await ctx.sendTyping()\n  // Simulate processing...\n  await ctx.reply('Here is your answer!')\n}\n```\n\n### Session Helpers\n\n```typescript\n// Access session data\nconst step = ctx.session.data.step || 0\n\n// Update and persist\nctx.session.data.step = step + 1\nawait ctx.session.save()\n\n// Partial update (merge)\nawait ctx.session.update({ lastCommand: 'start' })\n\n// Delete session\nawait ctx.session.delete()\n```\n\n---\n\n## 🔍 Capabilities System\n\nAdapters declare their capabilities. Check support before using features:\n\n```typescript\n.addCommand('sendphoto', {\n  name: 'sendphoto',\n  async handle(ctx) {\n    const adapter = ctx.bot.getAdapter?.(ctx.provider)\n\n    if (!adapter?.capabilities.content.image) {\n      await ctx.reply('❌ This platform does not support images.')\n      return\n    }\n\n    await ctx.replyWithImage('https://example.com/photo.jpg')\n  }\n})\n```\n\n**Capability categories:**\n- **content** — `text`, `rich`, `image`, `video`, `audio`, `voice`, `document`, `sticker`, `location`, `contact`, `poll`, `interactive`\n- **actions** — `edit`, `delete`, `react`, `pin`, `thread`, `streaming`\n- **features** — `webhooks`, `longPolling`, `commands`, `mentions`, `groups`, `channels`, `users`, `files`\n- **limits** — `maxMessageLength`, `maxFileSize`, `maxButtonsPerMessage`\n\n---\n\n## 🏗 Framework Integration\n\n### Next.js (App Router)\n\n```typescript\n// app/api/bots/[botId]/[adapter]/route.ts\nimport { nextRouteHandlerAdapter } from '@igniter-js/bot/adapters/nextjs'\n\nconst handlers = nextRouteHandlerAdapter({\n  'my-bot': bot,\n})\n\nexport const GET = handlers.GET\nexport const POST = handlers.POST\n```\n\n**Route pattern:** `/api/bots/my-bot/telegram`\n\n### TanStack Start\n\n```typescript\n// app/routes/api/bots/$botId/$adapter.ts\nimport { tanstackStartRouteHandlerAdapter } from '@igniter-js/bot/adapters/tanstack-start'\n\nconst handlers = tanstackStartRouteHandlerAdapter({\n  'my-bot': bot,\n})\n\nexport const handler = handlers\n```\n\n### Express / Fastify / Hono\n\nUse the raw handler directly:\n\n```typescript\n// Express\napp.post('/api/telegram', async (req, res) => {\n  const response = await bot.handle('telegram')(req)\n  res.status(response.status).send(await response.text())\n})\n\n// Hono\napp.post('/api/telegram', async (c) => {\n  return bot.handle('telegram')(c.req.raw)\n})\n```\n\n---\n\n## 🧪 Testing\n\n### Testing Commands\n\n```typescript\nimport { describe, it, expect, vi } from 'vitest'\n\nfunction createMockContext(overrides?: Partial<BotContext>): BotContext {\n  return {\n    event: 'message',\n    provider: 'telegram',\n    bot: {\n      id: 'test-bot',\n      name: 'Test Bot',\n      send: vi.fn(),\n      getAdapter: () => undefined,\n      getAdapters: () => ({}),\n    },\n    channel: { id: 'ch1', name: 'test-chat', isGroup: false },\n    message: {\n      id: 'msg1',\n      content: { type: 'text', content: '/start', raw: '/start' },\n      author: { id: 'u1', name: 'Tester', username: 'tester' },\n      isMentioned: false,\n    },\n    session: {\n      userId: 'u1',\n      channelId: 'ch1',\n      data: {},\n      createdAt: new Date(),\n      updatedAt: new Date(),\n      save: vi.fn(),\n      delete: vi.fn(),\n      update: vi.fn(),\n    },\n    reply: vi.fn(),\n    replyWithButtons: vi.fn(),\n    replyWithImage: vi.fn(),\n    replyWithDocument: vi.fn(),\n    ...overrides,\n  }\n}\n\nit('start command replies with welcome', async () => {\n  const ctx = createMockContext()\n  const command = {\n    name: 'start',\n    aliases: [],\n    description: 'Start',\n    help: 'Use /start',\n    async handle(ctx) { await ctx.reply('Welcome!') }\n  }\n\n  await command.handle(ctx)\n  expect(ctx.reply).toHaveBeenCalledWith('Welcome!')\n})\n```\n\n### Testing Middlewares\n\n```typescript\nit('rate limit blocks after max requests', async () => {\n  const middleware = rateLimitMiddleware({\n    maxRequests: 1,\n    windowMs: 60000,\n  })\n\n  const ctx = createMockContext()\n  ctx.reply = vi.fn()\n\n  await middleware(ctx, vi.fn())  // First request passes\n  await middleware(ctx, vi.fn())  // Second is blocked\n\n  expect(ctx.reply).toHaveBeenCalledWith(\n    expect.stringContaining('Rate limit')\n  )\n})\n```\n\n### Testing Adapters\n\n```typescript\nit('telegram adapter has correct capabilities', () => {\n  const adapter = telegram({ token: 'test' })\n  expect(adapter.name).toBe('telegram')\n  expect(adapter.capabilities.content.text).toBe(true)\n  expect(adapter.capabilities.content.image).toBe(true)\n  expect(adapter.capabilities.limits.maxMessageLength).toBe(4096)\n})\n```\n\n---\n\n## 🌍 Real-World Examples\n\n### 1. Multi-Platform Customer Support Bot\n\n```typescript\nconst supportBot = IgniterBot\n  .create()\n  .withHandle('@support_bot')\n  .addAdapters({\n    telegram: telegram({ token: process.env.TELEGRAM_TOKEN! }),\n    whatsapp: whatsapp({ token: process.env.WHATSAPP_TOKEN!, phone: process.env.WHATSAPP_PHONE! }),\n  })\n  .withSessionStore(memoryStore({ cleanupIntervalMs: 300000 }))\n  .addMiddleware(loggingPresets.production())\n  .addCommand('help', {\n    name: 'help',\n    aliases: ['support', 'faq'],\n    description: 'Get help',\n    help: 'Use /help for assistance',\n    async handle(ctx) {\n      await ctx.replyWithButtons('How can I help you?', [\n        { id: 'order', label: '📦 Order Status', action: 'callback', data: 'help:order' },\n        { id: 'refund', label: '💰 Refund', action: 'callback', data: 'help:refund' },\n        { id: 'agent', label: '👤 Talk to Agent', action: 'callback', data: 'help:agent' },\n      ])\n    }\n  })\n  .build()\n```\n\n### 2. E-commerce Bot with Cart\n\n```typescript\nconst shopBot = IgniterBot\n  .create()\n  .withHandle('@shop_bot')\n  .addAdapter('telegram', telegram({ token: process.env.TELEGRAM_TOKEN! }))\n  .withSessionStore(memoryStore())\n  .addMiddleware(rateLimitMiddleware({ maxRequests: 20, windowMs: 60000 }))\n  .addCommand('catalog', {\n    name: 'catalog',\n    description: 'Browse products',\n    help: 'Use /catalog to see products',\n    async handle(ctx) {\n      const products = await getProducts()\n      await ctx.replyWithButtons('🛍 Our Products:', products.map(p => ({\n        id: p.id,\n        label: `${p.name} — $${p.price}`,\n        action: 'callback',\n        data: `product:${p.id}`\n      })))\n    }\n  })\n  .addCommand('cart', {\n    name: 'cart',\n    description: 'View your cart',\n    help: 'Use /cart to see items',\n    async handle(ctx) {\n      const cart = ctx.session.data.cart || []\n      if (cart.length === 0) {\n        await ctx.reply('Your cart is empty.')\n        return\n      }\n      const total = cart.reduce((s: number, i: any) => s + i.price, 0)\n      await ctx.reply(\n        `🛒 Cart (${cart.length} items):\\n${cart.map((i: any) => `- ${i.name}: $${i.price}`).join('\\n')}\\n\\nTotal: $${total}`\n      )\n    }\n  })\n  .addCommand('checkout', {\n    name: 'checkout',\n    description: 'Complete your order',\n    help: 'Use /checkout to pay',\n    async handle(ctx) {\n      const cart = ctx.session.data.cart || []\n      if (cart.length === 0) {\n        await ctx.reply('Nothing to checkout!')\n        return\n      }\n      const orderId = await createOrder(ctx.message.author.id, cart)\n      ctx.session.data.cart = []\n      await ctx.session.save()\n      await ctx.reply(`✅ Order #${orderId} placed! Total: $${cart.reduce((s: number, i: any) => s + i.price, 0)}`)\n    }\n  })\n  .build()\n```\n\n### 3. Moderation Bot\n\n```typescript\nconst modBot = IgniterBot\n  .create()\n  .withHandle('@mod_bot')\n  .addAdapter('discord', discord({\n    token: process.env.DISCORD_TOKEN!,\n    applicationId: process.env.DISCORD_APP_ID!,\n    publicKey: process.env.DISCORD_PUBLIC_KEY!,\n  }))\n  .addMiddleware(authMiddleware({\n    checkFn: async (ctx) => {\n      const roles = await getDiscordRoles(ctx.message.author.id)\n      return roles.includes('moderator') || roles.includes('admin')\n    },\n    unauthorizedMessage: 'This command is for moderators only.'\n  }))\n  .addCommand('warn', {\n    name: 'warn',\n    description: 'Warn a user',\n    help: 'Use /warn @user <reason>',\n    args: z.object({ userId: z.string(), reason: z.string() }),\n    async handle(ctx, args) {\n      await addWarning(args.userId, args.reason, ctx.message.author.id)\n      await ctx.reply(`⚠️ ${args.userId} warned: ${args.reason}`)\n    }\n  })\n  .addCommand('clear', {\n    name: 'clear',\n    description: 'Clear recent messages',\n    help: 'Use /clear <count>',\n    args: z.object({ count: z.number().min(1).max(100) }),\n    async handle(ctx, args) {\n      await clearMessages(ctx.channel.id, args.count)\n      await ctx.reply(`🧹 Cleared ${args.count} messages.`)\n    }\n  })\n  .build()\n```\n\n### 4. Survey / Feedback Bot\n\n```typescript\nconst surveyBot = IgniterBot\n  .create()\n  .withHandle('@survey_bot')\n  .addAdapter('whatsapp', whatsapp({\n    token: process.env.WHATSAPP_TOKEN!,\n    phone: process.env.WHATSAPP_PHONE!,\n  }))\n  .withSessionStore(memoryStore())\n  .addCommand('survey', {\n    name: 'survey',\n    description: 'Start a survey',\n    help: 'Use /survey to begin',\n    async handle(ctx) {\n      const step = ctx.session.data.step || 0\n      const answers = ctx.session.data.answers || {}\n\n      switch (step) {\n        case 0:\n          await ctx.reply('Q1: How satisfied are you? (1-5)')\n          ctx.session.data.step = 1\n          break\n        case 1: {\n          const rating = parseInt(ctx.message.content?.content || '0')\n          if (rating < 1 || rating > 5) {\n            await ctx.reply('Please enter a number between 1 and 5.')\n            return\n          }\n          answers.rating = rating\n          ctx.session.data.answers = answers\n          ctx.session.data.step = 2\n          await ctx.reply('Q2: What can we improve?')\n          break\n        }\n        case 2: {\n          answers.feedback = ctx.message.content?.content || ''\n          await saveSurveyResponse(ctx.message.author.id, answers)\n          await ctx.reply('Thank you for your feedback! 🎉')\n          await ctx.session.delete()\n          return\n        }\n      }\n\n      await ctx.session.save()\n    }\n  })\n  .build()\n```\n\n### 5. Notifications Bot with Broadcast\n\n```typescript\nconst notifyBot = IgniterBot\n  .create()\n  .withHandle('@notify_bot')\n  .addAdapters({\n    telegram: telegram({ token: process.env.TELEGRAM_TOKEN! }),\n    whatsapp: whatsapp({ token: process.env.WHATSAPP_TOKEN!, phone: process.env.WHATSAPP_PHONE! }),\n    discord: discord({ token: process.env.DISCORD_TOKEN!, applicationId: process.env.DISCORD_APP_ID! }),\n  })\n  .addMiddleware(authPresets.adminsOnly([process.env.ADMIN_ID!]))\n  .addCommand('broadcast', {\n    name: 'broadcast',\n    description: 'Send message to all platforms',\n    help: 'Use /broadcast <message>',\n    args: z.object({ message: z.string().min(1) }),\n    async handle(ctx, args) {\n      const adapters = ctx.bot.getAdapters?.() || {}\n      const results: string[] = []\n\n      for (const [key] of Object.entries(adapters)) {\n        try {\n          await ctx.bot.send({\n            provider: key,\n            channel: ctx.channel.id,\n            content: { type: 'text', content: `📢 Broadcast: ${args.message}` }\n          })\n          results.push(`✅ ${key}`)\n        } catch (e) {\n          results.push(`❌ ${key}: ${(e as Error).message}`)\n        }\n      }\n\n      await ctx.reply(`Broadcast results:\\n${results.join('\\n')}`)\n    }\n  })\n  .build()\n```\n\n---\n\n## 📚 API Reference\n\n### IgniterBotBuilder Methods\n\n| Method | Signature | Description |\n|--------|-----------|-------------|\n| `create()` | `static create(): IgniterBotBuilder` | Create a new builder instance |\n| `withHandle(handle)` | `(handle: string): this` | Set bot handle; auto-derives id and name |\n| `withId(id)` | `(id: string): this` | Override auto-derived ID |\n| `withName(name)` | `(name: string): this` | Override auto-derived name |\n| `withLogger(logger)` | `(logger: BotLogger): this` | Configure structured logger |\n| `withSessionStore(store)` | `(store: BotSessionStore): this` | Configure session storage |\n| `withOptions(options)` | `(options: BotOptions): this` | Set timeouts, retries, error handler |\n| `addAdapter(key, adapter)` | `(key: K, adapter: A): Builder<A, ...>` | Add single platform adapter |\n| `addAdapters(adapters)` | `(adapters: A): Builder<A, ...>` | Add multiple adapters at once |\n| `addCommand(name, cmd)` | `(name: K, cmd: C): Builder<..., C, ...>` | Register a command |\n| `addCommands(commands)` | `(commands: C): Builder<..., C, ...>` | Register multiple commands |\n| `addCommandGroup(prefix, cmds)` | `(prefix: string, cmds: C): Builder` | Register prefixed commands |\n| `addMiddleware(mw)` | `(mw: Middleware): Builder<..., ..., extended>` | Add to pipeline |\n| `addMiddlewares(mws)` | `(mws: Middleware[]): Builder` | Add multiple middlewares |\n| `usePlugin(plugin)` | `(plugin: BotPlugin): this` | Load a plugin |\n| `onMessage(handler)` | `(handler: BotEventHandler): this` | Message event listener |\n| `onError(handler)` | `(handler: BotErrorHandler): this` | Error event listener |\n| `onCommand(handler)` | `(handler: BotEventHandler): this` | Command event listener |\n| `onStart(handler)` | `(handler: BotStartHandler): this` | Start lifecycle hook |\n| `build()` | `(): Bot` | Create the bot instance |\n\n### Bot Instance Methods\n\n| Method | Signature | Description |\n|--------|-----------|-------------|\n| `start()` | `(): Promise<void>` | Initialize all adapters |\n| `adapter` | `get adapter(): Record<string, Client>` | Access raw platform clients (typed) |\n| `handle(provider)` | `(provider: string): (req: Request) => Promise<Response>` | Create HTTP handler for a provider |\n| `send(params)` | `(params: BotSendParams): Promise<void>` | Send a message through an adapter |\n| `registerAdapter(key, adapter)` | `(key: string, adapter: IBotAdapter): this` | Add adapter at runtime |\n| `registerCommand(name, cmd)` | `(name: string, cmd: BotCommand): this` | Add command at runtime |\n| `use(middleware)` | `(middleware: Middleware): this` | Add middleware at runtime |\n| `on(event, callback)` | `(event: BotEvent, callback): void` | Subscribe to event |\n| `emit(event, ctx)` | `(event: BotEvent, ctx: BotContext): Promise<void>` | Manually emit event |\n| `onPreProcess(hook)` | `(hook: (ctx) => void): this` | Hook before middleware pipeline |\n| `onPostProcess(hook)` | `(hook: (ctx) => void): this` | Hook after successful processing |\n\n### Static Factory Methods (Bot)\n\n| Method | Signature | Description |\n|--------|-----------|-------------|\n| `Bot.adapter(def)` | `(def: AdapterDefinition): (config?) => IBotAdapter` | Create an adapter factory |\n| `Bot.command(cmd)` | `(cmd: BotCommand): BotCommand` | Validate command definition |\n| `Bot.middleware(mw)` | `(mw: Middleware): Middleware` | Validate middleware function |\n\n### BotOptions\n\n```typescript\ninterface BotOptions {\n  timeout?: number                          // Request timeout in ms\n  retries?: number                          // Retry attempts for failed operations\n  autoRegisterCommands?: boolean            // Auto-register commands with platforms\n  errorHandler?: (error: BotError, context?: BotContext) => void | Promise<void>\n}\n```\n\n### BotErrorCodes\n\n| Code | Description |\n|------|-------------|\n| `CLIENT_NOT_PROVIDED` | Adapter client not available |\n| `PROVIDER_NOT_FOUND` | No adapter registered for provider |\n| `COMMAND_NOT_FOUND` | Command not found in registry |\n| `INVALID_COMMAND_PARAMETERS` | Command args failed Zod validation |\n| `ADAPTER_HANDLE_RETURNED_NULL` | Adapter.handle() returned null |\n| `CONTENT_TYPE_NOT_SUPPORTED` | Platform doesn't support content type |\n| `INVALID_CONTENT` | Content payload is invalid |\n\n---\n\n## ✅ Best Practices\n\n### Do's\n\n```typescript\n// ✅ Use withHandle() to keep config DRY\nconst bot = IgniterBot\n  .create()\n  .withHandle('@mybot')  // id and name derived automatically\n  .addAdapter('telegram', telegram({ token: '...' }))\n  .addAdapter('whatsapp', whatsapp({ token: '...', phone: '...' }))\n  .build()\n\n// ✅ Use organized imports for clarity\nimport { telegram } from '@igniter-js/bot/adapters'\nimport { rateLimitMiddleware } from '@igniter-js/bot/middlewares'\n\n// ✅ Use Zod schemas for type-safe command arguments\nargs: z.object({\n  userId: z.string(),\n  reason: z.string().optional().default('No reason given')\n})\n\n// ✅ Check capabilities before using platform-specific features\nif (!adapter?.capabilities.content.interactive) {\n  await ctx.reply('Buttons are not supported here.')\n  return\n}\n\n// ✅ Use session for multi-step flows\nctx.session.data.step = 2\nawait ctx.session.save()\n\n// ✅ Use middleware for cross-cutting concerns (auth, logging, rate limiting)\n```\n\n### Don'ts\n\n```typescript\n// ❌ Don't call .start() before .build()\nawait bot.start()  // Error if called on builder\n\n// ❌ Don't repeat handle in every adapter if they share one\n.addAdapter('telegram', telegram({ token: '...', handle: '@bot' }))\n.addAdapter('whatsapp', whatsapp({ token: '...', phone: '...', handle: '@bot' }))\n// Instead:\n.withHandle('@bot')\n.addAdapter('telegram', telegram({ token: '...' }))\n.addAdapter('whatsapp', whatsapp({ token: '...', phone: '...' }))\n\n// ❌ Don't store large objects in session.data\nctx.session.data.largeArray = new Array(100000)  // Memory leak risk\n\n// ❌ Don't forget to call ctx.session.save() after modifying session data\nctx.session.data.cart = newCart  // Won't persist without save()\n\n// ❌ Don't assume all adapters support all content types\n// Always check capabilities or handle BotError with CONTENT_TYPE_NOT_SUPPORTED\n\n// ❌ Don't use ctx.reply() for platform-specific features without checking\n// ctx.editMessage?.(...) uses optional chaining for a reason\n```\n\n---\n\n## 🔧 Troubleshooting\n\n| Problem | Likely Cause | Solution |\n|---------|-------------|----------|\n| Bot doesn't respond | Webhook not configured | Check `webhook.url` in adapter config. Ensure the URL is publicly accessible. |\n| `PROVIDER_NOT_FOUND` error | Adapter key mismatch | Verify `bot.handle('telegram')` matches the key used in `.addAdapter('telegram', ...)` |\n| `CLIENT_NOT_PROVIDED` error | Missing adapter client | Ensure you passed required credentials (token, phone, etc.) and the client factory is defined |\n| `CONTENT_TYPE_NOT_SUPPORTED` | Unsupported content type | Check `adapter.capabilities.content` before sending. Use `ctx.reply('text fallback')` instead of `ctx.replyWithImage(...)` on unsupported platforms |\n| `COMMAND_NOT_FOUND` | Command not registered | Verify command name matches (case-insensitive). Check for typos in `.addCommand()` or that the plugin was loaded. |\n| Session data not persisting | `ctx.session.save()` not called | Always call `await ctx.session.save()` after modifying `ctx.session.data`. |\n| Rate limit not working across restarts | Using default in-memory store | Switch to a persistent store (Redis, database). The `MemoryRateLimitStore` is ephemeral. |\n| Type inference breaks | Middleware chain type mismatch | Ensure `addMiddleware` types are consistent. Use `addMiddlewares([...])` for batch additions. |\n| Webhook verification fails (Discord) | Missing or wrong `publicKey` | Pass `publicKey` in Discord adapter config. Discord requires Ed25519 signature verification. |\n| Build fails with missing exports | Wrong import path | Use exact subpath exports: `@igniter-js/bot/adapters`, `@igniter-js/bot/middlewares`, etc. |\n\n---\n\n## 📝 Contributing\n\nSee [CONTRIBUTING.md](../../CONTRIBUTING.md) for development setup and guidelines.\n\n---\n\n## 📄 License\n\nMIT © Felipe Barcelos\n","readmeFilename":"README.md"}