{"_id":"bottender","_rev":"249-ea8501fdc785bdd6d9a64fd4e62940a4","name":"bottender","dist-tags":{"latest":"1.5.5","next":"1.5.1-alpha.7","none":"0.15.18"},"versions":{"0.0.1":{"name":"bottender","version":"0.0.1","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":"","license":"ISC","_id":"bottender@0.0.1","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-kx/zE7YRZ3KDkbcafZd30UoP0wIywM3fwPrBOWtSzAtVg++41fR0TF808Nfm8wxyKODkb5kFQIvI23aH8YzX9g==","shasum":"45a334400fa1f325acd65f2a1118e7949d21048e","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICY7KVYcHD2hYLBZB2D+0IB+Lg21ou8i+0h7LXOvrILGAiEAysx44t0FuFOWHvaKNapbsj8BZMCCKdybKpilf64GUgE="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.0.1.tgz_1501859178564_0.0006728586740791798"},"directories":{}},"0.13.13":{"name":"bottender","version":"0.13.13","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.0","babel-preset-flow":"^6.23.0","documentation":"^5.3.3","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.7.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.2.3","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"@yoctol/static":"^0.0.2","axios":"^0.16.2","babel-register":"^6.26.0","body-parser":"^1.18.2","chalk":"^2.1.0","child_process":"^1.0.2","cli-table2":"^0.2.0","commander":"^2.11.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","didyoumean":"^1.2.1","express":"^4.16.2","file-type":"^7.1.0","fs-extra":"^4.0.2","glob":"^7.1.2","hasha":"^3.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.1.4","is-image":"^2.0.0","jfs":"^0.2.6","jsonfile":"^4.0.0","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.4.4","messaging-api-messenger":"^0.4.7","messaging-api-slack":"^0.4.4","messaging-api-telegram":"^0.4.6","micro":"^9.0.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","random-item":"^1.0.0","readline":"^1.3.0","restify":"^6.2.0","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"106ec386b77c2c81d396afae8b6f112f5397cb8c","_id":"bottender@0.13.13","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-N0BSpbvACH+F1PY97AH1Aqgg6ijXloiwkOrNtZdztLlHhlMRFGPTPd0T7Wu+iKNHWFtYZnNZf2TdO0E+mgmjvA==","shasum":"df12b100bfb04d339ba84bdc5976ef619fafd8d3","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.13.13.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICUh6thEIj0pztf40xXsaVCiLCWNF6OxS+/OXeBmq8l4AiEAjDgQitpVF/LcA9ixafypHIJWQCyu2RXwVl7dih4VcCs="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.13.13.tgz_1508381128413_0.5276261491235346"},"directories":{}},"0.14.0-beta.1":{"name":"bottender","version":"0.14.0-beta.1","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","documentation":"^5.3.3","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"@yoctol/static":"^0.0.2","axios":"^0.16.2","babel-register":"^6.26.0","body-parser":"^1.18.2","chalk":"^2.2.0","child_process":"^1.0.2","cli-table2":"^0.2.0","commander":"^2.11.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","didyoumean":"^1.2.1","express":"^4.16.2","file-type":"^7.2.0","fs-extra":"^4.0.2","glob":"^7.1.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.1.4","is-image":"^2.0.0","jfs":"^0.2.6","jsonfile":"^4.0.0","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.0","messaging-api-messenger":"^0.5.0","messaging-api-slack":"^0.5.0","messaging-api-telegram":"^0.5.0","micro":"^9.0.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","random-item":"^1.0.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"d3db936de1325eba453fd397c602297d14259120","_id":"bottender@0.14.0-beta.1","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-cCLQ8haYPJpHhmBi5Fh72tG46CsvUlH+aGTuyff9v6o8AlsYkkOoxecV45QHef4/8e5SEEja/942T9+LnxYQQg==","shasum":"2bb7bf22a2b5c356828136c9bb38746f26d16bc8","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.0-beta.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBCAcljKI5dSY+Ifu+mt231u8DwIuJlv7/zZkPvvQAC5AiBmw8cMCgnRJiG59kvcE/ha8zufhugZ0qfuf4rhoRYR8w=="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.0-beta.1.tgz_1508488475123_0.4684026758186519"},"directories":{}},"0.14.0-beta.2":{"name":"bottender","version":"0.14.0-beta.2","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","documentation":"^5.3.3","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"@yoctol/static":"^0.0.2","axios":"^0.16.2","babel-register":"^6.26.0","body-parser":"^1.18.2","chalk":"^2.2.0","child_process":"^1.0.2","cli-table2":"^0.2.0","commander":"^2.11.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","didyoumean":"^1.2.1","express":"^4.16.2","file-type":"^7.2.0","fs-extra":"^4.0.2","glob":"^7.1.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.1.4","is-image":"^2.0.0","jfs":"^0.2.6","jsonfile":"^4.0.0","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.0","messaging-api-messenger":"^0.5.0","messaging-api-slack":"^0.5.0","messaging-api-telegram":"^0.5.0","micro":"^9.0.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","random-item":"^1.0.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"fd458c339a9660b084a4179240658a13bc878ce1","_id":"bottender@0.14.0-beta.2","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-U70Ypy5k6NADt17WtaKKy6ePT5WKBDRQuLlBqTAUIl1fCbYAmzZACXEo7uExMI1YS/xMGkTT4AKwLBACGAthcA==","shasum":"f25552bbcc7173c0831e5290f39fe8002030b7be","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.0-beta.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf3YO74at6mZUH9/Oy5CiQwhoxT7ImuS6upVX4aW0HLgIgKoUfSUq4Cf7rrQe0ehtShMtWRDvskprYtT7z6UDCnJo="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.0-beta.2.tgz_1508821986157_0.9601344149559736"},"directories":{}},"0.14.0-beta.3":{"name":"bottender","version":"0.14.0-beta.3","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","documentation":"^5.3.3","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"@yoctol/static":"^0.0.2","axios":"^0.17.0","babel-register":"^6.26.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","file-type":"^7.2.0","fs-extra":"^4.0.2","glob":"^7.1.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.2.1","is-image":"^2.0.0","jfs":"^0.2.6","jsonfile":"^4.0.0","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.2","messaging-api-messenger":"^0.5.3","messaging-api-slack":"^0.5.2","messaging-api-telegram":"^0.5.2","micro":"^9.0.0","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","random-item":"^1.0.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"31ab3bb54c4d380fb49a461bb7eb37291000b6a3","_id":"bottender@0.14.0-beta.3","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-K09UDNzZfmxOm6U6FjRMgp3IQdzQQtHVxvuJdp3J8hY2irS4bH9xJlHJydgoJS4O1vWqFUpxcMBls7U51ZgRtg==","shasum":"4d5500d58ebfa8c8121f4b015d685ea26928c582","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.0-beta.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANf63RNRGxrG+WPXgXiVBYQrmt1NamOjI6ZXOZGxj5VAiBLHFuDRebh/oGpyBY5w/tydIImQsTl7M+Na2cbJgkM5w=="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.0-beta.3.tgz_1509015902190_0.0564178922213614"},"directories":{}},"0.14.0-rc.1":{"name":"bottender","version":"0.14.0-rc.1","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","documentation":"^5.3.3","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"@yoctol/static":"^0.0.2","axios":"^0.17.0","babel-register":"^6.26.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.2.0","fs-extra":"^4.0.2","glob":"^7.1.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.2.1","is-image":"^2.0.0","jfs":"^0.2.6","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.2","messaging-api-messenger":"^0.5.3","messaging-api-slack":"^0.5.2","messaging-api-telegram":"^0.5.2","micro":"^9.0.0","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","random-item":"^1.0.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"c17ed533443f96d9798b2745b48a431850e28b2b","_id":"bottender@0.14.0-rc.1","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-5S7f+7XPtXNSjO88/ye+yhzYOF89bX1rxqEbjfygG9GCUyX4Z+XsDJZnspDhtpVyd5T29w9RwwawjmPIg4DwCQ==","shasum":"86d7f328562f2e636aac807e7feb5d370e8004b3","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.0-rc.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCh5+HONHzVUsqlcgJoQpkdUdYQbfvlBDW70wFh9klQoQIhAMLq01kqk59x1+N6B55JKYCJyad9/dhmEH9NbV8S/WVn"}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.0-rc.1.tgz_1509098164416_0.3498930227942765"},"directories":{}},"0.14.0-rc.2":{"name":"bottender","version":"0.14.0-rc.2","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","fs-extra":"^4.0.2","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.2.6","joi":"11.3.4","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.2","messaging-api-messenger":"^0.5.3","messaging-api-slack":"^0.5.2","messaging-api-telegram":"^0.5.2","micro":"^9.0.0","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"bac016aca0f691fec2b8c9317e3d9b5fa635f8de","description":"[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender) [![Build Status](https://travis-ci.org/Yoctol/bottender.svg?branch=master)](https://travis-ci.org/Yoctol/bottender) [![coverage](https://codeco","_id":"bottender@0.14.0-rc.2","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-IxlWqEEnqa5GjzHv1H8w439uKQQY1yu9RowDw9fKmWH2bGVUd/ef5VowqtOO9gjnsEuz9f1/6c4kw677YN9n/w==","shasum":"81c9257bb26c6dbd8ac656dc2e0cfad678753f3a","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.0-rc.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA9r8AjjBgdRSG0IFXOZKL+I//xJxfUecZT7Zyq/ZWblAiADbHBYmLqWaXV4zgm5VzYDSBAjsz2p9uriAHXoXHHeJQ=="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.0-rc.2.tgz_1509517994960_0.9776061202865094"},"directories":{}},"0.14.0-beta.2.1":{"name":"bottender","version":"0.14.0-beta.2.1","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","documentation":"^5.3.3","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"@yoctol/static":"^0.0.2","axios":"^0.16.2","babel-register":"^6.26.0","body-parser":"^1.18.2","chalk":"^2.2.0","child_process":"^1.0.2","cli-table2":"^0.2.0","commander":"^2.11.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","didyoumean":"^1.2.1","express":"^4.16.2","file-type":"^7.2.0","fs-extra":"^4.0.2","glob":"^7.1.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.1.4","is-image":"^2.0.0","jfs":"^0.2.6","jsonfile":"^4.0.0","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.0","messaging-api-messenger":"^0.5.0","messaging-api-slack":"^0.5.0","messaging-api-telegram":"^0.5.0","micro":"^9.0.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","random-item":"^1.0.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"93ef98d553d08f92743b9d3f3715680fcff263c4","_id":"bottender@0.14.0-beta.2.1","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-L86ISJO11ys7vVhu9xUoBBYqFkyvnZEEpiaiDn34nhFIvDfa+bm5WGsVcuNErai4X7lfvU1sqdPZMQXTWOvlfA==","shasum":"6ea7f29a4a3a780e1d0d576cc0c6d7f79ff3605b","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.0-beta.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFduz7rjVAbnd35AOb7D9N1CDKCRsRz08lPhEo5gEAsiAiBAUecKB3VNJkr4hKlDTmbVvTfkX7bo6kR0qHimM2wXVQ=="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.0-beta.2.1.tgz_1509518840213_0.45081831770949066"},"directories":{}},"0.13.14":{"name":"bottender","version":"0.13.14","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.0","babel-preset-flow":"^6.23.0","documentation":"^5.3.3","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.7.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.2.3","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"@yoctol/static":"^0.0.2","axios":"^0.16.2","babel-register":"^6.26.0","body-parser":"^1.18.2","chalk":"^2.1.0","child_process":"^1.0.2","cli-table2":"^0.2.0","commander":"^2.11.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","didyoumean":"^1.2.1","express":"^4.16.2","file-type":"^7.1.0","fs-extra":"^4.0.2","glob":"^7.1.2","hasha":"^3.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.1.4","is-image":"^2.0.0","jfs":"^0.2.6","jsonfile":"^4.0.0","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.4.4","messaging-api-messenger":"^0.4.7","messaging-api-slack":"^0.4.4","messaging-api-telegram":"^0.4.6","micro":"^9.0.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","random-item":"^1.0.0","readline":"^1.3.0","restify":"^6.2.0","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"eb80c53ba82db1b15bd8c157264a3576dcb04803","_id":"bottender@0.13.14","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-P01ZtUshsimmBCyhOjdQaVjvqCP3CEkHh4CHVWmGOzJeyrSdBgj6/NMgF6oEZViVvhLk1N3lgAp+c1jhzsO0ng==","shasum":"0d7895cdd83756a446e02b2dcd14db78060f2da6","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.13.14.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuS0FPA2MjZakFdYJ1WcUGsU2YKBd7uhKV0NfVsgnJMgIgFRHw2JC+VxlF26uEtulVv92O04c2Pju0+m7qz9cB2a4="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.13.14.tgz_1509519204501_0.2241869408171624"},"directories":{}},"0.14.0":{"name":"bottender","version":"0.14.0","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","fs-extra":"^4.0.2","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.2.6","joi":"11.3.4","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.2","messaging-api-messenger":"^0.5.3","messaging-api-slack":"^0.5.2","messaging-api-telegram":"^0.5.2","micro":"^9.0.0","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"c5ca557344e4714d85a88b099db8fb0a446c987c","description":"[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender) [![Build Status](https://travis-ci.org/Yoctol/bottender.svg?branch=master)](https://travis-ci.org/Yoctol/bottender) [![coverage](https://codeco","_id":"bottender@0.14.0","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-XoL8li7ALwNvyQlVN5/6HFkO6cqFZDeMtjU8ELndJlS00PGTzA4eoNzDds2d+wLd8ww0cRm7Cm/Z4eJIuiJS9g==","shasum":"2c20cb2a95719158fee0d7228941f9d226e65f60","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC2wRDr6ELYcT/xHqlF0y1yX0wovXjZZZsmgjf+leH4XAiEAxnXWO6HOxGTJVGoB4p5Kt6GxManOOkUcB30x2KtOWok="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.0.tgz_1509590613754_0.9395106302108616"},"directories":{}},"0.14.1":{"name":"bottender","version":"0.14.1","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","fs-extra":"^4.0.2","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.2.6","joi":"11.3.4","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.2","messaging-api-messenger":"^0.5.3","messaging-api-slack":"^0.5.2","messaging-api-telegram":"^0.5.2","micro":"^9.0.0","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"8aef1a29b5a236f912ff7bf0a0576896e2902035","description":"[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender) [![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender) [![coverage](https://codecov","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.1","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-/wB0oAT7yH0rOS8HOYpVLcVi2f703LHVgpHsiEtYPhojWng8D/zmaiWHpgS4CSKR/F6TZbp7fGZ8ieMsez9GdQ==","shasum":"e7d19b46040d60f9c1a7d65e8751150df2408fc3","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFYrZsTZ3vMx8uDULta1edj30kdmTRubcbmtPWFqV+4MAiEAyBre+U9EQbzj+p0thPbQ3QVDg0Xqt/E0cw6D28NntH0="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.1.tgz_1510052418864_0.19182897731661797"},"directories":{}},"0.14.2":{"name":"bottender","version":"0.14.2","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.9.0","eslint-config-prettier":"^2.6.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.57.3","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^4.3.0","ngrok":"^2.2.23","prettier":"^1.7.4","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","fs-extra":"^4.0.2","import-fresh":"^2.0.0","inquirer":"^3.3.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.2.6","joi":"11.3.4","koa":"^2.3.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.2.1","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.2","messaging-api-messenger":"^0.5.3","messaging-api-slack":"^0.5.6","messaging-api-telegram":"^0.5.2","micro":"^9.0.0","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","readline":"^1.3.0","restify":"^6.2.3","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"f639d8f063555f4cbca34d2d746690efe4f6a8bf","description":"[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender) [![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender) [![coverage](https://codecov","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.2","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-LKOspAn440slWFXu7ekkjiewWzv7xSSh4ta1El00g6ffNPLwMTXhp26AOQFU4+zZRNB80a8d3EBPcoSbowpP8Q==","shasum":"83ade23e3a3c5f9732fb650a3d691c1e13d24deb","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICiEhMYNnNfcVpgDZ6MTSlYWCbRORHrKLnBBY6+sjDG3AiEA5TOlyzgB3s6Dc7QfNXj0lfmyDvjH1Hu8LywBOai43aw="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.2.tgz_1510052704552_0.5959634587634355"},"directories":{}},"0.14.3":{"name":"bottender","version":"0.14.3","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.2","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.11.0","eslint-config-prettier":"^2.7.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.59.0","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.1.0","lint-staged":"^5.0.0","ngrok":"^2.2.23","prettier":"^1.8.2","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","fs-extra":"^4.0.2","import-fresh":"^2.0.0","inquirer":"^4.0.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.3.0","joi":"11.3.4","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.7","messaging-api-messenger":"^0.5.8","messaging-api-slack":"^0.5.7","messaging-api-telegram":"^0.5.4","micro":"^9.0.1","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","readline":"^1.3.0","restify":"^6.3.2","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"54d629307c3527cfbed2c3d3157cf4266f36c54c","description":"[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender) [![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender) [![coverage](https://codecov","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.3","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-idPI2TrGy/TNzHwHOAKAxC8e4o4qQpe94Diyg3xt3nWR28SawodmeGA/nfuqCBl70C3ABpuQ8rtN3zyvsYg+Wg==","shasum":"3d0af2ed5fadd89a77e2c36a0fe05de15e448606","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDS64fJmFelKHPE1EMRK0Zex4iavH811ZPtLoZu/ZGM9wIgBMW7n7nGQTmdiU+6+Wvk6PdQRWJpmELmt1B1SjzgJ7w="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.3.tgz_1510630122642_0.03833564533852041"},"directories":{}},"0.14.4":{"name":"bottender","version":"0.14.4","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.2","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.11.0","eslint-config-prettier":"^2.7.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.59.0","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.2.1","lint-staged":"^5.0.0","ngrok":"^2.2.23","prettier":"^1.8.2","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","fs-extra":"^4.0.2","import-fresh":"^2.0.0","inquirer":"^4.0.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.3.0","joi":"11.3.4","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.7","messaging-api-messenger":"^0.5.9","messaging-api-slack":"^0.5.7","messaging-api-telegram":"^0.5.4","micro":"^9.0.1","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","readline":"^1.3.0","restify":"^6.3.2","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"8c16214ec940a17e2178f3ffc740ea7fc029f6a9","description":"[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender) [![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender) [![coverage](https://codecov","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.4","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-GBZ544ie7Dl7usPIYCnwlymoINIiAyD3//1v8TrdxH7pfGbZT8yAmnhQ5Vjm463H6Jr1ApK2g4F8x1dn6UoMZg==","shasum":"8c12289fadca4cfa946a151b949fce2d0dcf1b6d","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQwYXmP1RWJ5Gsm5ViQD5rqQUNg3Vk3pHrvuZierMhMwIgSI3kaHqF0bXIPJr67PPuVO8VHxFPa8hqLlLMCtJd1G4="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.4.tgz_1510728242559_0.03505613678134978"},"directories":{}},"0.14.5":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","version":"0.14.5","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build:docs":"node scripts/build-docs","build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.2","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.11.0","eslint-config-prettier":"^2.7.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.59.0","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.2.1","lint-staged":"^5.0.0","ngrok":"^2.2.23","prettier":"^1.8.2","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","fs-extra":"^4.0.2","import-fresh":"^2.0.0","inquirer":"^4.0.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.3.0","joi":"11.3.4","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.7","messaging-api-messenger":"^0.5.9","messaging-api-slack":"^0.5.10","messaging-api-telegram":"^0.5.4","micro":"^9.0.1","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","prompt-confirm":"^1.2.0","readline":"^1.3.0","restify":"^6.3.2","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"18a8da7115c93c0dbf8709b701bcd88c469404a0","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.5","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-0iaF5Sb0TBbYDxDrPhOh18fhLDN1CVeaCSE3HyxzPRZqCxyn62s6YYrLW3uqKoDthx4XG+niCLn4iPSHfrKgMw==","shasum":"87a32db09300863319e0e81e129e812ec7ea8d77","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsOfwR3OnUEnmHSEL0UJDvAxMoLqOpVB9Gh39yYqR6cgIhALORnW+i3+HUqSDuRVDD0T45cuk7niOH9p3ABYIIcJu0"}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.5.tgz_1511259078890_0.4845993279013783"},"directories":{}},"0.14.6":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","version":"0.14.6","license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js","test-utils.js","utils.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.2","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.11.0","eslint-config-prettier":"^2.7.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.59.0","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.2.1","lint-staged":"^5.0.0","ngrok":"^2.2.23","prettier":"^1.8.2","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.3.0","fs-extra":"^4.0.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.7","messaging-api-messenger":"^0.5.12","messaging-api-slack":"^0.5.10","messaging-api-telegram":"^0.5.4","micro":"^9.0.1","minimist":"^1.2.0","mongodb":"^2.2.33","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.2","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"5ab932342fd6138a0fdcf76d789240146da6e274","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.6","_npmVersion":"5.5.1","_nodeVersion":"9.2.0","_npmUser":{"name":"kpman","email":"s92f002@gmail.com"},"dist":{"integrity":"sha512-dJQ1f1UqzgMc63VyvpzEUNsNuNnNM2KaMw/wocNjb7O3TmDL+GaQp8cZT9JaJt4+i41U8QSYGjQ86yUJN568mw==","shasum":"a25179888dbde4c58174536a0c67e7b1b7f7cb51","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAGqjxHol5WqyJQk2xtpwayFdI2IfWN/RvRqS4oIPeUTAiAqiw92+g3XG5FDNqkMAOykZPIH6y4UzFLfGyGAv3EyaA=="}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.6.tgz_1511777790689_0.8636138618458062"},"directories":{}},"0.14.7":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","version":"0.14.7","license":"MIT","engines":{"node":">=7.6"},"main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js","test-utils.js","utils.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.9.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.2","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.11.0","eslint-config-prettier":"^2.7.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.59.0","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.2.1","lint-staged":"^5.0.0","ngrok":"^2.2.23","prettier":"^1.8.2","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.3.0","fs-extra":"^4.0.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.0","invariant":"^2.2.2","ioredis":"^3.2.1","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.7","messaging-api-messenger":"^0.5.12","messaging-api-slack":"^0.5.10","messaging-api-telegram":"^0.5.4","micro":"^9.0.1","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.2","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":"eslint --fix"},"gitHead":"b35b4f349cf78baa75aac4ddfd0669a44926d51f","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.7","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"tw0517tw","email":"tw0517tw@gmail.com"},"dist":{"integrity":"sha512-4lBpQPhnhvqg2zVpInOCF0Kc+Y4xWAdkKAa1eReWZhepFZ5A5MA3dpOdCrLhJVjLDqg5NpibVEAhPAJ85zOSSA==","shasum":"3eae4b7604a14fdb57c2ed3723c05835cfb6b0b6","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtPqPFt++8AnkFSwxyjE3YRDuMaxmd96SRfEa/lT7o0QIhALGuw7tkXLTyc/4URLu1JnD6FDSVJDLRf2iGZaTSE3B9"}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.7.tgz_1512030336032_0.877389214001596"},"directories":{}},"0.14.8":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","version":"0.14.8","license":"MIT","engines":{"node":">=7.6"},"main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js","test-utils.js","utils.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.3","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.12.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.60.1","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.3.0","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.8.2","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^4.0.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.16","messaging-api-messenger":"^0.5.16","messaging-api-slack":"^0.5.16","messaging-api-telegram":"^0.5.16","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"]},"gitHead":"da67cede882f4461c26bcfd3b7895a9873f31589","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.8","_npmVersion":"5.5.1","_nodeVersion":"9.2.0","_npmUser":{"name":"kpman","email":"s92f002@gmail.com"},"dist":{"integrity":"sha512-AmpLBYAkZX0Qjq95CKFin7tlMbObvvY5AYxn+6GrZ/eUOmMdYnas7cbkNrj3DWYvGGxD0mBpYbZdwrEVIt5jKQ==","shasum":"1914785a875c9baf9be3ae1c2e31ce58749ce3e4","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.8.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVboTuu+JwzHf/GtjR5VYeYqFQ7jOclOP/q6XFePtpEQIgBBht+b+e8/IVZTEuFMlhut+W3+T5fdMeNahwmFmAebE="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.8.tgz_1512466039887_0.002090204507112503"},"directories":{}},"0.14.9":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","version":"0.14.9","license":"MIT","engines":{"node":">=7.6"},"main":"lib/index.js","browser":"lib/browser.js","keywords":["messaging","messenger","line","slack","telegram","bot","chatbot","framework"],"homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"files":["bin","lib","express.js","koa.js","micro.js","restify.js","test-utils.js","utils.js"],"bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","clean":"rimraf lib","check":"flow check","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","precommit":"lint-staged","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test","prepublish":"npm run build"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.3","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.12.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.39.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.60.1","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.3.0","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.8.2","rimraf":"^2.6.2","supertest":"^3.0.0"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^4.0.2","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.5.16","messaging-api-messenger":"^0.5.16","messaging-api-slack":"^0.5.16","messaging-api-telegram":"^0.5.16","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"]},"gitHead":"7132ee42e164c7e4b412fa9b2a995b93fa48671f","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.9","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-hJ8hMVsXsoiScz8a7yOjc8CrTNSboO2RabqgHvvsjgf+tWatf5qpn3/Ey51ncztdQJUQNIBM9GwUqqV49fBa7A==","shasum":"bdc7c41b4f6e83288af36e4332c3c3ba19b1f865","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.9.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDVoRnMrByE92TKLYSeNRLa5r2klFPKk4UhmnRpRN2kwAiEA6gTIJl4ZRoWI008w3setXKLI4M9KWzm/+SWx7Hv1SEE="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.9.tgz_1512555207664_0.0593150882050395"},"directories":{}},"0.14.10":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.10","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.1","messaging-api-messenger":"^0.6.3","messaging-api-slack":"^0.6.0","messaging-api-telegram":"^0.6.2","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.3","babel-jest":"^21.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.1","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.3.1","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^21.2.1","jest-junit":"^3.4.0","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"c4d79b8689f65bdf268e577bb1af20784499fbed","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.10","_npmVersion":"5.6.0","_nodeVersion":"9.2.0","_npmUser":{"name":"kpman","email":"s92f002@gmail.com"},"dist":{"integrity":"sha512-fjgKGQEXCofPsyzKJFXaryQU3XTCY3Ekf0JpLNe6ENaBfsUoHbekqMX356uu5HC5yO+/It5TF0Nl9P+k8NFRXQ==","shasum":"9dfebeb4bbb5ee365d2a7ab2c300dee801ce2385","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.10.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4MsJBIW+6g94uHiNhr8+KcOJDXnWawjOkd7w+KYFraQIhANQ+p8BckrinabUVPcctQWf6tM4tKUh4s0QAGv+7HzyY"}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.10.tgz_1513248118724_0.18621626193635166"},"directories":{}},"0.14.11":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.11","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.1","messaging-api-messenger":"^0.6.6","messaging-api-slack":"^0.6.0","messaging-api-telegram":"^0.6.5","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"^8.0.3","babel-jest":"^22.0.3","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^22.0.3","jest-junit":"^3.4.1","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"75f20cbf3a44593307379723432a05747ff80bb3","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.11","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-toajo95HUBH37xR3iuLL276VOv6enwecNFj4OZ+HfQdv8jwj873OpMDSokBL1/yrZOcpz3m49+zcopa70BRIoA==","shasum":"f512b4d592cc6c51d434078217325121b3d3715e","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.11.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC1SlgcP+WIpG8xir2W5WLVL6Q0cXs1ZiX/mbV7uWcQkAiEA0wwagXMXh0ToXpGHPJ5/J52ikBy7MlvJKFf1ZUPD8lI="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.11.tgz_1513757520213_0.8906954249832779"},"directories":{}},"0.14.12":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.12","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.6","messaging-api-slack":"^0.6.0","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"~8.0.3","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"~4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^22.0.4","jest-junit":"^3.4.1","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"5904a6b2ab9160416e523d0d8c77a15c13d7d658","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.12","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-hRBGURopJWFdRjY2G4PdbBhkZPXYSRYJDAciCRBycYxqLVP7F71ghWK59ohHiD4IHSpHz/R4ifx9NO7xZIATVw==","shasum":"596511c20bab2f13f28b34effa4214237454f86e","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.12.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTM7JqCXtp3OG1m0gWI8M7lulCd2xWTx4x6k/ioiumLgIhALZ38AEblOx86Tdybt2+LYJHVlNWiamacAGiLaeRgDnA"}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.12.tgz_1514194954139_0.7981446196790785"},"directories":{}},"0.14.13":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.13","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.6","messaging-api-slack":"^0.6.0","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"~8.0.3","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"~4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^22.0.4","jest-junit":"^3.4.1","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"e603491730dd233e3f860617484f9d0624de7083","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.13","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-tQ6vgdTp8NfyFMGj0aHm2IGOCDD3gOpSKwtiFANygHd05np2n/lJSETB3v6kUIMsqlhe0NgfcywrvO/fVsECVQ==","shasum":"7a738506a38aab5176179d046dacfd3bb2faaf48","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.13.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0ZdUWamjrsk5ESkIXrSufRz2TiDibZYDftmcLUI/g6AiEA20TIHA+kcCieqRI77Akif0HSM+NeLxB1Vtsq1uOtem8="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.13.tgz_1514977647778_0.20745055540464818"},"directories":{}},"0.14.14":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.14","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.6","messaging-api-slack":"^0.6.0","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"~8.0.3","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"~4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^22.0.4","jest-junit":"^3.4.1","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"2131a138159b4e03a651c4bc12da152112881d85","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.14","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-XnICE8FXNwkMybktFM9JlXSH2Nft14C4MsazbjoHhlhqpyJbunz63fpzssTRcYzXvYYwmDAcOqpQsdol/1K6XQ==","shasum":"5f0ffa1c8ad9080cc3d2226c87fbf166f3778fda","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.14.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYQQHUT7IMhzi9n/bQGaB+OcGhuH3KkADMOymh3LvYagIhAOBuZy7thK6bJl8+RFwaz5a5O6/BFJH27lfR9GTEan6g"}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.14.tgz_1515386706596_0.44812877755612135"},"directories":{}},"0.14.15":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.15","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.9","messaging-api-slack":"^0.6.10","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"~8.0.3","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"~4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^22.0.4","jest-junit":"^3.4.1","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"0eb5e40dba83b7ca81fb84e2c3d7cdcfc11c371c","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.15","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-NcB7dPs8anr2KrA0dN22cuosADNazIAXCcg+aNTS8cnIPODDE9ubzxRxgzlgHAQwnAapjLBfjjqYEk7Sg+ydXg==","shasum":"5b6196904e58048dfdbdb6560cd94f2046f2f036","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.15.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlLRNEW00wWafiRci8eJBZb8vsIHIrtzXSlN3wbYfLqAiEA1W15AEX3djVXlv2MJrFtUI+/zWDdfqYMJbq6O7Eycno="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.15.tgz_1515753536147_0.6440386541653425"},"directories":{}},"0.14.16":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.16","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.9","messaging-api-slack":"^0.6.10","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"~8.0.3","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"~4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^22.0.4","jest-junit":"^3.4.1","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"572fdf5b75e39a3ddb8d94f7d0d0d92fedb22d3f","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.16","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"kpman","email":"s92f002@gmail.com"},"dist":{"integrity":"sha512-w1ML1ShdHpFVVatxBna6ms4OCba8+k2XHqe9AdXXSFAmDQxvLtkckTiQj8Cwmv5qvrqZ/uUkceAlVApeJ908uw==","shasum":"1e722f37f9207c20114878173ee32e192b9e50a5","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.16.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmV1c0njXG7lFckjlh2mHARl/Zs/0BnIqeXRswT0kwVAiA30I+wIN6SizZW4MUrrVMsZQRv16JDS5QwDqA8fNGpLg=="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.16.tgz_1516089977235_0.7729453179053962"},"directories":{}},"0.14.17":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.17","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^3.15.0","axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.9","messaging-api-slack":"^0.6.10","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"~8.0.3","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"~4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^22.0.4","jest-junit":"^3.4.1","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"fab620222264de673f5ccc79848473b7bb0c0ecd","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.17","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-iIau+xUoeYT8HoaNGsNiHCgb8VdBT2AwLd/XLMn2vcCO6jtb7X9+cTqNVzIx0xngI4uDUYJHEwh0wVNzRhcGCA==","shasum":"67f93ec872283ab0820d3a586f6c387e57532bcf","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.17.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBd/QZ8iiY8gWhxp0pvPg39aJ/C31gw0mcGHXyeWamUAiAxSklcDu6TvhzaoqywI7QiQXfajeDGRw4TVi9BIpV7jQ=="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.17.tgz_1516189293395_0.9879868882708251"},"directories":{}},"0.14.18":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.18","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^3.15.0","axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^5.1.0","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.4.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^4.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.9","messaging-api-slack":"^0.6.10","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.0","micro":"^9.0.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.10.0","babel-cli":"^6.26.0","babel-eslint":"~8.0.3","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"~4.13.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","flow-bin":"^0.61.0","husky":"^0.14.3","jest":"^22.0.4","jest-junit":"^3.4.1","lint-staged":"^6.0.0","ngrok":"^2.2.24","prettier":"^1.9.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"95cc12046e34125bc11d73667e847a30a8ac0273","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.18","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-nMOILtE5SeuhMgq11DM5jB0sgtoj6Q7E2OJ8GxEXGyRGZbwWnYa6mm3jNAa9JdbNkR6gPnu7qTdlxFOcuQon5Q==","shasum":"4522daa3b327a10fb28d316818865e74eff62508","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.18.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEK/X1pqqRAs/mwBsfKttw2s6ridrEKo9pQeVyeGbFuAAiEAs4j5rOMqmTRxwhD+i9O073oCzXilgzg8UlSdKmBj0Pk="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.18.tgz_1516273104113_0.4918198303785175"},"directories":{}},"0.14.19":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.19","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^3.15.0","axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.9","messaging-api-slack":"^0.6.10","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.11","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^6.0.1","ngrok":"^2.2.25","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"25a58774fe3da435c6743a4b8cd50d998767edc5","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.19","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-pyUbX2PSIYrfB6ay17EYYEm50Sc4l9LLOfZeiCuadzMHL5+iC+WlQ5iyvsev7fC00KOCLaySfHrCXp0qA1gI0w==","shasum":"81497da8f2a6a58beb5102f6fe819d433988fde7","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.19.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDb855l25AepHAc4DKNxez+H4frsUkou5n+RtJp7A+mqQIgcEOw46vNjPnUX9uk2t7ZQePEuCfL+WK0EKiBQsTXVK4="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.19.tgz_1516862460245_0.23276175069622695"},"directories":{}},"0.14.20":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.20","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^3.15.0","axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.9","messaging-api-slack":"^0.6.10","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.11","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^6.0.1","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"32087b450854ceb2462751e2f67d4db1d33af566","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.20","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-IK5/RlMWZxBXGByWnIbTKRHedk5+H2Zl5fjreULsyaUS2HZwsifgXGcZiRND/BghJ/CgGwJhoIGzPNqrrCW9rg==","shasum":"fd7986a686e9815d7cd0744fc1b0252521aa0fd7","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.20.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHnu/govSVSR86oOkXpEaeS1sdzd6gx8pioavBrVWlJzAiEAigSkIfOeSvk+JBwyn0MtJ1j4EnjrvGeJnfJNbhCSOiA="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.20.tgz_1517313536903_0.6587815838865936"},"directories":{}},"0.14.21":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.21","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^3.15.0","axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.7","messaging-api-messenger":"^0.6.9","messaging-api-slack":"^0.6.10","messaging-api-telegram":"^0.6.8","messaging-api-viber":"^0.6.11","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^6.0.1","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"53104613c479a081d7e7fec87a7c01be56599494","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.21","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-RI69EPSrNBWg3wRdX6T/jADRdj0X0kXdHgq+lNbKVmqFtZQrtDSMQPEIOxm8hPY56bvfnIsSIGlmmkkz1uYcKQ==","shasum":"6563e233e02d70dc3041e898fee0c27855a11600","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.21.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+MXnw6CE++TzsMX2qv3TbUXepeRY/bTPfSok3sHup7AiAZstgsW+0/fLekv9BJ3PWsMBpw7d7XfcFz1QjSx7uUgQ=="}]},"maintainers":[{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender-0.14.21.tgz_1517845219115_0.7273605088703334"},"directories":{}},"0.14.22":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.22","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^3.15.0","axios":"^0.17.1","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.3.4","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.13","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.14.2","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^6.0.1","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"6d44b056a8d83ca6c1a0658adfb3889ad117a3b4","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.22","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-ReUvX/6H4zIDBA2XSrlkZ6nyUjUsibRg/Jg01GUrXGWCcPcOVc1tQLV/Ux7spTGtt18HINdpkToecXH+GNTS7A==","shasum":"8299891c54bf9108d73f4ebb873764124b81ab52","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.22.tgz","fileCount":142,"unpackedSize":342957,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmMggnkNQft6mg4QGZLDNiO8v3RYjbQCFKCEKH+E+4zwIgOE52NmFxsUaEtqAsXEiGVRXMRkJRA5ZoYR9kV913KCs="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.22_1518425159577_0.9274807112054084"},"_hasShrinkwrap":false},"0.14.23":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.23","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^3.15.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"cb3a048228b98df8c407fff97c128dfc77132c19","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.23","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-1XT1dV1rDRB50gbDHuO78ge8PHzh2bLkar1oTqOGhyf1wJv386CKVF5bAkzmKlgV+zohwA4/pzxa35aEOAKq/g==","shasum":"d52a04f2f057022d5d353d6674f609e984a5c569","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.23.tgz","fileCount":142,"unpackedSize":344439,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdkahisDbozCpdg4pV0mwq7BLQ3rvLDAJz2IuyjxXObQIgSFe1QLVFkz06QPGzww+jtYG+X9b4bK6WfvJzxSU+2c8="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.23_1519704802191_0.67476776405065"},"_hasShrinkwrap":false},"0.14.24":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.14.24","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"19e31e7487d057cb63a5b8fa178349d9e3ddbae0","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.14.24","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-tnyi/xvQo5TYLlZRMVCmyUQNJmCa7lfJJdT2c1Yt+rXG2I1i+kTc2Y3LZNqQbo6z7ahi413iTaalwO60lq4v7Q==","shasum":"ad532f94f10288e332ffeab7e9cbe40376b574d4","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.24.tgz","fileCount":142,"unpackedSize":344469,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhfzPjOYq81+QrhokJfBjjGu36tTvNqddDDckMzY+OyAiEA9yCuOH2IlPaO9DpRpoZ/xcduZxhsy4z7wvE5L3DxX8w="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.24_1520698854703_0.4947850659133446"},"_hasShrinkwrap":false},"0.14.25":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.25","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.25","dist":{"shasum":"b315a2ced411d0c48ad0b1f8b5340faee0882678","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.25.tgz","fileCount":168,"unpackedSize":345662,"integrity":"sha512-7vYmnP3KDAqVAhVMAi3SNVYRYiDSh2Fktm7Jdlyr9UzUX4MT3NzcMlm/pSFyqOXbrISoYqhUz5iD/rDgiXXVRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDD0R4F4FDStiCEpcpKCmiqMiLbric9UgIvganBawCH5AIgf9Fkhhm/d7Or1dowSHfxz0Nx46wYqwIru+kY03OEshQ="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.25_1520916267914_0.6424464143028576"},"_hasShrinkwrap":false},"0.14.26":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.26","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.26","dist":{"shasum":"bce7e4df66026e8e079e1bb6d29ed22852c0e9b0","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.26.tgz","fileCount":168,"unpackedSize":348619,"integrity":"sha512-7QgwptUNVkjEpEl9LFpYrKikgN7LvrMCsnsKB9xiBeOKI3p5jYGYwHAXmnGC3tnU0RUbKSaeykuTBF/gE6wPnA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICMuSONsZ13bOAskqKUmNMcCD7Sr4vqyXfnfbHMW8Qf1AiALidq8LLl1nttm10e8av1m7ThnI76o1YQDWu106qca4Q=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.26_1521270077478_0.45538499813669686"},"_hasShrinkwrap":false},"0.14.27":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.27","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.27","dist":{"shasum":"35319fb22b8d6bcc39ce302acf32da421693c520","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.27.tgz","fileCount":168,"unpackedSize":353326,"integrity":"sha512-y8tlmxBi5fQtnhU1wx7MM7y38NuM1ys7tk4r2flEKie/puwi1Fz26sKSb5y4uu7e8VAitvgfht78rLnVDmDcZg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDZrpNB44dVUbQBM44BB5+oOrQxY7uuHeykO/YDzTDV6AiA9atCTFK23PoMY+AK0ABqeUzxynlKHTlPN4p7raLHivg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.27_1521454665691_0.6193213923105769"},"_hasShrinkwrap":false},"0.14.28":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.28","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.28","dist":{"shasum":"d3ef7813448c102c3bffa5bbaea85ba46c3329bf","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.28.tgz","fileCount":168,"unpackedSize":356669,"integrity":"sha512-v0BFTziGULlpVvN82OfQxPj1vkB5wFp4Y2QoEisViZHg3U8VyYnxSJa59hNt65gak+qb9GEy9VUanYoe7lVkuQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAgihRp9Wjc+1QvBL7yWhV2hQnlNd83PTDAAc678t+vYAiEA7aZDW1fDmQE3oY/IPCt3utBturGkGEdO2S/UTCCGOa0="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.28_1521478568483_0.09796761645141139"},"_hasShrinkwrap":false},"0.14.29":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.29","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.29","dist":{"shasum":"18b08b3b8eab72fac38ada801daab224cf72466b","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.29.tgz","fileCount":168,"unpackedSize":360817,"integrity":"sha512-oyDPItw18T4ApsSO8IkzBVSf98K7cX91TsaXN8oK8KbxwbxbsPsKAjBufqzmxpy5pyclP22ia6+gXvKzigpbOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAeWXYcZ7nDH64EeaFHcc7bVULuWN7wF0AxeF1WvNdAVAiEAhDm4ern8Ogv0pKHHHiyoioBG9VAbohKyidpib82jb0Y="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.29_1521629417527_0.27846160703693057"},"_hasShrinkwrap":false},"0.14.30":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.30","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.30","dist":{"shasum":"7ee319711d97a51ccbbb79b1e2bc71f812c44ed6","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.30.tgz","fileCount":168,"unpackedSize":372753,"integrity":"sha512-FqMauZbDXIbh+k1hT6wexV8u53LT5965/yYprCByEECAWbu9+CYCFxoH108aRHuAyTyBYb1Kyr2EYe8XqNNP8g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD23dEnogJEk0adHj1DG6SlRqBwgfYjRzl7h9VEO/wYUgIgIAG4R+VjPAFt/1rQC2qvDFYwgl0AFw61ifcWcpTa0hE="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.30_1521705469860_0.12212763421678807"},"_hasShrinkwrap":false},"0.14.31":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.31","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.31","dist":{"shasum":"97add9cc6eea5c1ad972a6ff446f1d905e90335f","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.31.tgz","fileCount":168,"unpackedSize":373395,"integrity":"sha512-MSdx1VYLj7L/KFyvZADr9/GEQYLIZJ1/OVFAU1fSQYDi95KhPwvcArUdLfQR3izvhUigy+yxITMxmHd6cBQwxg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH27jm2szBbnW6eqN+3NXdcBRE2uQUKySYI2uMEOf9xZAiAvcY+nZqQybvafRsebFOqF1/1vHi/KUoYSvShwLvGv+A=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.31_1522049139059_0.38633206943549925"},"_hasShrinkwrap":false},"0.15.0-alpha.1":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-alpha.1","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-beta.1","messaging-api-messenger":"^0.7.0-beta.1","messaging-api-slack":"^0.7.0-beta.1","messaging-api-telegram":"^0.7.0-beta.1","messaging-api-viber":"^0.7.0-beta.1","micro":"^9.1.4","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.4.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.14.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.19.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.11.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/3382565/33872101-6cbd07d8-df50-11e7-9c80-d1415448122a.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-alpha.1","dist":{"shasum":"1e3f676b373f881906ca9cf0aa145eba424e3991","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-alpha.1.tgz","fileCount":168,"unpackedSize":373217,"integrity":"sha512-g5z2cO1R8eiWGNnOrDbucCl7nLy2Vy7RA4QoQQBFJ/g3gwmk8IQFRuSrX7y/aE7zSW7QDcpTdRHqY+I08D/ynw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDFAYval4rOoSX8dDVPbno6rrU63Sr9hEq7D2rPL0i68AiAVT6pA8HKMgkygb5qlfOJXS/C1WbvSzzxARwDwWCvT6g=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-alpha.1_1522138609850_0.5641590806985404"},"_hasShrinkwrap":false},"0.15.0-alpha.2":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-alpha.2","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-beta.3","messaging-api-messenger":"^0.7.0-beta.3","messaging-api-slack":"^0.7.0-beta.3","messaging-api-telegram":"^0.7.0-beta.3","messaging-api-viber":"^0.7.0-beta.3","messenger-batch":"^0.2.1","micro":"^9.1.4","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.4.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.14.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.19.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.11.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/3382565/33872101-6cbd07d8-df50-11e7-9c80-d1415448122a.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-alpha.2","dist":{"shasum":"4001fabba80728b6552724f714a32ed65f2ad97b","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-alpha.2.tgz","fileCount":168,"unpackedSize":373969,"integrity":"sha512-m+XwxrZe+ksebHV6S2HwnOoeAFlOGvVYR/KTqKqybDUbegTUnPB/3FeBwxcZ+blof2HB4zKdGp/h/Ift7PwBRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/ihbwjCf8inu0rKQOrw+wjglUkyxCV8EVLP94hHciNgIgPrUciRlq6txFNy3As4b5xNBXBcjlZfpd+/BVWcUeGW8="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-alpha.2_1522655302613_0.5214001728691255"},"_hasShrinkwrap":false},"0.15.0-beta.1":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.1","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-beta.4","messaging-api-messenger":"^0.7.0-beta.4","messaging-api-slack":"^0.7.0-beta.4","messaging-api-telegram":"^0.7.0-beta.4","messaging-api-viber":"^0.7.0-beta.4","messenger-batch":"^0.2.1","micro":"^9.1.4","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.4.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.14.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.19.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.11.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/3382565/33872101-6cbd07d8-df50-11e7-9c80-d1415448122a.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.1","dist":{"shasum":"452fa6a746a30a096b827e919774c4226ae8ac36","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.1.tgz","fileCount":168,"unpackedSize":374385,"integrity":"sha512-24jKcGPU8sl5yhx48vhfHefWI3jIi12p4h1eHE+wgOkW5RQ8jNvD05w0DAvFBpobPyaOvRbcJS5ZU+2M2GTjUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmYzFvfkcbxUZdA+YOuxIF5AVYOQc4OeCpiVGIYC7rfAIhAIaEvjQ5qm5SHpbW6Nv/DHIST5kExh7xQvdBd+B/K40l"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.1_1522743178025_0.36415712995896476"},"_hasShrinkwrap":false},"0.15.0-beta.2":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.2","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-beta.5","messaging-api-messenger":"^0.7.0-beta.5","messaging-api-slack":"^0.7.0-beta.5","messaging-api-telegram":"^0.7.0-beta.5","messaging-api-viber":"^0.7.0-beta.5","messenger-batch":"^0.2.1","micro":"^9.1.4","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.4.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.14.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.19.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.10.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.4.1","lint-staged":"^7.0.2","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.11.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/3382565/33872101-6cbd07d8-df50-11e7-9c80-d1415448122a.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.2","dist":{"shasum":"647513da7effd9f575ab32317f269e474c9beb37","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.2.tgz","fileCount":168,"unpackedSize":374386,"integrity":"sha512-kAuWfdNWBcFaAQDCJLetPVadRJ9Rp8n/WpBJm9O5UW7cBORhTtnksBg85Le71R1lKNYNq5XRGRgGVUrIafCa9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBJnd5v55pHPZk7EqKQj2e4wietv4jnbHzy1OrBPG3ZQIhAKNR9OzIhxpUPwzI2tgM4D7ZcJzKe7JVwhleqo0tHDTv"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.2_1522749219111_0.7418421522839336"},"_hasShrinkwrap":false},"0.15.0-beta.3":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.3","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-rc.1","messaging-api-messenger":"^0.7.0-rc.1","messaging-api-slack":"^0.7.0-rc.1","messaging-api-telegram":"^0.7.0-rc.1","messaging-api-viber":"^0.7.0-rc.1","messenger-batch":"^0.2.1","micro":"^9.1.4","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.4.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.14.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.10.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.4.1","lint-staged":"^7.0.2","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.11.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/3382565/33872101-6cbd07d8-df50-11e7-9c80-d1415448122a.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.3","dist":{"shasum":"11c58b7a9f4e2e2255a1921e5dfa932c0c96b747","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.3.tgz","fileCount":168,"unpackedSize":375051,"integrity":"sha512-a4qobEPohpos1IXTd684LdmyE3EudjP9UDLwn9IhjD3WqszxMkcLpfyLtLUSc6lmd9tZhikMwtgGQdJFGGVTOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFGpPzKxk5WN91WP6mCfT4jh6h7/p9Ct1A9gBrT4v7GAAiBf0F1/+fOt+tIeuBbQBvg6S7y+LTTr8vxbwl1/ZUI8zw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.3_1523278005576_0.8104878048425279"},"_hasShrinkwrap":false},"0.14.32":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.32","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.32","dist":{"shasum":"2b8f0d19a08aea265c237ac2f79767c564518e9a","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.32.tgz","fileCount":168,"unpackedSize":373785,"integrity":"sha512-PeYtTGSCu3l9VyY0jgSouz63Mq6X7vKwTWKawgD6S3yQQGDcAqxCWQKemgJBGRldKAScru2F7i2bitwMkHLaPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHKApZ9RQ8eYrcb9f4lOgawilMtVgSRsXRSpBo+twMQTAiB8msDhEdiRU2O7DNlF9wTfflXm8bTzYxKEBlF0jHBzKw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"tw0517tw","email":"tw0517tw@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.32_1523523439925_0.8454585451167576"},"_hasShrinkwrap":false},"0.15.0-beta.4":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.4","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-rc.1","messaging-api-messenger":"^0.7.0-rc.1","messaging-api-slack":"^0.7.0-rc.1","messaging-api-telegram":"^0.7.0-rc.1","messaging-api-viber":"^0.7.0-rc.1","messenger-batch":"^0.2.1","micro":"^9.1.4","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.4.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.14.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.10.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.4.1","lint-staged":"^7.0.2","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.11.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/3382565/33872101-6cbd07d8-df50-11e7-9c80-d1415448122a.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.4","dist":{"shasum":"24216456723426dcf569c21cba99e44e433d546f","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.4.tgz","fileCount":168,"unpackedSize":375441,"integrity":"sha512-CF0On/Xb5eS7j+F1XArMoVTKa2Q0W8JaVb5XGRUACdXn8xBjUfQjaTgxKzysdanf6MaHYLcrKCEczYGpIgB7eA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMi3XF5jXZ2DC21TkB0SCrEGt2HJyoNux7wcArkpYu4gIgBLbQ/dxtNtarEaYsKYG+DqmPM4XhCMipnDgGzQLJepQ="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"tw0517tw","email":"tw0517tw@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.4_1523524878362_0.8673957144658522"},"_hasShrinkwrap":false},"0.15.0-beta.5":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.5","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-rc.1","messaging-api-messenger":"^0.7.0-rc.1","messaging-api-slack":"^0.7.0-rc.1","messaging-api-telegram":"^0.7.0-rc.1","messaging-api-viber":"^0.7.0-rc.1","messenger-batch":"^0.2.1","micro":"^9.1.4","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.4.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.14.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.10.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.4.1","lint-staged":"^7.0.2","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.11.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/3382565/33872101-6cbd07d8-df50-11e7-9c80-d1415448122a.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.5","dist":{"shasum":"b32aaf3cb16598a315e155526e56169fb7006e55","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.5.tgz","fileCount":168,"unpackedSize":376242,"integrity":"sha512-cKSVDhBBqvTk1n6LtjeOqX66VydA+ranXAuM5vuf8OGKCiDhWXhHwgXEaMUh/QIYGXlCWxJ9IG68clBronHmEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxHkSuTKJV0VFz5nheKWXSQwcOXWEixrT3mpPJtSG1aAIhAIrg2cfDkEQjum/pG2W78a+I63t3bNbq1XW4ctAFNZOA"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.5_1523617311653_0.11950451471744694"},"_hasShrinkwrap":false},"0.14.33":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.33","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.0.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.33","dist":{"shasum":"196944b9d4fbc3578f4ef118386c238c4ee89716","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.33.tgz","fileCount":168,"unpackedSize":374730,"integrity":"sha512-tlnDI0er77rfyDjfKdbbP26akhBMMfy65k3d+HOxo/GF1L1DD1GMFy2QOl3Rh3vfNDwvAum9Oa4xVtn4Jgt1hw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID8DtirBkXU5Ge0Gj0jjFemymYcz76Um7O3v3yIF3cgYAiEA4f7E6mBCCYguZVE6tHzGg7Am7hAQ8HCvrkDt1NMyveU="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.33_1523619490599_0.43579644363387104"},"_hasShrinkwrap":false},"0.15.0-beta.6":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.6","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-rc.2","messaging-api-messenger":"^0.7.0-rc.2","messaging-api-slack":"^0.7.0-rc.2","messaging-api-telegram":"^0.7.0-rc.2","messaging-api-viber":"^0.7.0-rc.2","messenger-batch":"^0.2.1","micro":"^9.1.4","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.4.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.14.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.10.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.4.1","lint-staged":"^7.0.2","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.11.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg?style=flat-square)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/3382565/33872101-6cbd07d8-df50-11e7-9c80-d1415448122a.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.6","dist":{"shasum":"b9dc357e5bbd1f0cab1d0b13dc85275a84dd8654","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.6.tgz","fileCount":168,"unpackedSize":379013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1afVCRA9TVsSAnZWagAAktoP/1SGFnctbWeGKdAuepB2\njgDhglBupUuWuig9wu9OkX/quOjvrGZsrtdyDTp26JNna/IWMbp8RNfHgynR\nictL4Ii/K14XB6hv/0Y4weSXSBi6odsmj89ZNNcTq/Zrn17U7ONO9Qpxx0F5\nkFjsO2ILb8BMc5dnRVuRi1TFe/DWMANCVPSJOBjYRYxVDVS1im62Y0fjhBoe\n62edWs1vDVrSERb8ENea2GwKNB5zomlUixB5rcinqy+9B36oKS18j81ISvQm\nMZiC/I5oxD8Efq+AlA8U58EWG5jSoY7DVWJ/+vsbKL9AMoN48fgRuhPkCNs1\nrmw5v4lLCMgAvYRw1MNXfi0sPufvzXB+qUjPt0X7e8AI2Be72cQ95u8zin8E\nQziPfDvkiMmZbvTx+gOXL8fjB4+++ioNPeCEn4PEz1NSHlSES4KSZfsZPYQo\nFa0rwbBq9ur4Z+LlydJP/zLtz4ao9FSN9xLUVB0Cy2cwP3MrwDfMfw4FWv2r\nVzdajtq6VkKWFM1xbQpdSdV/8nlKjmwlG5Bgc0wwi4gagqnH+XFQ5bGcok3S\nvfFO1Lh6PjnkIF8jYmq5T61/+UY6/UMsPG3Yin3pDoCadu6Xog+SPioXcHbd\noLPfJlNqFRH8tHxwWeLI73sWAPJeFuJAvYZFvvzja1yl0bOW6ajHcqTvIe4k\nvYie\r\n=dA74\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-mnfS/J9j9BmtuAfSUrPTTL3yShEaTDNcq2j91XDqxyIXZVURPb4jcaqeplVx7yShBD0esOeyuM/xdtuqAn4cdg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+C419Nj7mahMwgxrbzFNTszfROuQU68MIA0TqgOnRuwIgTIWhNtG/3FBYYpr3BFSQdWYzSxVB5Tk5rB6l24/yW2I="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.6_1523951572751_0.84714525117221"},"_hasShrinkwrap":false},"0.14.34":{"name":"bottender","description":"Make Bots in Your Way, Fast and Flexibly","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.14.34","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"^2.3.0","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.3","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.0.4","delay":"^2.0.0","express":"^4.16.2","figures":"^2.0.0","file-type":"^7.5.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.0.1","invariant":"^2.2.2","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.4.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.3.0","lodash":"^4.17.4","lru-cache":"^4.1.1","messaging-api-line":"^0.6.13","messaging-api-messenger":"^0.6.15","messaging-api-slack":"^0.6.13","messaging-api-telegram":"^0.6.13","messaging-api-viber":"^0.6.13","micro":"^9.1.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.1.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.1","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.1","thenify":"^3.3.0","update-notifier":"^2.3.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.11.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.1","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","eslint":"^4.16.0","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.41.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.5.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.1.4","jest-junit":"^3.4.1","lint-staged":"^7.0.0","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.10.2","prettier-package-json":"^1.4.0","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.14.34","dist":{"shasum":"e901245da082ce4049fcaa8d41027e363479add4","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.14.34.tgz","fileCount":168,"unpackedSize":374819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3Yx1CRA9TVsSAnZWagAAiJYP/2LmrovkUDjrD3H3CMFB\nl00+jzi9PFkmlSzc/9LqYiUKWKcyl4/EBCm2W5kzU8633duFGEZi10bGOXNF\n6X+NpFndXD6/hFyw8rgfhrW7MCQF9XSteCdAYZYJ/5ahLqA3C0Y2jQm2d8Al\nfhj5OyV8h3FwOakLi6uMpB5ZBseLQZYQl7kpG/P+sa9oaee9PMAs4u7Xlhri\ntzZGRh8w1MDW8v/pgKRB/Ib23NH0eOS/1LKUVxMlMPP+cFQKUsfendaO3Dtv\nhZNmOx7EQkYl6b1SkCIl6pGzTR1cwjrulkWbGuKYYztIg3vB6ybLsK0E1U8f\nnTU4DETCG64ERDusm4dBwoatKA8wbAlE7r1CI7tfp87xYS4OH60qW4emzz/3\n44h7vCnt189gaA4KlJbUr3YgTKxrL6QkpAmdmWqllXzxCWZds0/etSkbg/s4\ni9H1vFMhmQzk/PWRa453tqC9rWtd4g1eCzg8kP7Y/atQrd3ruf18b76I9w9G\nqevqsH6fZVZMbG29rxNESS6Z/gL08mgrGB82wvIcuHGxAXlPJC6PjFgA9Hyp\n2fr2grzR1uj6n31coJiRi6GVuehFHYJWQKmWXs4tj4w/+X7eCZEyjFpLe7e8\n//weGMKwCb9Tq7w1cuaXQlx+PpaXcXjZOgmUpoMIedgwlaja1zW+49d5LhFg\njTy+\r\n=qp93\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-BKu2dHeyTmNVwEPSwUiwgbjCdwgSpJQr2x7CcCoHe+5yNeQAAzhRzO7F2M3FwF1euUwwg5bTroKIje5G1gsNRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF9uZiuqGIzUsnsa2Syui7LGHJ7OgfbrpMvMjyNJx97AIgWw53xDDo5NmdjGL0S77EcGk/8xkRTU7qbfuEeQoGxsk="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"tw0517tw","email":"tw0517tw@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.14.34_1524468851558_0.36879487022831525"},"_hasShrinkwrap":false},"0.15.0-beta.7":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.7","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"~2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.6.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.0","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.4.0","lodash":"^4.17.5","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0-rc.3","messaging-api-messenger":"^0.7.0-rc.3","messaging-api-slack":"^0.7.0-rc.3","messaging-api-telegram":"^0.7.0-rc.3","messaging-api-viber":"^0.7.0-rc.3","messenger-batch":"^0.2.1","micro":"^9.3.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.46.3","eslint-plugin-import":"^2.11.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.6.0","lint-staged":"^7.0.4","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.12.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.7","dist":{"shasum":"6723cbfa84758a45f4192e2104eb26c2b49d5dba","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.7.tgz","fileCount":168,"unpackedSize":379423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4JlgCRA9TVsSAnZWagAAFpYQAJ0VVg5MYxZSurGQj5WF\njScql7F8VNKo9EUo8NOOadNuWfc7tTH126JSoHDS2/Mh8RNxRngEmwEQEocZ\nLDsVJWKBM+2zENQcTtHi8vmInjKkU5Ht2lQf2gbB6q7olW0STm0DCmecMPIw\ntQTiimNJltBS78zlEzdW3nNROO5Gc83avALw3eepIG/OFORsEcn7759LL//O\nJRD73hVSOXBHk5/pEl/qhKS6XJP02AxJQwexKqxcSWImMJ9Buj94aHLv/oZb\nlXAa74LVF/wJZXJ1JdSuQekb6dDy3tRn1R/+zNl8JssdhMf+S45/s2qmi0yD\n3p4lMex4jNKGhD9gMPbar9EuKGQKwRapiL0NgXDfk6p6XIugN2E4bKKtfffQ\nSZPsXklKSCTRZPNbr0VWivbSNC4S1n3N00VfpIOyLqdtTmFy69GpAzBExGH6\nflB2reBSJ5qM1c4lN6aiHgx92lVnza1pOXVElcGRR56QJllgz4S6wJu+orgr\na6MuaLPdqXbP/7EdkJJqr59h9GbNLrOGozCXKjIHAj1QDDo4hr2WStDyo7oe\nb4VHn2FSLst0OgGX3X8brI6RazhO/LRwdnjTxDxljxWeOLBL/zAJoxGijVpE\n5knQHGczS/UVdvxJ3pKcS1uNilyzfrzwEsqh1KcTdHFo2/AeCeFYlCEJKlUF\nh8mQ\r\n=45dC\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-xW0D6gX4IK3a00qhkpBFLdsF6/s4VUcuWIyQsHR/65oFNWyGxVnA/ZIZ9sUklChJ5WLVVqygdJx4ikUQOiLAQQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtAP57xJJi+KN343rF12iMuWGQCNgiNaHSTP5dQWxAjgIhAMisoOPw2VD8ERoNRmFf+oV4GYNswxsmeFxLnP5aiqFa"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.7_1524668766749_0.3785675716243555"},"_hasShrinkwrap":false},"0.15.0-beta.8":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.8","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.2.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"~2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.6.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0","messaging-api-messenger":"^0.7.0","messaging-api-slack":"^0.7.0","messaging-api-telegram":"^0.7.0","messaging-api-viber":"^0.7.0","messenger-batch":"^0.3.0","micro":"^9.3.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.46.3","eslint-plugin-import":"^2.11.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.7.0","lint-staged":"^7.0.5","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.12.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.8","dist":{"shasum":"abd4dec6e55813e0bf51fd687ecfe2596d6f8364","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.8.tgz","fileCount":168,"unpackedSize":379399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa5I9pCRA9TVsSAnZWagAAC58P/iKDqzIRwcH5Gesv2+kM\np/Ti9hxpNWeCX4tY+BidMScz2i35ljJ8HHZip11Tt85h/DiSpXneyCDcRX87\n0MVeQH3lY9cIeGgHzbcRIepKNST7LskUztPvPM0Wb74J6Gb+WGdJ9ep+RPMD\nDz0qsCjQDKDDlzBCX+JE9Ab6pDWXdCJlMPV9UNUeTVdfetj0cwhi+h9YRaOY\nmh2ekcZHZNdbKCywAi30ZeoQ/1EJRDR0fRMjIIRE1jLHyj3OwDlueG5nincG\nQcPXpAM0K4gxNOYJEh8xmr3mP3OM2ry9s+rrh5dszIj+xq/anWCrt6twuceF\nNNVC00nyh0oerlJzLk7+CHs35QBVrY1nUN3T2NSCJn0Xm61yDDBfN0CZmw58\nPwzmUBjFGLzooaAm+TUhMZLXUqnScpB2L4JB6AOYZMZV3HCJvcKRIsgp/+lg\n+NKmmI1yTv2AGTMemAyBBRa1DktDsxAl1Bp60MmKxDBzowQau3P5mwrTssBL\ncrewqsSma0tWbmohpd+vQIzP+KrY5ZiOXKGWrPslhxBi8JCcA97WQpSFLRQK\nPVuxvBozBzWf27/yZiVeE/lvUCmbJXRwHb+pvmd59xAIuT5u0Eh1uYSOl7pR\notMH3zSPdFe9LaJNsGcq2Lnt2sri9GCiMVWFwtFIKvwqZJc4tCNTD71DnNc3\n22dh\r\n=MVlV\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-f+RVIEdW5K1K5R9k4l24UexEuI03IdSU9ZvaMxW5Pk0Nx1rat1eUlz711QwpxFPELrdggFET9fNVf9V8VVp6vw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjRg4nJnI1xmfI7cVW3IxLa1xISnpnEwklrNfW07pMkgIhAK7aAENWyP77iwNBUhiJHyShg70zzVfAWSAWVaSw97U7"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.8_1524928359763_0.4018357513095525"},"_hasShrinkwrap":false},"0.15.0-beta.9":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.9","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.2.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"~2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.6.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0","messaging-api-messenger":"^0.7.0","messaging-api-slack":"^0.7.0","messaging-api-telegram":"^0.7.0","messaging-api-viber":"^0.7.0","messenger-batch":"^0.3.0","micro":"^9.3.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.46.3","eslint-plugin-import":"^2.11.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.7.0","lint-staged":"^7.0.5","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.12.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.9","dist":{"shasum":"45599069fb2ae01c5ba777ad60d3c654b0684c75","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.9.tgz","fileCount":168,"unpackedSize":379707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa86hOCRA9TVsSAnZWagAAxR4P+gMPcNNr+xM8ocJjEsEo\ncRhlYxgiVPOuPody9GX+ovpFWEcfHL+/9ZCMIwr7tcF7TNc8n1m84KKjw1c+\naPJ+rAXxx03vxPIpnJRvCSGJZszWOZ9rGLj5s1WoR0vO7bUcPWf9hoS4km/1\nCM6TVwhXQ/u/WRUHlA9yPmqnydasUDyDZyfJppboZTuXjQWFr7ZfWD6n+Bye\nnB95EeDKaW0IN22g1/vCtSZ9KEwF8I8HJFcNrHkwhOFcfpjp4QDiUzI96SfO\n5B/ejIsKiFW2oMAGwSit2jjHWRAXghxBWfXHN2fqvExxB79WckKLZMRfkY/1\nGnh/4Ho4B+pzKuJ726CZnnh2trzlxpd/a+9yjD3lakN2Drr1calap0zLoVOK\n6FBwc0qRSyQIbNnJp4m7Jpg6Kt0HkIhnrjfcpH2f6ok8aLtqESX9MsmD1bjJ\n1B7K6Pz0m+vB4/nLWpEesfGhFneNrejSPSAdnjREEoXrckfPvt4sdr3WsxVB\nHq8gQEpa/n9ZlSZ7lrmlGF0zLJnEeUhcm4AyfmQkqSsA63Bg1J/qJOwYkw9g\nnR8ZhutSJDE1DwXaorMF8DNCHhbXFLDuHlhl8QJrsCUdlqcB15t5WEODT0mN\nW2GrbmvE0VQZiVXdSw4llXC5tE8GuCeRVD6ZLVCKJqMMmQcvMnMPYWXf+my0\nYXXs\r\n=kMDW\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-NyrYFSigmtOdYC6n0nqY+zHFOnJeRod8G3zk/fvqndxTzRqz6h+Y6zxDojfzp/KqONd+SdJ3MTxbsIaKwJNmBg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHxIYMuOUytg1MWFIgh051cVNWeAoVQ1Zo07qzT4jJvQAiEA87byyrhWqc7tRAa9wq4LsUOokgk/oZiGYrKKltg10YA="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.9_1525917773057_0.9095380748265187"},"_hasShrinkwrap":false},"0.15.0-beta.10":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.10","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint:fix && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.2.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"~2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.6.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0","messaging-api-messenger":"^0.7.1","messaging-api-slack":"^0.7.0","messaging-api-telegram":"^0.7.0","messaging-api-viber":"^0.7.0","messenger-batch":"^0.3.0","micro":"^9.3.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.46.3","eslint-plugin-import":"^2.11.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.7.0","lint-staged":"^7.0.5","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.12.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.10","dist":{"shasum":"8c6dfe8d2535c0d731e5897a21acf4a4ccbac981","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.10.tgz","fileCount":168,"unpackedSize":381464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/EuGCRA9TVsSAnZWagAA9AkP/iTM/w3K+kXZZsUYGZ58\nS5M9TCGOIoCQNw3nCjJfB3SEjB8S5NrADgrzM5UlEqYjjPqfbax/dKj18Vxn\np7iai+dQD3fqVOJTFwH6eXW/Us/62fHBa+uHhy+sBnF8GAvipK/4m+WgYHHX\nHjq6Mj3bDNzu0HBW+y+wjVjfxEo3o+/GXHtI69yWuxhq/ctbXho0iZZyK3r1\nXqz0RSWM/Pgi8PvHJViht4bUdUel3otYXOkPeuimHiyGF9OdxEKJA7Q8G2Xz\nMSoNtHjrN1idqo3GyPgWw+pm884vBgkqsx2rSFNyMupyFw/Le3yqNKvLKzMw\nANYTo8/GS5JYcADI0s8/4gcQjj3cT+yYuoZmcp2RJiW3+WaI3C1R/MJR9itl\novCqHrEqVvpj3WdJzD1+gzOoWTgFEIWVEcfeBt38DI3gS3RF3sYdp6oYYe3i\nLSbw/+cNpt3UFJyek8jgh0O+Exli03AEpPpgHnhhewnH02Yqp+vBC2QNYgBV\n+7EsupLOSzCKEYvEdnOSbXAPmOou8P4FXLuZ01TsdU8i1cwOrLkQ9Y1qZYgU\nXzOu17s3914h4YeG3MIgK/1aAAekppePb5A1dfMI5r00L6P9kujrojMLzK7+\nnex8G+a6CmKfHiXv6HrSXEn9O+h/4+SXSraOMnPfdoBDfIja+B/yJrJjwo0p\nmDNU\r\n=r5Il\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-Xth9l+X69IcMkZ8b/A6FOHalQfcwTIxVwAoL6b6SM9NswRKrnOPTdXlJb9j+xQBb7egx2TIaYcsWyDzSj/DsTQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZaRRgEByYY5Q2ZBRD0AjRwddgH9QJLMhplNl2gfFyiAiEAikupfJL6rejnTyWtmC0SuodaurXUSSacDRjYXTxh8vc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.10_1526483845944_0.11117972675013088"},"_hasShrinkwrap":false},"0.15.0-beta.11":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.11","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.2.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"~2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.6.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.2","messaging-api-line":"^0.7.0","messaging-api-messenger":"^0.7.1","messaging-api-slack":"^0.7.0","messaging-api-telegram":"^0.7.0","messaging-api-viber":"^0.7.0","messenger-batch":"^0.3.0","micro":"^9.3.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.46.3","eslint-plugin-import":"^2.11.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.7.0","lint-staged":"^7.0.5","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.12.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.11","dist":{"shasum":"ec4f91c359905b770c682e1aca42f9985335a4df","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.11.tgz","fileCount":168,"unpackedSize":381859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEQnZCRA9TVsSAnZWagAAuNEP/RDuTJQRJ2zLxc9MTro1\nB7GvsZOLJ2aeO2d5L4aazPw6Qs5prS90+sZjALXz74Qd+N2K9Sa+Zx5I20SF\nM/wamtdXijUUel5UOV5DN2YMqoI/u9MRmfz94pSxbOwzP4WsfkjIH1Q0vwl+\nMj2/dXYp6mX9zu4jKFLUJJR6+ByMnJho0JWGoau5uOO+LuDeQbW8QcMdOLYQ\nTF4ve1r3yM/Sb7qJApfHXgwT8Mm0j/g6nbOW04svknbeGdyD+DPB2c3hP10l\nCOppGNGIAlVO2I/wJwxtNdOLCERQMUNmVPCZEs/q482ssYJ0GFBC7VAPawa9\nJlJqwiaQqSKm4+0c7iXyEfjv+ddz8Q5EgnNfpLykQ1zNo6iBY9RzzQAmtMt+\njMj/inpTfFy4GpjIDcEssiddglqIx5GMih+i00ab/myGf6qd8zoaNu/8gilh\nxzLr0R7APtp9K4cYpCcUXZkfVuai40OFfZ4gDpcefezXgx49R5N0shiGJL4V\ntmQRc88kWgsDgoKin9Ds7HCqohsveFawdvhOOQvyHw/hNfh9YDgC0vJpLemH\nvCEd7DqWJD7oQw4c0nZ3VOQg6iKHUAWJwb90/zuCymoTvkvn8kI8sDXtrlv7\ncIMASIlfgmjbKhusdRTpxAOozYzDPtZEHk8ZGFG28IwTEZai3EYx18vb6TXf\nRQW5\r\n=Rg0W\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-dcF7htI4ajb6AC47Hpbxw6H/59k3CPY8sd6s/BOq/RGH7F2ERaiizfGU/SpBdm5fcY6lgM9DZt0xHoOze6WSog==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFgt/vPAESqeZX5crcylBAVNOPgNWyPd4aPKtj5iS5vKAiB1I6LA0kXADnkCybmed4XM/8XesMEoKSzXJtOGE+K4Rw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.11_1527843288693_0.6400696485223283"},"_hasShrinkwrap":false},"0.15.0-beta.12":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.12","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.2.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"~2.3.2","child_process":"^1.0.2","cli-table2":"^0.2.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.6.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.2","messaging-api-line":"^0.7.2","messaging-api-messenger":"^0.7.2","messaging-api-slack":"^0.7.2","messaging-api-telegram":"^0.7.2","messaging-api-viber":"^0.7.2","messenger-batch":"^0.3.0","micro":"^9.3.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.46.3","eslint-plugin-import":"^2.11.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.7.0","lint-staged":"^7.0.5","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.12.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.12","dist":{"shasum":"f6bbb35e4a06f1d5566ab11ecd19b7fd232af3ae","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.12.tgz","fileCount":168,"unpackedSize":381916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGhzPCRA9TVsSAnZWagAA0NYP/iCNqgaPvwMZ8668VWFN\nYTvRhiDX7GYpX91H+i/FC3yLaMqeHAZf1i5rFWKYkzt4Vh4Ub/67YVIYhkCi\n/APM0aBrXrJMtGTUOHdfZdM/zf0mNK43GAR+uCD3MXW3A4dr+euDWEQ4Tzyd\nq58piifncLv/x/V7OLSEhSTcV5L+VxxWTL8ZdAkhKxxpHkrC6JEbjInBUmM7\njEZYNb8YdRlDJCHEIxYXZ9fCHrgd2O/Wrwh1JeRl7Lv6uXOw67HlPrblsU1S\nA/mEzI9k67cV+XLLtwBwxV83upbctQ5dZpQ2GT1Zuan0W3zhOsUkWk9Eu57q\nkc6jWqUeNqkURpI5oJXArKr0pJ/ZisWswfcEOaI3S1QhDm1/bzWbuT/y6oQa\nWcgAapkA4TD3MNsVFEXUbL93mJ2uSE20dCZ87dx3z7pjY/kug7FxJifZonor\nS5xUQQfXyVKfqqi8f09/UuzRk73DxERrcrA9i1m8tRQC2Os+vCnPFmLcVghf\nPhg7yST6eZCAWs1mGbLpUaBLie5hN3D4yO2jiML0KYVfpSAYkAgYclhDBI2A\ny+vfqMQMetiRb/r5lBYBYMMUe/xeFcPXvvSWeu7MNTVBHDBdZ/PJ7R25deFc\nNpcSsxsUAbI3nNEnWIzMKwZiKJipFhlmfXMrEiqac3TixFD7Ofells2Vsthp\nEqcb\r\n=QxqE\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-EpAC7QFE1yXnEaWj3uFt4BKAQk+5jTxqAWrCptAr02Sn2FoeKItRfzxjx8YgW+fK9A4OfSbyhLzJQm1oiNdyww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClXfbXVOi9zcgquThzxrA+vntmdPsejxrkg5Kw1D9VpwIhAKdNFDj7/RJWLsQdosyrpxHmabkK4I4AzQCQ7Gu1YIq/"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.12_1528437966783_0.7123648919448828"},"_hasShrinkwrap":false},"0.15.0-beta.13":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-beta.13","main":"lib/index.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest","testonly:cov":"jest --coverage --runInBand --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.2.0","axios":"^0.18.0","body-parser":"^1.18.2","camel-case":"^3.0.0","chalk":"~2.3.2","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^2.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^7.6.0","fs-extra":"^5.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^5.2.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.0","koa-compose":"^4.0.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.2","messaging-api-line":"^0.7.2","messaging-api-messenger":"^0.7.2","messaging-api-slack":"^0.7.2","messaging-api-telegram":"^0.7.2","messaging-api-viber":"^0.7.2","messenger-batch":"^0.3.0","micro":"^9.3.0","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^2.0.0","prompt-confirm":"^1.2.0","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^6.3.4","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.2","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-flow":"^6.23.0","cross-env":"^5.1.4","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.46.3","eslint-plugin-import":"^2.11.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.64.0","husky":"^0.14.3","jest":"^22.4.3","jest-create-mock-instance":"^1.0.3","jest-junit":"^3.7.0","lint-staged":"^7.0.5","ngrok":"^2.2.25","once":"^1.4.0","prettier":"^1.12.1","prettier-package-json":"^1.5.1","rimraf":"^2.6.2","supertest":"^3.0.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"browser":"lib/browser.js","jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/"],"testResultsProcessor":"./node_modules/jest-junit","transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-beta.13","dist":{"shasum":"de50553813243004c5434e0ee6aac649e8978a76","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-beta.13.tgz","fileCount":168,"unpackedSize":383963,"integrity":"sha512-CAsLDWxIe8EnNod3yzK8r5DvXoioJtMi9h+4k4b2q06FI06jsHqsznDyY2+U3cOGQc+oTxgHmtaECtIPUaOtjg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC36qCpl0cTmBd9oulyISFJ99p5rwir2k5GZz01uzDkEAIhAOG15uwDaAJdp9G/wrkeEieH9OJG+galhGpZGrPqXLqc"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-beta.13_1529378527761_0.3596920844508651"},"_hasShrinkwrap":false},"0.15.0-rc.1":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-rc.1","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.0.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.3","messaging-api-messenger":"^0.7.3","messaging-api-slack":"^0.7.2","messaging-api-telegram":"^0.7.3","messaging-api-viber":"^0.7.3","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.4","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-flow":"^6.23.0","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.49.3","eslint-plugin-import":"^2.12.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.74.0","husky":"^0.14.3","jest":"^23.1.0","jest-create-mock-instance":"^1.0.3","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.5","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","lib/cli/providers/sh/test.js","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-rc.1","dist":{"shasum":"b24a801beadb6d9d0cbfce08f2d6616848440ba2","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-rc.1.tgz","fileCount":174,"unpackedSize":396140,"integrity":"sha512-5QFJ352QSCtydJPfOtTcvXDzMPSkdDQj7chsKxKl9U1sSTO1lPA6ePqqcwGWAItiRJTpAGxRXi4efbjLxD8H+Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTbLTp8tisvAhizI2Ry7bVS+rz+Xxw85jtyFoFIQDwnQIhAN7NGWzTvnypmNk8MrGotN5/IaIZTX+Eey7zHBsWHx3K"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-rc.1_1529650194163_0.6225917527883742"},"_hasShrinkwrap":false},"0.15.0-rc.2":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-rc.2","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --ignore __tests__ --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.0.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.3","messaging-api-messenger":"^0.7.3","messaging-api-slack":"^0.7.2","messaging-api-telegram":"^0.7.3","messaging-api-viber":"^0.7.3","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.15.0","babel-cli":"^6.26.0","babel-eslint":"^8.2.3","babel-plugin-lodash":"^3.3.4","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-flow":"^6.23.0","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.15.1","eslint-plugin-flowtype":"^2.49.3","eslint-plugin-import":"^2.12.0","eslint-plugin-prettier":"^2.6.0","flow-bin":"^0.74.0","husky":"^0.14.3","jest":"^23.1.0","jest-create-mock-instance":"^1.0.3","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.5","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","lib/cli/providers/sh/test.js","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-rc.2","dist":{"shasum":"10c9b07362a891d5dcf8858b7bcec2df65abe4c1","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-rc.2.tgz","fileCount":174,"unpackedSize":396339,"integrity":"sha512-bMpOoQvO9yVQktWdcQOrvij8eI7G3csKmn9rL5j3kh9dmwkiDVY5SyTBGzXFXJmTeq4+MaiJ+iB4usVAFcdZoA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDizXXBDzVUVlnzSYfaPQsbY0vz8FeCqWi3picJ0AOU6AiA57RMPRN96L0nJdlpluGtIo5/hLjwK8UOHGJSznp3HVg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-rc.2_1530504928428_0.8630124430842097"},"_hasShrinkwrap":false},"0.15.0-rc.3":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0-rc.3","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublish":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.0.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.3","messaging-api-messenger":"^0.7.3","messaging-api-slack":"^0.7.2","messaging-api-telegram":"^0.7.3","messaging-api-viber":"^0.7.3","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.8","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.52","@babel/core":"^7.0.0-beta.52","@babel/plugin-proposal-class-properties":"^7.0.0-beta.52","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.52","@babel/preset-env":"^7.0.0-beta.52","@babel/preset-flow":"^7.0.0-beta.52","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.2.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.49.3","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.74.0","husky":"^0.14.3","jest":"^23.3.0","jest-create-mock-instance":"^1.0.3","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0-rc.3","dist":{"shasum":"6d30915bd6bfaa4da43972fedd76104dd4aa46a3","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-rc.3.tgz","fileCount":326,"unpackedSize":1121703,"integrity":"sha512-WzCfXsRqtqORu26KZ780rRahAhVtI8LjOIfQvCCKHx1oPsLjAPeWoQTCN3dZmjbDLmI8RrPR83AALoxwCyNGug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCut4rbzIBZ2JJgK2B05grqqccXa0KQG8OX24eBRATt6wIhAPncP7OmTbOKIjCtLrOzgUHOLiZ4xCS7wExgJx+gEA/0"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-rc.3_1531134364500_0.7552043523385099"},"_hasShrinkwrap":false},"0.15.0-rc.4":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.15.0-rc.4","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.1.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.4","messaging-api-messenger":"^0.7.4","messaging-api-slack":"^0.7.4","messaging-api-telegram":"^0.7.4","messaging-api-viber":"^0.7.4","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.11","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.53","@babel/core":"^7.0.0-beta.53","@babel/plugin-proposal-class-properties":"^7.0.0-beta.53","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.53","@babel/preset-env":"^7.0.0-beta.53","@babel/preset-flow":"^7.0.0-beta.53","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.4.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.76.0","husky":"^0.14.3","jest":"^23.4.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","gitHead":"35928ce6605e5f2f0205accda873539e8127ad4a","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.15.0-rc.4","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-eq9xF1TBsoLJTF6A0Z9kEes4+pMHANP8fkOEVETo3gcp2qt7y1U1NthiYxomgP5XWHYR8F5QBYSQdCP0kcuyhg==","shasum":"b1b8e49c7aff84f4f3b8eb0726d502f6832151e1","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0-rc.4.tgz","fileCount":280,"unpackedSize":1162123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbSEZuCRA9TVsSAnZWagAAxP8P+QGkIr24sKh1w9k1OgVc\n/Sv8+BfJYpHjAMjRHJsIw8m+ay5XkOZl3Us7mKI1ZrZ9W9ZDtdbCqS1bouJV\nobciOB0ItKAWz4nyxEda2OXSEt1gTQJE4BioNt+x3yrl/YnpxtMyCUCwd2aE\nUkml99yov7k4h8CFCohUWFKDHz7NA4dGxpHjfWfZTElBWWiQjbRoT7Ys/BXS\nnvBfHqBsf4zIyHqP4GPkE/HG3FNNeHUndxkfdc1PusUKXHrsWYNhhHmOxwpO\natIfl44NBEwRbphjjiM9oDH0kJK2Wt2PV11wbkdeLzL3kc72fyU21Oz7P5pA\nLmCGcT65kEf6m6JxVNwdPuVOVd48kkpcDyD6BII91cFUnLwa03Pm/YhbR6x3\n5tp9wOidfDSYAeUFRF30zzEFQFotU0C/qyM5GdCBhYWABWD4Z4yjQxtpo21e\nYDdpwoOydBQHVrPfr62EQyzSETXKdDttjCEauDxYnHpLanTE7b5FcxTJkN8u\nMGj2plBCD6c/oJ9DhK/fqsMcFwOfFAmu/aielrGTfIt6XPyqDRPgXYUlDuNB\ntpBgkVTraWHBvp0VRZWedZPaYADtV9NigSBBiQGGdy3PmXMrOV1SmIaBHOuj\n+Eo5V8CCbRQJdyoh9gshaZHIZRXuW7/AIdb/e8QhgCl+HKcsD61korUv2gqX\n/KoU\r\n=NnGX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIIV6SrpA/rZh8o8Ctne3Cx6rAmV4Agk8gSYRFh29aVQIgRKYe8G7rXQkJZzGqGfU14HahgRadO15xnk0J79KcKQk="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0-rc.4_1531463278738_0.7031772816559014"},"_hasShrinkwrap":false},"0.15.0":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.0","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.1.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.4","messaging-api-messenger":"^0.7.4","messaging-api-slack":"^0.7.4","messaging-api-telegram":"^0.7.4","messaging-api-viber":"^0.7.4","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.11","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.53","@babel/core":"^7.0.0-beta.53","@babel/plugin-proposal-class-properties":"^7.0.0-beta.53","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.53","@babel/preset-env":"^7.0.0-beta.53","@babel/preset-flow":"^7.0.0-beta.53","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.4.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.76.0","husky":"^0.14.3","jest":"^23.4.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.0","dist":{"shasum":"f5e513c536ea4ffae6e55d046bea0cd2fbe4cf60","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.0.tgz","fileCount":326,"unpackedSize":1166588,"integrity":"sha512-6MH9Blvj95a53FecJTHjMyUrn8p8agTMmWK6twjK4veysZcbachPJLs1YmhAE/sEvwhXQlby9AdSWfqmWEnMGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrSLJIG8hl8rABSzm/Tu4I/3szp8OOi0A+mrjWQbcGYgIhANu5ecP2Yi+evin/SXh3ThxYxKKaLDBNBffcmVW9aC5K"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.0_1531882123414_0.49853362509976873"},"_hasShrinkwrap":false},"0.15.1":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.1","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.1.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.4","messaging-api-messenger":"^0.7.4","messaging-api-slack":"^0.7.4","messaging-api-telegram":"^0.7.4","messaging-api-viber":"^0.7.4","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.11","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.53","@babel/core":"^7.0.0-beta.53","@babel/plugin-proposal-class-properties":"^7.0.0-beta.53","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.53","@babel/preset-env":"^7.0.0-beta.53","@babel/preset-flow":"^7.0.0-beta.53","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.4.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.76.0","husky":"^0.14.3","jest":"^23.4.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.1","dist":{"shasum":"d0210836128f7f9070cf27a9f6f5c162958afb7f","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.1.tgz","fileCount":326,"unpackedSize":1166951,"integrity":"sha512-2H8JypSGSxC53yyC93sqanGa2OsUkyg4Up7QRIQU3IRRBUi7S4Q1VUAMYIKHUhL3RNIfG8+znj9R+BofMYThLg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEz8wQpdol88eGe+WRlV6g19EFP44lQpa4WUx/0JBKGNAiAn8N3YU0qH01z4CDUOQmGrRGOvtVpU0IcjxtlMaWD87Q=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.1_1532067794288_0.0990694903707694"},"_hasShrinkwrap":false},"0.15.2":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.2","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.1.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.4","messaging-api-messenger":"^0.7.4","messaging-api-slack":"^0.7.4","messaging-api-telegram":"^0.7.4","messaging-api-viber":"^0.7.4","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.11","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.53","@babel/core":"^7.0.0-beta.53","@babel/plugin-proposal-class-properties":"^7.0.0-beta.53","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.53","@babel/preset-env":"^7.0.0-beta.53","@babel/preset-flow":"^7.0.0-beta.53","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.4.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.76.0","husky":"^0.14.3","jest":"^23.4.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.2","dist":{"shasum":"96bcda4995e2a8f1d2d801633e0154906ea1349f","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.2.tgz","integrity":"sha512-K3OcCrcihX6icuTD7AmIi3pxB691F2Y+EOticqM1thgGdFZ1KBSFz5+4RzFDgLl8/sxB6a7NBVQ2azttZQy4BQ==","fileCount":328,"unpackedSize":1171360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdOqKCRA9TVsSAnZWagAA2FQQAKKDRcv82ZR5jlyu0/aK\nTHrQ8fjfSyXHMx3bHG5UshhOy/ky+SQlDNX35U/mowex1mQW7o9Hz/Mnyo01\nO17kUQ9toONJA1zzuSa8Se7P0lX3dtvPPdLdr1vksNBhXpKOuloKCg6K3uKO\nSY+c109re7FJ1MDRnDqINVUBJkPL2bmbANX1DNxMkwKUHNg7tspqTjm/Jtan\naXJuX7W5ZmQY4lV7z2FPFNOUa+4RhQEPYmVom0q6bfOcBqF0vDEex6Kh7Ze/\nJqy9QnUSsVQ/N/7mj577+uYJTTgYZVXIz5VTWy5ub3HZxHaZVii4nKKSuOT7\nmq5jOOkSC0FedGFYcHL81nTWenf6c1/k5HFAeRpIx5HGfsru4IHfveZoSDwp\nAGUZpBK/8KPq3vDmWHisxFF2LcdC6XVTl9q2VWgDl6G/AqTXQYuZbLz2XPcH\nXAOPUIWi2H1+Xl5+xA2nPnTGEQZHT1rd0ribtR5ZQQeGLHOoAP6AhWBI6yeR\nMk38Xmciu304IBYazVsAVw8tT8QwSBxWR/cDNpwRD2cyIqlwu7s5z0N4p+2o\nZuMv00xmCmdYEjg7JVUSfT6AlNHTuiZOGYOCFYGfLtH8lYEcBG/HqnMV+vXx\nHb6AWxyY6B8qc0amPjUYg92yvkf8ABO4TeVaxP/MUjSv7z8KnrxOv7So2PNC\nptAF\r\n=FhID\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCE5pJqJMIRKf/oQYRZtsnrCRNAKEtnwL6UBAZCb+MVBAIgcRHwfUIHLlvM/JrkxRRHdvLoCVMwFSixk6nXSb+96JQ="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.2_1534388873528_0.3745489475900394"},"_hasShrinkwrap":false},"0.15.3":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.3","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.1.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.4","messaging-api-messenger":"^0.7.4","messaging-api-slack":"^0.7.4","messaging-api-telegram":"^0.7.4","messaging-api-viber":"^0.7.4","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.11","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.53","@babel/core":"^7.0.0-beta.53","@babel/plugin-proposal-class-properties":"^7.0.0-beta.53","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.53","@babel/preset-env":"^7.0.0-beta.53","@babel/preset-flow":"^7.0.0-beta.53","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.4.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.76.0","husky":"^0.14.3","jest":"^23.4.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.3","dist":{"shasum":"3f8d634895c223b460dd05f11379d5ce711292d6","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.3.tgz","integrity":"sha512-bbnKdeOuIz1kbIy22krydp/D7wTcbCEYTiVXccIGWRdjxHdgS3D1bC790xHyYmKLAM/fEJT6JLVz0R0DuONBFw==","fileCount":328,"unpackedSize":1172020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbe8q1CRA9TVsSAnZWagAA+NQP/A9WVCuY4J6BnpSyEA/t\nvIOzzOgJUG8//UoDyqMwDQ+7QyJcxOmVpWZtTSFzX18UT7IfE42KGnDSO/4b\nYQjJwAzufjD5T7CaRCsCWOn2sq0tMtHai4Y/k6ypmnA+v+H9b/VePBQM0Nja\n7ai3fFxxT/1HjaqGAGl2K7tbD+vLv47g2RxYw1yZFJ+ssII2RCr8Qse+IRR9\nh1C1+hxV1oFqiaTod6suc/8OGKG0cmc7s0/umySvnwh2QM8sW5QOYgXkPHS6\n84+aij2PCZkf2tqRuaEMnCg5JIGmFci712KNmI2+j8SXnJB4EE2tG/QxkDjH\n6+FprQgnNV1zxbVtlWO0bvLwJluZ+OG2lhebRhwQh8s1wxTnC9EkVvVzfAsm\nuRj4ecDjwnMoR+7jV9el/JF8aQJwr34q22OB+LZ0df2cblsDVq0SMxDqkp0o\nE41lJA9Jt2nRPIrrBD6vhroscS0ZIc55LmI9X5kjh8pzORtpPgWfpHgGjRPr\nwUGEEZa/J7W1zG/+FGi1/dkaiMkGgzKDjWCs42pxMPq/BE3plbAz9838EydX\nsjo3nolqFU3jZ+Z0surffYOZt328YdyZghr00LAvo1o1R1ivuLLkweuIqz8T\n5FEYw8/sjW12rqj+pcTluHkzjaJ/hiLjLahWdhihSBWsYSBaxjP3ya3bJB7q\n36O3\r\n=AfId\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgetjtEu9viUBjCu6h1sYNcZMs9P6anMBGlXe6ZwsGFQIgC6ZHGyUNl/5kPUHuyyKWDG1fxqjWqrK8yJhZw2X4fmg="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.3_1534839477327_0.5794385900875805"},"_hasShrinkwrap":false},"0.15.4":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.4","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.1.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.4","messaging-api-messenger":"^0.7.4","messaging-api-slack":"^0.7.4","messaging-api-telegram":"^0.7.4","messaging-api-viber":"^0.7.4","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.11","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.53","@babel/core":"^7.0.0-beta.53","@babel/plugin-proposal-class-properties":"^7.0.0-beta.53","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.53","@babel/preset-env":"^7.0.0-beta.53","@babel/preset-flow":"^7.0.0-beta.53","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.4.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.76.0","husky":"^0.14.3","jest":"^23.4.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.4","dist":{"shasum":"07d47b5e9e65e46c74d1d7eb283bbf9232846e47","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.4.tgz","integrity":"sha512-IpzOlU9cj5hm+GoVFdiFOnDYbEZ+4dCIOjzqUNwVRwWGykMfUulJX8vT71HqBA3QMqifZSzNKTaEJd88YzkmfA==","fileCount":328,"unpackedSize":1173069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfP+oCRA9TVsSAnZWagAAUEwQAICMC83QKQiMWJTHhPr5\nm0dH76ddlXXrus4YWCvG3AM3KSDp4AiJ9jPBSZfOMRmp8q2ck/tauGHITMNX\nkgM8vEzVpU1OdSQEvxbqc2P9FVkheHTIT2LQwexePw3ZdOQ+RsHatXvXM7ap\nKvp7HTX3n5bk+K2oHDrb8GB7RMqymRi5xxuJs1HVBTyoACTEgfZNlhtC+bcO\nip3e8tIET1cL4osF/YrinML/tLQllV5RAWUkfXbwjm+ESjdn4UjfuAd2zVco\nkHCZTfuz8RpAC0c9rpt+8yxAKLAu/ZvdeRVN7lFOsitb+2LS8UeaNtqKrGv9\n7+yXnSWfT74F0mbqdoSS8BTlExPDO24/eVmu/M/rbyfSGT8ez35q3F4oX0B2\nBvzB9Jc1gt8X2bvZxoysX2z/3Tq+Bap97erPOyVd00eZgBfRtrjSC+bc0Ad7\nCvcGzabJhmf9XsIR553UC2aceqZXro3R29Sr9fD53kdDXJd1Z1EYCwrE+Y6K\njgmVSvLPZqFBhP3TN6diBOKjmU1NdJhZlVK6L/DaxFTVxrPo2TxyO52gGZPz\nhzBMOGOwEytCsWOG7qBJHaVabELfiy04cZu1SG6ouo00j/9lKQQnBnzd0hlp\nj6T93qjA9FfroN/KHPSzuj3tpZCsZ2Xw3T3c5rCP08cwTBTUy49+K5ZoMAk4\nnfju\r\n=Qky2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8Ed6uw5FA3FxnGpH27BZ32jVM2goGo5PqrY8i65rl7wIgFEP90hHOdQAIMjWr7SMeUNZitrf3IV336gvO7CWqc0k="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.4_1534918568227_0.4907748681027715"},"_hasShrinkwrap":false},"0.15.5":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.5","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.1.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.4","messaging-api-messenger":"^0.7.4","messaging-api-slack":"^0.7.4","messaging-api-telegram":"^0.7.4","messaging-api-viber":"^0.7.4","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.11","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.53","@babel/core":"^7.0.0-beta.53","@babel/plugin-proposal-class-properties":"^7.0.0-beta.53","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.53","@babel/preset-env":"^7.0.0-beta.53","@babel/preset-flow":"^7.0.0-beta.53","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.4.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.76.0","husky":"^0.14.3","jest":"^23.4.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.5","dist":{"shasum":"b4833ba2c8341f6c7fded9c6360dee7ed02f701b","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.5.tgz","integrity":"sha512-Nb4S5gI4iBVQE0eXoHhtY99K0GNbIM1edGCnnfnPldM518JkA2Llp6PymLr7daJbE66gwt39AdypYoBfsmDLgA==","fileCount":328,"unpackedSize":1174976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbg8NbCRA9TVsSAnZWagAAh9MP/RnqltRTFuiFJ07Rwyt0\nWwHxOrA+XtRHX3LZh/F+CcWu4Bsngav6N9kDmxTDmEFK+bD35buJx4fDKtJH\naOT5NY8icaHz8HK6vTXft2pM+3tiJ2smTVSFlTdb8ATW4koS4yB+jZTeJIQW\nEnDsT261z8kNUnKlH46DcBP4ptsWMR15gCaU1Cve/IXCvIQbDPZ6I5fj/JY3\nDtFeNQSz4sWO0JqIzgacbM5O9FNUHSCwv6CcFQ8ohKD3zKPswBCEPERU24o8\nMWCj5Ff9snOUeFvi32D7375sSf5TsyHykR8DRka1AaEvGPrLSZ8JU/FfM0Vu\nvZGo2n4prfQftlfrr0fPkHqonfmiZaPHbaCTMkqtH06EDBRHy0Rp1H+GqINJ\nEXfr7XAVCGOaNipG1Z3oMM4+ryfKR8zaV1E+xBKmuAh0JEprft2fVgoOx1RM\nW56O4QVTbYpbFdNIqznJHYIlEcxUL5p7HVka8qhZtYv8Ng7BV9HJ4hJB52gX\nfgSDj93vqFBkRGdEqhqvLwT41l/fUIUzJdYLusJBy9aq526KmCtJcNlrby+r\nWWY++LqDR57wxcyCWfNQK83+gTQatXlFoFZtLunygb/uP16TnRLk6YBAQZxg\nUU/w7dx9qCkemPu3pWmipfoQQD+DqzJJMeZzXkdJEXCgx0tfCV17b87RfUf1\nsgRV\r\n=wEPz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHGWFIXNJtNL5JawIFlDLvEwX2fnbfEdp0l/GSrgsZB2AiAZyzfRo8DZP9Bfd02M4qbW4ZTU3lQxtCh8KGsxUuXv4A=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.5_1535361883156_0.9343212658419189"},"_hasShrinkwrap":false},"0.15.6":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.6","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"files":["bin","express.js","koa.js","lib","micro.js","restify.js","test-utils.js","utils.js"],"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint bin src scripts examples","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.3.1","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.0","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^3.1.0","deep-object-diff":"^1.1.0","delay":"^3.0.0","express":"^4.16.3","figures":"^2.0.0","file-type":"^8.1.0","fs-extra":"^6.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.0.0","invariant":"^2.2.4","ioredis":"^3.2.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^4.0.0","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.10","lru-cache":"^4.1.3","messaging-api-line":"^0.7.4","messaging-api-messenger":"^0.7.4","messaging-api-slack":"^0.7.4","messaging-api-telegram":"^0.7.4","messaging-api-viber":"^0.7.4","messenger-batch":"^0.3.0","micro":"^9.3.2","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^1.2.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^2.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.11","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.0.0-beta.53","@babel/core":"^7.0.0-beta.53","@babel/plugin-proposal-class-properties":"^7.0.0-beta.53","@babel/plugin-proposal-object-rest-spread":"^7.0.0-beta.53","@babel/preset-env":"^7.0.0-beta.53","@babel/preset-flow":"^7.0.0-beta.53","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^8.2.5","babel-jest":"^23.4.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^4.19.1","eslint-config-prettier":"^2.9.0","eslint-config-yoctol-base":"^0.16.0","eslint-plugin-flowtype":"^2.50.0","eslint-plugin-import":"^2.13.0","eslint-plugin-prettier":"^2.6.2","flow-bin":"^0.76.0","husky":"^0.14.3","jest":"^23.4.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.0","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.13.7","prettier-package-json":"^1.6.0","rimraf":"^2.6.2","supertest":"^3.1.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.6","dist":{"shasum":"9276edde8145607a15836de32dbb0368a96c3cc5","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.6.tgz","integrity":"sha512-1CrAimKROdF4N2WKO0X6x3zy03PWcKrBFl+DEc8ktTQB2GpJCqe99IP3k4n0fXXixFc7wTQ1hfhqI0LmCkSsWg==","fileCount":328,"unpackedSize":1189783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbhTBzCRA9TVsSAnZWagAA/LoQAJzhBziTSDKCiXTaD0Ms\nY4CzjIal1/h0jC5vyGvVElXGHaG4EGZryODZYoq46Vs3B4iS9EA1cd4mQ6Zx\n+CsQf391hKfruI8GLv7fbzdQz6We1Og5BMHwa6bv/VWMpEH5TdyqRIGYUT00\nj+0QGh255WWBhCvl3/tPxsR7UYpOOjYQshApj4KerKETa6fs/vmlEL/cW+0i\nVR65J7UY1OFWqGfAM8wDzzDB48zzX67F4hH9coQFwa6b8o5LMJzgP/i406fn\nxOntEktCMsqQG1KRQss3q3HWwAt9bx+a1MTdmdudOllVuaTn1UKGANyHNQ1r\nYjQ8UBWrAdCHtOLc8JXyEk3PZWh0XOmOUZVonQW4PUsbLZJZ/caNiht1COvY\ntc5STs3HfLxHNnrMxofAAuX6DCycr4fynSFc7P/Y9Z1BVlYYCb33rS/wXGz8\nDmkWIXV8vEFwlmdMz/IsgSvN3DqSRGzCi5pM9pQ1ckRgyumRyAbMNBeFFwq5\nQmFX+zO4hEtY7yx0QONEGKu1XEPCWsztKdNqoOuUAZrihm6gRdU0UwVK/Pvt\n/cP139/vsq5EwF+HFikTEwkH5MnBkjCbevOuK4qZUxV+3rmmB9n5i3NlFPqR\nv2tq9DbIi0GVprakalN4pghlaXdYTlHBNLz0a9rB89jTQUNAkWML2wN6KGJp\nHCJ9\r\n=GiQ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6d5THJuFo+ukGmbOOD7gvRxGqC/O/hAYUfez/JcbMsAIgeO5AmJRFb/NTUUbk2HgQfmUMbkAQfa3yPlEOtoJuSJ8="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.6_1535455346941_0.6687509373200853"},"_hasShrinkwrap":false},"0.15.7":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.7","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","precommit":"lint-staged","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.6.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.0.1","deep-object-diff":"^1.1.0","delay":"^4.0.1","express":"^4.16.3","figures":"^2.0.0","file-type":"^9.0.0","fs-extra":"^7.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.0.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.5.3","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.8","messaging-api-messenger":"^0.7.8","messaging-api-slack":"^0.7.8","messaging-api-telegram":"^0.7.8","messaging-api-viber":"^0.7.8","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.13","stringify-object":"^3.2.2","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.0","@babel/core":"^7.1.0","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^9.0.0","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.6.0","eslint-config-prettier":"^3.0.1","eslint-config-yoctol-base":"^0.17.2","eslint-plugin-flowtype":"^2.50.1","eslint-plugin-import":"^2.14.0","eslint-plugin-prettier":"^2.6.2","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.81.0","husky":"^0.14.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.1.0","lint-staged":"^7.2.2","ngrok":"^3.0.1","once":"^1.4.0","prettier":"^1.14.2","prettier-package-json":"^2.0.0","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.7","dist":{"shasum":"c9f90b2b1aabd3ceff4250e69a05beea93412c6a","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.7.tgz","integrity":"sha512-D6aN1pr3vJGDRnaVhqQ3Gu8qaeBCaqRkVTrSa6utAz3dOQcSI7UvmnUZfxKV1vteSByyqyWvgbj58LJgO+lSoA==","fileCount":328,"unpackedSize":1190615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboe3HCRA9TVsSAnZWagAAAcsP/j45g6mosBL9iGB5M0H6\nrQDgsoSykOcC1qwg8kxBlfkq14ZwE3Ewe8ewIwOoYiTzoPLO0ZAvYr6/d3fT\nQ34wHAdU75hOngUac9y8x5HOnypAHWeGskzY3tJ4LGGwdJ9/91rfS2t54hsB\nyfzq1mt6+ZiVUhPfsmuefx0ntGS4LJjsxj8nf/tsYIHlwyFgHSbaG3NfA/Yj\nB1f6BFugmnW6TiwvTk1GT0OvD8lyqH7xC103rGUPjP4idGFQ447pCREIepqF\nVL66rPzhD3nO11Nyc39U53C5OqudBRVa5ggPOMhSA56RlKI3GLPjC8nQ1RnH\nM+VI6qLFeAm7edN8UN3waFj5LLU3C/Qwg7hEnwSRA0lHyT0egXZYyzx4AGg9\nIo6N6KQT8JzH9W7ysWxfUnUCB4RatHfPxkza1TnLK5ZzFqk+6CtmDVufHsYj\nfAFyX6lfaSHuLoJhT8NaLdGLK290/FmhPfI0FuBGzJNflYze9W1e7ZrB8Vbb\nIJKNiV+aEEKDIAvBB4T2ZpQKXn/AHVX82mAyhOsCfmMarbY3qBbDNYoBsBz3\ngaTUwbG3wKCcLAkWbDW8JMd5smKWJ0HngGM1cl4u9FE3kLeIDeVxLsVNHWj+\ne1yb0xbv7aqPia9KVkp2hl9zwGMrvHnK0l02MyVfyrnVlFvjl66qVYzCB7ot\nMOMR\r\n=qRM4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAnWHXwvCSLEbTTInkGJXbljEoj89aXqEC0/iWwZb0sPAiAl+XpC1V1i7FgQ1WV+E83+HACjNZBmyR4m2MkyCQgqvw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.7_1537338822115_0.4055122005250742"},"_hasShrinkwrap":false},"0.15.8":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.8","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.0.0","fs-extra":"^7.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.5.3","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.11","messaging-api-messenger":"^0.7.11","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.13","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/core":"^7.1.2","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.7.0","eslint-config-prettier":"^3.1.0","eslint-config-react-app":"^3.0.4","eslint-config-yoctol-base":"^0.17.2","eslint-plugin-flowtype":"^3.0.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.83.0","husky":"^1.1.2","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^7.3.0","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.14.3","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.8","dist":{"shasum":"603f81799a8a299e2343bd48b8b4c9ead595269d","integrity":"sha512-wBeLl/KxIxDXYENAjSyr3/+z7XUAoq5wFVDO8mnigjbUs/BL93NkvJX7gl6rpBGTizH7v1Ava5NGlwkU+d8xTw==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.8.tgz","fileCount":328,"unpackedSize":1194111,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyCshCRA9TVsSAnZWagAAOtsP/2cLMWF/KQXo+b2Dp4Kp\nAKfv4EQO0zXrMN2xllnNiSvlT6cxvbRXdfCvV2JgGXVnvbxwsF2s25E6SnpU\nUiWMpllODcE20jkAlzfWZ7XFIr1k0+AzxBlDgbxX71yJwiWPV/uWy3o8opJg\n8r2DPXQtq/q1V08Gqjin6HSJxum94qOhhiJFTNV5lWTAJtVx8WQPJ0dfWfoT\n+Dgy/A3KVGtbEjKeGf7wJPxA7poXz63OAQOTaSRmZ5MhNwBVcxzNQxShEPVC\nM6k94daE/aSgVjOUxOAO07Z5zMFXm4noMXsYQKAthPeN3S2LT72Eh7K2tRtU\nsR3RV5RKkLiKgORt8kxE57VOMlXh/grXVLFpEAo21jqUPY2akCxQ5gHWSnDK\naR97/xL+sNV4VqF7UOE52IauSKvkNlAv+y30YzvNEl+zuAl9VdMY+5xb44qs\nX+Dy749N5c6eK43eVknt//VvY9aOJFeMT6VtfDgxnPAgAeemlJA9HvFPqkju\ngjNC8oW1MUrxKePsvUFMY0PuDfeLjtMPEmZphJ8hFnftLcUU7jQ5L7aWprod\nSNSBwxISOTYW4IRBg3Op8PyLgcqRLFcZo03d4lzsFjTIAgqg0ilcoGEHfE2l\nEOQ5hPVBQPYThgrQ2xSKJqYjfsl/hNXUKPytpVQeN79YYHlU7WxKrqak2tAd\nM6xu\r\n=Kqx/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmPSFYbE8LIjzr+I/bSmb0zt+QoHLwbGoFp/V4eegwTAiB6XRrXrymD81mAnE1Dtex9jtG/tEXCZgbVgwHnj5vu6Q=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.8_1539844897225_0.6074071426613521"},"_hasShrinkwrap":false},"0.15.9":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.9","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.1.0","fs-extra":"^7.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.12","messaging-api-messenger":"^0.7.11","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.13","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/core":"^7.1.2","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.7.0","eslint-config-prettier":"^3.1.0","eslint-config-react-app":"^3.0.4","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.84.0","husky":"^1.1.2","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^7.3.0","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.14.3","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.9","dist":{"shasum":"84976cd85e0ff840d354ae67c83a73f53311b29b","integrity":"sha512-3ad3wzD/DC6hqEh6txleGcXdyHIaUcP7NUJJ5TjUkzaEPYPMcwVf8VJ91sPtl0/VWjFLiJNJWFOw99D/+q+BpA==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.9.tgz","fileCount":333,"unpackedSize":1217837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0vfQCRA9TVsSAnZWagAAqs8P/A8p2vTlT8p7RJCeWk4f\n0aU8JYb42wFyLoOGWXOuRWd/K9tU3JLWIdJjRBTN7cJYq2xboPWd8oGz2LUk\n9Q/Lnpsb19kKpOY/j5Dq/cMhULflwor0CsY6AQvwBlxfN6U9q4fc4YoKs/YI\ne4vDdvzjftUvtRn2Q97Z2XYq8Y5TTHvSmGXjn6nvCm2Vor0i7vUvAS43B5Cc\nnSohmHiXNt1wqxkNhviE4DtC/PACqpNoTAP/eaa85KQJQbcLAbeIvE6Y6YyM\n3UVD39lse04Reu7wPBpfrAnLcCDn8f5kOx65Qd7pVKH9qx7YEr8JPvVuNl3i\na7L3acxWpRE0S3+rA7q9tZzjK51LHCJffJpLHlVMElAnQHtX9/AZdVlhmy5u\nEcKUsPqLXClH7qw5A+aYv8PhAX/4pL8FmbpmhyujZV0Xllv/coqi8k/NjLa+\nXC2xu3QQ4cH/Sy297Y8Mh+dJJzS2ZQSxc2k9W24mMPwTZCS0OxEGmNbZ2zzR\nYsbPjpKezOhM0/rEDxgODW+hRmBj1pu+O0qZ2U/pnXeCZch6SggfaOBur7H7\njG3Xz1NPxkTtXv9IuSKrg6LzSy9bUVSAcL+mv3wyEv7Zc9StQK6JAfEXdURL\nWfr6RK2dPXrwIRKTEaBf5w1K76vROC1rylhCEyOWtFF0TBZnYZXbJyVTZJUG\n/u4U\r\n=c5+E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnY3wNCY8hfDovd5JqXqKLFYGje+eXYyYvBSgCmTlErwIhAPktnyG2HHulcGwdvnMN8HUIJvTPF51Mj2WkztO7b2MM"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.9_1540552655136_0.15570931999933335"},"_hasShrinkwrap":false},"0.15.10":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.10","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.1.0","fs-extra":"^7.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.12","messaging-api-messenger":"^0.7.11","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.1","shortid":"^2.2.13","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.2","@babel/core":"^7.1.2","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.0","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.7.0","eslint-config-prettier":"^3.1.0","eslint-config-react-app":"^3.0.4","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.84.0","husky":"^1.1.2","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^7.3.0","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.14.3","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.10","dist":{"shasum":"82f2778279c727d06d95911bac90ac2ff31a1f36","integrity":"sha512-7e74OKzqc1lX7POwRfINeA+JOTCxHh4LispkSpQxhseFGDn0zcjLn86b1jSsQIYhMy9xHM1EmmyuYxOHtrWe5g==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.10.tgz","fileCount":340,"unpackedSize":1222142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3GdMCRA9TVsSAnZWagAALYMP/R8yoLqxfOblCJOV2n4n\nzaOmoM+lF+sIC4X2y4N5PzT06wiVX6sZAhgWUiB4vUCVs4TKUNcDz7psE1FS\n2suDHdgS+/oyy/lNr5dznPw5vu21R0pgg0GSeSCJWaRym0Uak69DXL5tEQAC\noxWWMiAzMpArG393JfJtNkh9kDItm5kaEaA+/gfR3OT3Ed0hFdTWH1W174sX\ngNo3A6rHFJHuS5eLJrhxT7A5CniFPunkXeXAsw16fXweSSCBnJvSZzvTOlbz\nSV/pTWA5GH+KXbmRK8JTeuGzZa3BfhHhYdbvnhSs9ZAltbE0DMZlcSMnHyOf\n6JaQbCQxH0DhL66CAuiszolAzNQs7H6q5UUrGTGz5bYSQbLqmBdtgE0duiQJ\nijF7LahCv1Xs/Ho/OOQzuNcGwiVRXjSBH0OByVxjDAqgd3EyS5rega3Q42wY\nWbujzoijLdWIJXtYMQwmtEnsQw0lhL9DkOh/VW//BBxcdjBCX4K01ZkeWNOK\nWU5pmaFjqOwtz0EmSV7w4ayFvzIvB3JFbayGhlEa2F6xuIK5jB/yC3Pes7IC\npu5UMYT6vo117u89Nt6iGuUitJBJWwBOGtvXoezvKYJ3kASy4RvxzRvAVyBo\nDsWSkIMWND2AO8VAjQvH0hPv/5vdA4Zmvu0j+C6G7GQcuX5T6HLVbBkMfHOD\ntFjW\r\n=ioNc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaN1A1uj/bLjVg/oQpW9vig5ksWKLAv/zpWl2irlBHxAIhAPIsuVcBqtioxJR842QEZEMHm0CMauZxniW3coXNaWYj"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.10_1541171019186_0.7591556549770557"},"_hasShrinkwrap":false},"0.15.11":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.11","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.12","messaging-api-messenger":"^0.7.14","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.8.0","eslint-config-prettier":"^3.1.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.85.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.1","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.11","dist":{"shasum":"5cfe27bf87fe2dc0f743a566468a4e6af913488a","integrity":"sha512-EmNFF9ZFUxbp1/Zb19A1a9nuX2kSo8zr5xlulTBIjUjSlTrL8C07CXBuJWisoC7x/iDpNd5nfGkoQf3/rhvcyg==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.11.tgz","fileCount":340,"unpackedSize":1222491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4s1bCRA9TVsSAnZWagAAMxUP/1kXqhwHPaZ7PqJtPl32\nAnK0KIFO+DfnUQyGu52RYnoDY/SzJpZ4O3uqGa4XMvGrb7FRXXgXJ5+M4FLb\nCFwpynE1avPz0ZDVf0C0t6CEjiGzu0TfDgnaUWHi8p53GCTANDRDTgjE9cRy\nLrMUMoCylYUs3dsBujFGXhZOecZBOEyfYoCZIx6jmt4uxiZSZugcTbq9vVmc\n6afAvA7aSOJpzorTwQ2iudcO/mWqN9oVblejXqXrbV7fVDfHssrX7cX2nhKY\n1JeVG7GXCzm1C9fmgO/X5DTacyZlTJdzL5I3aTYzdbW91Mx9Sp6I2TW+s/K+\nUIaa8UvAgqO3dTtLTHbxXUOkRhEJVMh2Uu1/AEi/vT/AHuzmVmH4x5Dia4c/\n9fFV4/YXFhl5rwBj3Q1WOBTgdgoAR4csqWI3xnSW6S/EPl9wqqwMh5CAZpGu\nvyOQnnQsqyy8N6tFHMfTYMYbbVahfo5/JK4jTv0igjqlJyWO8iKbSN+pmsNj\nlZ0wPZ9DrgT23Drncfua9UuXraw5yFsE5B+ZazWCuk0YIRzve9zTZZVTZF+h\nmPLRYIWWvrBezt8B7h94WKZDNAMXMuKMqXtO+z7BYsuXCrQQu7vrNpwASaxj\nMqRBc+WobcT6id1RZXSv37lSxgwVHb2j3Gg/UPyAcxq1+SA9ewJCy/y8IJey\n4ilS\r\n=quna\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzfGNqFYOnH4G8Kprv0wkdoV0A41chTiCuNex5xvIkvQIhAOqhRPsgMp/I1b1WiLnQjSd+f/JG878GWqfHmCdQTgX4"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.11_1541590362506_0.5888945960387448"},"_hasShrinkwrap":false},"0.15.12":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.12","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.12","messaging-api-messenger":"^0.7.14","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.8.0","eslint-config-prettier":"^3.1.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.85.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.1","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.12","dist":{"shasum":"b9018fa19303bd70a06e5038d92016513d81a9fd","integrity":"sha512-9Lj52QT/goc4qto3VkWnODSYMOMhLAS5RE+4u1MstoyL93BawoSJPcO2o00vpo12Z5sGOhBWAIpTyiZeotKheA==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.12.tgz","fileCount":340,"unpackedSize":1223719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5SUdCRA9TVsSAnZWagAANDkQAIUN67b2rIOsj8MJq+ou\nM7amla60tbphPbel8ZOyXBWH5Vnb0nQeEYPbm+9B38d6iRgpkybGP+pz+Q8o\nQnbZE7MbH1+X1Zy3PUTurvN7RVZHYcAdHS2/EQuKN9uSNVJq26TaSn2amRrr\nHzYSLD8d599kXp6BamBfRgAoJfisUheK0Ip4UzqaAE5boeWf7I7wETOzIdsC\ntnSV1KKxoMiHs34s/J935uiXhiw/tKOyhnanALBDw5HuZvZNzh02CuMh80Uz\n/HDiNWNoRYzieFxmUibyUb1y3vgPZwvXkkJwZPmXl1Q3A2p10lyANl/DtoK+\nIHmpqpSuKgFVbogv+1WNKeOH5ap908qU6gsORGLx4gbgJnVTNAqc4HEWmXCX\nfB51QVus+uRSaDIG+at6Nj5K9lg5DgpJZa8xHPSFlfY6UkQVJVrCY4BfKINg\n5hnrG8DCBRhrfUfTXy8T/f0Le0i62HEK81NYf/Y+7XSgQpgHxrvhGsBRemvo\nzj78VFxAelNEmULx9mXvCkZMws+XRcagLfRLSNib47aSq/Vzxg5KSq6a9igz\nlnA5L3qUfB1mhkLwb+H5KeXH3GT2ZQupqh5FOW0rLyFVhnJKOaoiS827W/Ec\ntN+jaP6snlJ/k4FOt6P2IjIRHUuACBFiuyrMXS5pE9VqCRo16g4w1Vx25dGQ\n62/A\r\n=1EPB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD59bQV9j7p6ZGsuctVo8VcMRRoed20VmGSFxL2xzCyswIhAIntAHC3D5RMD/7Idcq87MPZBAz6kGk3L/2CGZXOEfGV"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.12_1541743900812_0.34995827343639374"},"_hasShrinkwrap":false},"0.15.13":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.13","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.0","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.12","messaging-api-messenger":"^0.7.14","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.8.0","eslint-config-prettier":"^3.1.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.85.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.1","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.13","dist":{"shasum":"9dc622f8f6c86c2f8e65c9773c1c4305ed144d1e","integrity":"sha512-C4e8QvV+X5uMtzF/QOYKYYAViRMeoQlwHmmriDGjTeSBOdTiv/mn1IJJ0ZYX8vf/S98hmTRtb8OiWCKzqZ6VBw==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.13.tgz","fileCount":340,"unpackedSize":1226490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6PBgCRA9TVsSAnZWagAAAEcP/3aR/ox1Ox9RWtx0Oaz+\nplYHKFS5E4JUpHJrt8cbcDe9ld+ATQxzNOT2KACQcBbRe0W3g+Uqtp9E3JE1\nSKJ0X7a9/QPasO6ZCdzEWLWo5Hq3rDQpUXqlirGJkjIwA6QWnRRdySrbCPd4\nb/LHN8koOZzsKwgB+mDMyFTovxmexsYw85dDc4dEqyt251KT6bdaVq69AO7c\nkPhUCMT9tMGmmqqNjeKCFQHH8tiDkMAPB9n8v/bQQ6TjnJqyib6rye3mZKBJ\n05Czu9bdLfQewGwlL3968CfsA2nxB0IB3MdPCPQWXlJjCJ6SA0HbTw3eWAzP\nP8VoYr0vjUyyYZXLOeta/8Vp4hGmt2v3sjeLsgcvJBBK1ef0dD6cDHqtxUUm\nQtVu5pG6hd+I2VIEQMruzsKGEHocZQsZww+Guxjzm4behYQCOOqP1IbuxB6u\nVv78QYDfDyrceryoeuPMBJhWyxVavwCMZc9Grn3ERJ+YXigHyd55cMQmL6YE\nM0osNtwmpuMrtAPiKpJ8rAH1hr0NVYncZW8YQg03WZn/yLjuUG1lht1+Z7sE\nQjeuf19ab8AWm247JS3577uRPFqzlV6yLo3YML6aaeRaT/IbHlimjfjp9P4s\nNlHSmXAuLS8iUECu4BL19Zds0rvio+pLHyNsOVEOVGTCCO+VHmO5xG+cgVNW\n5vqu\r\n=7nMY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGlFukkbvWxK7e/cwrLgH23LiJzs9vareOVhVZDSCS/5AiEAwbu+ND0uuO2lhAKcqrNJ6S94NReX3ZAu0B+F0UomuiE="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.13_1541992543850_0.5746625214482155"},"_hasShrinkwrap":false},"0.15.14":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.14","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.15","messaging-api-messenger":"^0.7.15","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.14","dist":{"shasum":"ea78f460d5909c912458ef66d5e075d2a40fe3f9","integrity":"sha512-Hw1707sqKcw4EPpgku3xCatnADqwEAZsti2hnBZBjB3pF4jH3Q+EDCXkYf7+jpYLb69obFSx/xnf5BhvYF5vXw==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.14.tgz","fileCount":340,"unpackedSize":1227619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb624zCRA9TVsSAnZWagAAW/MP/ROwBXxff7FLVicgWBb4\nOL/dfyJ1nOwQjcU5xYMnSCSFbQmFkZKh3pT4BT6zQfRxrTwRM0Uf47/95iZK\nfVgFyvn9sJgoBPQeL6YCGtFrN2Abq9GaeTUhzAzQ2H8cP6huDNU3MJhjn88X\nC7P9ZYc/YcJenV4dEBSO0kpIJ6Y0nO2JOZJ/s9YP6B2opBO30mNBVGJqM0MC\nhz1DquJAK91oC5Hpykml04q6UwnN3Fd72L2JQh8K+SgmB6zBUC0t0xMoF5Qk\nm3s8uDIroJH3HNOmPkvn/gt/R+HX0ih079xHdipsmGIkMIO+WXDEgT9Amszh\nLx7WJyWaLOAgiewQevMxDdJUN9NSbGI6O8zxRQHTtGvVfXiEHYUJxl09JGE8\nXw7zggvRkYpncjaWops42KtCHnb/d8q+9C/y7TNO0276iswdWrIpXYhtU/zP\nbPlquoIpNTaMVw01ARe7KMApLsEAwYI9ABEqYwuCVxqjE2HRRPplE+Jc8u3H\ncJJo06n/A7wYvizUNwq+lwmr8QktrEvw4z79dLEDhjXTEnGfOBVg8Hk4jTR1\n07wpqIMIUcozdlksA739k27iDeZjEarXrkNZbE6G8xvTCBVOt7OtJmRBUD6f\nn2WDIce28xKTGbtNDrod+VcaA09jIyjtECM+aAQqTULbKE86e4SfhLgvAIvs\npzFK\r\n=bE++\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5g+PSCoB9scqeqcHiM9nIVkvQYCWy0PgJZiobShXN+QIhAOlhHPhCWDKa06w9cpAU8Gz5BY6wJ+Yi8tLa+qE37ffT"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.14_1542155826689_0.8290521630782408"},"_hasShrinkwrap":false},"0.15.15":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.15.15","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.15","messaging-api-messenger":"^0.7.15","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.15.15","dist":{"shasum":"ef628d0328749d0023d3b0734a4e7937cacecd78","integrity":"sha512-gc4Az/3+v/ApoGo0Si2mHukHfUJJvmG+VluPHJ9ujeYevA1JdNRgPMBOwA/sQUXB616O3zRE+j3C/+P64gifrA==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.15.tgz","fileCount":340,"unpackedSize":1234067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCR02CRA9TVsSAnZWagAAX/kQAIITZTyK0GGM0NRglxBp\nqNFGiZp8lAb1vEZjU8LHi37uJyqeyMiALbRDHNdXKGWjOMsxrxO+qd1SeylD\nD1JCtuLwMCsnckjMsSwEgzBD8HncLu20IwP2JLOMJF/HMSqA2ibjE4C0X/zj\nWn8lY+AnW+1ViYq3NfNlzXxgaCk/Dviwrxrt2sWT85NiRJ4kKVAEZK2F5hUc\n3booDVdZzLvAsGzr2FSWrQ8lNLtZT9bBwB+IO/z7f1WfSbnx8F7QTCV7iuB+\nWycZmmmUGHrGRQd/3PmUW54zdqlOWA7SwOQfG3KQmhYufhE1mHTXMmtQb41C\nxukKWEGPWMau5PrJ+OXKqBsuOopkcNcVR0dd2wdGAJOaABYvwdm0TIAz3DMP\nxDvEzxgt29yAHapz52YmEPAmmG9WNzTf9qB/uawnPlrooLROK/Fd6saWRWfd\nubj8PF91MK13Qb+FgXJaChxp18teaiAdu7OgMaGo2Ixny3ZiKZe0Ru9sewCD\nyHgesqMvAKnRnElDZm8rrd8ABS4vpqMj9GCvDxsMLitPS6ekXJa0UmTdCDDb\neBtFQCqhhBLVlpG6wXj4mlDnm8qM8YV/4tojzjSE8UpGqjEnM7dPs2kY6JSU\nAe+yMAXRuIq8483lu/dysSKRANO4Rz56vRViWJynACSCxC4EJPhau00AyfFb\n9zUc\r\n=DzD3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfrvVW3FPAlPP0Oafp+xVPH0xqn45HUx8Ni15jplzG9AIhAMs+67SjRyKrFuWrB92bHZAENP99zCA1LoqYMdjGNlqs"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.15_1544101174124_0.2749972665694922"},"_hasShrinkwrap":false},"0.16.0-alpha.0":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.0","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.8.0-alpha.0","messaging-api-messenger":"^0.7.15","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.0","dist":{"shasum":"c0fc5c2067c1cd51dc350dad6ea33f48bb4ae4a0","integrity":"sha512-Wsy01JaV30dE+QNK7ATdmsFx2ofQEXVLGCwM3eR0gCpyLTFQkt+A/KQq59MA/E3roCrNQfJ1B3y2uXNzZqK/jw==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.0.tgz","fileCount":340,"unpackedSize":1243580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcI1esCRA9TVsSAnZWagAA0fQQAI6WRfi9VJ1/irUWg6Yj\nsHOWC6caff5jC5YnOnBLhsFf6i1Bfj3YUnX6Op2NdYSaVb+g1cHv9RAGTm+j\nS7WGRp5xX9nR0lo1VbQtsUFSWr+wHGsaNlBY+cKw1gCLDixLV0Mh7IinanRL\n5kd39/AeVqEcv94YBXrhj1hQPQgtvNm3nsDZOISKVNrihYZyNsFTU+zY2e2t\ne+Rzj9qqRhVqrJD7pEdF1pk8gsKnXHxgyC74oPRx80z/Uf02sXf7ET51QbGI\nuZ4i69MfkEY6sfzkATW3YT8kmZkgBzVfNx66F/ux+rUVRagCZsN+aTRnTZ6x\n0QIqPt8RGt8rZ+Q789aKqp1iPs6hAnPHLxtJn9RCX3jIViz2LdTu0G2OBZor\nmmpYCSK/+idgrD+zudYZylXLqI2aQeqvRTHhNHjhsNaMaXxt7YZkmb8OHjXe\nlHZwjz69S9krRwroxe0dqxgMxrdAG+H7pgD6bTIIFXCVZCe56vm4kadlW6+k\n17NUk12ar6r9K+tkVGCN8+shNpnk+OG55oBSn7eFndYaGqiY44naoPbIGicb\nHkBdDxq7Ky21LR4fY1J6h1s/J4ROIseLa/rO+jOh1xzJJ8qLAMOBQXxqkGyB\negykjj7JMD26ZW5P3toNgLoW5l1BWFMwKYA6+Is6NoGa0yIkQ/4jSJ0huxSj\nGTWj\r\n=EzPb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG5hRjNFHI7DV/fGttwiH1fa4WoNtawYAsp6OWtMV0IoAiEAmWEPi0qnbKWwLSKSPjFAeXoX2cxQyaJI348NpeFtwVI="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.0_1545820075692_0.6805708944967632"},"_hasShrinkwrap":false},"0.16.0-alpha.1":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.1","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.8.0-alpha.0","messaging-api-messenger":"^0.7.15","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.1","dist":{"shasum":"14310a358d1ffe259d5146513e4a9d4bc901994c","integrity":"sha512-uyWFhlGpWbbiL53WT/AtI6jFGvQwKXjtkauOb57CB3fg/cSYXig6tFRiaobXSYAV2gF9wqefz0Vz/5HlML7rAw==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.1.tgz","fileCount":340,"unpackedSize":1243065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcJZm0CRA9TVsSAnZWagAAQ74P/jbtGFnPZHi86DRGWz9/\nwGXDEy+xIaioPm9VX7V0ZgJdn6ryuUjj3fYeA+rE1MvcIKWFSiA4vNANwxgw\n3FbdeQUFvGNeqP+Fj7tdDVx6MvXWiU58XMKWY3jem45Df6xsYKS0DhqW1v+K\nRfmiRreZbWHm7nnqjjYBa1kwGjOsByLX5PxjNgMDqFhi6WGxVfRw+aLQZxLs\nLk1YsRQPML4S02evuBEjXyJD8bTy8pvxTNULJbeq6YNEAPtwKNoHiTEdWl9z\nyxDSBfrO2bdIP52OZH3nen0uziD3NwGDM4UWBZP/qtBjCQ13tQqtC+Itv/A5\nNXTHJRakUJQBNr1/I2D9OslH1/fR6zAoyN5LH9aZg34uNz6tch6KEWMk7FPg\nVYZPWoJE9r4ooGP/xBpdh60zyX+2bKnm9xlkXInVxhoQ6RrHKOg81uYrGwlm\n6AVVL63j+pVY466TZ2CU+7dr3rOdnRKHR0V+PT5FFpJqlumE4jqWE8OzkaBw\n0q2F0vz7nKaun3gSysM3fYKXy3M02nd+bn9NjDHja3/vHgGYb62OAmQpLHH4\nU5VYNZZmlqgK+6Ech8VwNxjXlFq1F4Kb4DrElCZcRlF8fWC8zUQ38bfvMpUp\n8jwdvTIXiAHSJ9fTcNUro0M/2y0SpST5QPENegadguSAk86GMs8stXLJ9aKg\nLis/\r\n=PGhg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIECxFadKFfJYgaDEzk4xA2fZhFeG0WhAxLMI9oCuY4hVAiEAlWJwhzdrkU2gqgg+mKD+3v8V+SXeOi+7p+y+fvDjiwQ="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.1_1545968051854_0.27724602698517664"},"_hasShrinkwrap":false},"0.15.16":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.15.16","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.15","messaging-api-messenger":"^0.7.16","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"f5795c8e99a685b534c343198ea84abf347dda7a","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.15.16","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-t7p8xw/EgA4/XN+zNLa1i+G4id1vNWegW0s9QWxr5vehZWS8OrETuO4vFtlC5Qkq6NOJ6oaFZ19S4LKP4l2FXg==","shasum":"5320057c869f2a0eb5246c7c773927915fc65de9","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.16.tgz","fileCount":292,"unpackedSize":1234208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcT+sjCRA9TVsSAnZWagAAJkUP/0HwHKWBCX29KnS4U64i\nYCqocHKETMpexHR3uJG78hG/28eOvJojxs1/SholJpEbPMgcT+aSVa8J/zoK\nlS6ocilHdP3aqpJA6U3PKWyGQgMXN7YZ0RpGrjURglHbQJfdR2DB2vDLaszA\nHvItY22fWwe8WBdALgW09cvNIvY+NcDETRpAHLjS3Hiev5RhttO+7sEhgpSU\nXSylfP70lRBgQzfmtitsk2y46R8Vcsipt3guPnxnJr31JFuo31X0kDfZsf/4\n8jephbVZrPoardLkgilgTGlG+DzAyOBKq7LlBePiH91MTdHbsnGdyweS5Apm\nlwNBx9dBWiMtjEbYo1h+t2NyctCkxhWWIAvj6V8PC9YQrUbap4OODP8JcHWb\nN5DMpI50t3pi0bd3fvcDOCCxJ98HtSbwgPHKIvJe3rOWjeQW/IE5/qElEJTb\n1aU5aBMv1OeBGvCmYhUWj4SCd7g5oXgKB0ziQGkmxXdSzmqU/VqInIoNOpkM\nRnR3eMi7wDud5IfLTZipHoNpqOuMTYJrBGXpwAWb+Jh5ooevnCxMh8bElKrF\n1xbztHrNODI9fv/e+M5ZB/UeOal8YSl+45ljpa8cEHbY71EEonOkLz0C4WbJ\nccPMp9aMTd2F3gv9F46QHk6H8z5xGb5xLD8UoKZKsU5h8gaP3zMSlldiOU2Y\n8Tln\r\n=e965\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE358QrRsuNB+4zSHh5++xG/r9QqGLWid7LmF0m3C0dyAiBfCZt8aRcia8yRiNgAg5UawsaRUJzX7Sbz3eiJ9T4nhA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.16_1548741410963_0.19346954341744316"},"_hasShrinkwrap":false},"0.16.0-alpha.2":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.2","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.8.0-alpha.1","messaging-api-messenger":"^0.8.0-alpha.1","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.1","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.2","dist":{"shasum":"27caad976af2c6f883e9333abcc9d7fe3f1083a9","integrity":"sha512-d0vCCYmFlv1tclFF16amJDLnoh6IzTzxcRqiBzNiCxDJHW1WpwxebV4kGJbhKUm8h3p/U4kwrpVeFgzcWSIm3g==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.2.tgz","fileCount":340,"unpackedSize":1243220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUZuCCRA9TVsSAnZWagAAwnQQAJSekVFQki5EHjRo5/zv\noitBSy6Az1MXnM2s4GOae8bEiEQ5o70ChRWunHd8ha0X0IyGO/V/xgUHAvde\nA11oUFkL3GV6z4x7VN8VP4/gwFJa5MWvEnsjOibUhRQlT8/0mWeN0ikTuFVt\ng4b2TNjb/I9WNuJkGHNsU0KGpieC57uwiCHq+UwhLthYxYuM5/7DbFMfjQcf\nLVWeabbz95lhXm9BeEq2V2SPCiK0fMtGgZRJhXtBLrYELwvmHEuXlOK5TpFr\nAJnJwPf8L6Sz1VL0BvH7UJ53MDUFVBiW+VmAaqJzv09CwkwSPuEJYhHSMQxN\nj+4/nFntQVHGB91fX/gfSmPdCdbVzZ0hkW1x2yZld+YpWe4JR4RXaAbmx1uI\nvoaHB07E68eHERRSrWl1nOroZUTapb7ScJ9XNy3ECcWakKYI/YMyHO41v6sm\nL+6SBGxWvUOs2oPTUzOslSsJCZO3SNG40lYDEIC5uPUk+5JgDGgmq0TrMDwl\n8qF3VExXmu94iVjIRxSczWcagA9cfv2z3AWvnfgFQwQLJpdiBl6XYX81xGFy\nIJfdoTbrKUTaC7uVP0TMh2bgThgvFauLNgxa7SaNACTC4HOvQCnpDTJOVXCB\nIv5KKriFSK1QsrKAWK2I35Fej/2sEm9UEHjyon3Ci9pOULwlFab6gENl1w24\nRJOZ\r\n=dVXB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKR/8TKlYiv9p/igYoTn5Xu26GJp9+JdpoecN0d47upQIgPUn/q80NkZOliedYAOhKZilIIHZtU255LujspMgvrBc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.2_1548852097413_0.8464639220352019"},"_hasShrinkwrap":false},"0.16.0-alpha.3":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.3","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.8.0-alpha.1","messaging-api-messenger":"^0.8.0-alpha.1","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.1","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.3","dist":{"shasum":"46b06ed25fdaf4354080fa62f009629921094564","integrity":"sha512-GxcboAczs327Uxz5Xz20ClOxbnHHHaqR+0UqNhhEld1K13cFkcQANSripuLJ/U5xFFjJjcwbIJlnmy8WSItjHQ==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.3.tgz","fileCount":340,"unpackedSize":1252048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVBRQCRA9TVsSAnZWagAAwGUP/0JSnsVAR7exfo7rpq7/\nHxBBvF8lWaTOrOebIRYiwaF9PsBPQSbnzcKKrFNke/OQ7gawltBIfsOFWR4K\ng+uGeBVwFHFBANRG1xwMObGoiXSUNjqMl1Wxro+45YpBMS12xI/M6EfjhxpS\n+O0Q/bFPDT4Obz6AX53E+W8AR9TvasGuxBsEC1l5f0Xd7Otc4pbVkvMXoWaw\nkAKiZO+ACyFCfEiJ3b/X4QKUb/cvk57wDd0G6VLQpIg0Ob+WvUMWkBjAM14N\npQdp2eR8la6dnDcH4ifZEKRxr4iS8lbekjD7iGdkh66y+1l1zukTv54Bdcy7\n/yehEdlJOOc+BehQKrdZwSbrIBk/+1YGfKcUCdqyJmXfu+PnfMlb8QpCuWnC\nTX1Y4Cmv87ptYSmtdhczgypacqgYUs+FN2U+VNhT6Sxe3xmDQ86vzrxe2oF+\nLZtuD67GXxhdxhfyRHyR3y4cczX/Yw71iZ2MrvYW3bdkqKqSSgO6S9/V8Afo\nGfmAuYKK3Tr0vY4F+aiq7cZJr3AfRtjVqZG/y2n4h/f1UGN5hdiJ1Vxv5W8e\nMgNUGCYajAG7x365IxBIGpm+dSpxU8TGIBbMA2hKlAsafuuKkYcfDpn2822E\nv6CW09BcJwRhpTN36SBF2RhXp/GEbdD8CdXXfwSdyn94ERZufOJvuoglkmnH\nvtaf\r\n=NRXh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSdeihLg3kRbSSZRuMsJ39BOLnZjw9uHSTGxtZvsFSSQIhAOvh/ji75n6k11W0ZXR1wq8qAp8G9CIUl/3mM/KWlp2T"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.3_1549014095605_0.814505345262408"},"_hasShrinkwrap":false},"0.15.17":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.15.17","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.15","messaging-api-messenger":"^0.7.16","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"b7527d2f4ee50f3395c55b4630e58ac73d8fa36c","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.15.17","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-FgvfeTOMdx2HspOgb13SM9H5jhmyFwVLIhuk/DNrhO2CCtOhcaCQeAc2syU0B8kaotqi0Bt7ALQbi4cymx7DCg==","shasum":"bf2e37dd75ff514811757168e8a6fe6726e4a5ad","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.17.tgz","fileCount":292,"unpackedSize":1243814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVBXgCRA9TVsSAnZWagAAZ3MP+QG/u3laKY3UFvQ0QNKK\nF7ptO3rG7XdjhtbMfHtqHMXqQHCwJjFc8AAgkPPyRnXe4+kdkMdNxuvC9qWp\nDROrndTdbD53cq0FVWWUPHRqM77MQYKW6Jvaqvkn5726GZssaXfhEOq/vlrC\n0xP6iDGSaqRJwIa2Rm9R49SujoCizwVYQ/lG9CW+vagIBIn8KXZJ61sBied7\nSDyBHesqZCfQ6ep9hW3MriAsfdc9KHe/fnUbhbUEnAwlWWQOyaRdeLktH8NW\nsx27GyIIunK7abLRMwQlkTua+AONgL1HK4GGEXXZfuseXNXWWOoj9vnnu1vf\nZwcbK//U9dALBbJNLj7qaT6Sbusg0fGNeFwoQYhX8qFcNivWNU3ZQ+1mbuJZ\nlg+wZeGNW5/me5tAF9XHNinfngkH7CZMnHEWwJZS0XlStYVoOFqMi8WAXrQe\njss2KjF7PAEojSN/Iu3fLHpF0OVpowqS+fNnGXyeGznJ2Ak0nd+eXyw918YP\ne6JXdwoAnG8zyK8pILzz6cvYwP+ZJM703/E7NBgtzfNRAb9ucmZBqPLWKPYE\nAUNNVNvkirxw0wX2wD6v4CA2+wH0x6H2xqj9H6gONYeijoe7ne4abYJr1JsS\nT4WCddTwPVVLUQLS1EIlDX02qjRT7o8P+NmAHbheDJR64jssyzljEi3S0gZN\nKR8F\r\n=0b9W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhaehfu0KbXbcP77ukyMSnbJLrjEev1A2jxBTaT0kkUAIhAPlSC7H+dJUC97VIi8C+RnZy0J+Taxr8TSpQzXOO43xI"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.17_1549014496108_0.8739573175002149"},"_hasShrinkwrap":false},"0.16.0-alpha.4":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.4","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.9.0","arg":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.30.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.7.1","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^3.0.0","inquirer":"^6.2.2","invariant":"^2.2.4","ioredis":"^4.6.2","jfs":"^0.3.0","joi":"14.3.1","jsonfile":"^5.0.0","koa":"^2.7.0","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^5.1.1","messaging-api-line":"^0.8.0-alpha.1","messaging-api-messenger":"^0.8.0-alpha.1","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.1","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^3.1.13","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.7.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","@babel/plugin-proposal-class-properties":"^7.3.0","@babel/plugin-proposal-object-rest-spread":"^7.3.2","@babel/preset-env":"^7.3.1","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.16.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^24.1.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.0.0","eslint-config-react-app":"^3.0.7","eslint-config-yoctol-base":"^0.19.0","eslint-plugin-flowtype":"^3.4.1","eslint-plugin-import":"^2.16.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.93.0","husky":"^1.3.1","jest":"^24.1.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^6.2.1","lint-staged":"^8.1.3","ngrok":"^3.1.1","once":"^1.4.0","prettier":"^1.16.4","prettier-package-json":"^2.0.1","rimraf":"^2.6.3","supertest":"^3.4.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.4","dist":{"shasum":"0615247d23ea8bde8b093688e7597c1df8d992bb","integrity":"sha512-5vrTaV01Sno4FsQXUEcqGJSFqL73eecQPLiYYoA8Wco5+JND61/EyUVS1afcU79Zp849CfOzQpaCpOYnULKMzw==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.4.tgz","fileCount":340,"unpackedSize":1257998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZUtVCRA9TVsSAnZWagAAdYAQAIrbM1Ayc1dyGkKMnTng\nHD7l/yzFyD8U7G6F75dMFYIb6J4V+0+51HPyzGk1tzj+OHFdgpyTUdn79fGl\n4sfBlekLWcYikBGDgFn9Fy8d3IZW53Duo0fsgIjB8KmogBzRf1oWLt/V9LpA\ni8m9GFFxTG2ptxM0EMwsyWDOsTyGk8Ie55+9CDG+RuQwIX+ZY9Ng6YiGhowe\n+NNOvhMA+GPr4iyfkCOf046YbsecUJhmg0XRGNHDyJzyn1a1LK5pkswxadBU\nnGTnS08WapmjtNCtnjFJxRZnVmq1iEDP37tRLFsObUvQ1GRN9xJDl0ubQ0/p\nn4R02wro8yNAFSVJ43dICMtbcggG1CFPZxWJG3rkzhC+z/c4IRpfPM/EpEZ0\nniMVMVJhqBqvCl1zira6LBiKshJQMvEd/FUu5eKyzUWV5RMDSjSTxHfJs8g8\n+0IdC1qb4qIl8DKdEkBySeBxZJ+ShUwXQ5JVhZ8+OFkAOYjRtZmfs7QbSuHy\nEgkYu+GeuzizI+zX0NTXwzWKWBeJdHt2MQa34kT8b37T9UAsB3NOMzmlHcHC\nTqDaBU4MVLn5ZlKEigoz6/owBOVu7DYIpWQVxhlP0ede4/KStpodTwEH1wHf\nF50IYNBdsugOJHzgOyA1q6mID/9MCi1TcZ+nUzAXKV/ULyauTBQAZEuX40II\nkppm\r\n=/5R2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGnrL7t+LXGpVMUMRhxTacSwGvWWneoZv3NApPoHgPHQIhAJlLzv/2a/1Eng5xGEIaazrcXyXJKrLDoR4c+d933snG"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.4_1550142292810_0.7052245442693688"},"_hasShrinkwrap":false},"0.16.0-alpha.5":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.5","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.9.0","arg":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.30.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.7.1","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^3.0.0","inquirer":"^6.2.2","invariant":"^2.2.4","ioredis":"^4.6.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.7.0","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.8.0-alpha.1","messaging-api-messenger":"^0.8.0-alpha.1","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.1","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.7.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","@babel/plugin-proposal-class-properties":"^7.3.0","@babel/plugin-proposal-object-rest-spread":"^7.3.2","@babel/preset-env":"^7.3.1","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.16.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^24.1.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.0.0","eslint-config-react-app":"^3.0.7","eslint-config-yoctol-base":"^0.19.0","eslint-plugin-flowtype":"^3.4.1","eslint-plugin-import":"^2.16.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.93.0","husky":"^1.3.1","jest":"^24.1.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^6.2.1","lint-staged":"^8.1.3","ngrok":"^3.1.1","once":"^1.4.0","prettier":"^1.16.4","prettier-package-json":"^2.0.1","rimraf":"^2.6.3","supertest":"^3.4.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.5","dist":{"shasum":"329f438836e62a3f581e75dec37238faf39bd063","integrity":"sha512-8sNqcUANb/mUQ19zmi9HJidriK/LuAIoMnKAdvtJl3XSrU0KMYMtkjLEaELiMNibQRxrt30Hk/sgqXnBWJ7aiQ==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.5.tgz","fileCount":340,"unpackedSize":1257998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZn2DCRA9TVsSAnZWagAA6dAQAIf7MhFRVGolWx6MeZhg\nQEABXUvaKK0/w+G2awpmlzhLq20gDBxQrT7aTBGfxDRMM8KrzDXdDR7smAlx\nN83LmaBIE9bxQ3hOK6gIt+bIWNETf9jw4T67FSGCJAWk+XqSuzfIQY3V0FGG\nBIgytrl2sklt3CyAAOK6em28uXocPbaCemcYYiUdfEQTVEOOceRWTs9eO0L8\nmmRdJYSTR9CN/Sl+JYSL1hLbyJj9sXXXgBTIELL9VAeWr2MbnnIpY8qV+sZA\nAH5y+H3M1FVx7RJvj5FkkAi51yYBWBzBqItg//I+6Tcy2H0rJqSYPdjfrc37\n/XSGME1gD5WC4U4yuqL5AOtQ97FEwBCuY9voRNdBmOB0nJ7fe+h2JY9B/QbL\nDncwbX6rQDub8dktsP++noZFJGcj7pPAVteP4fD7N7BU6AXfqRSAqNoRgR0g\n6+RJ4PUH8Vc2B9yw9TI9JYSfT6Grt96a/0XWHP/+Hg1En1/pGoN6dJFLNVT6\nlkoRF3GW0X1CwT97abD7+L0ZMFeK71ArIE695inn/rTMorIJQz1isLB1x7Iu\nZpfmRUjuf+nICcVv/yg6s/2vxum0Kd+BKrdG8zDN2BWD+Cdd7fTe5oYGzGn9\nazSu8idR1dPk38kzVle2JVoYM79U8j8uePkaGiDUv4l5QWWE5GxqUzg5C4q2\nUtqp\r\n=sPHV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG8sHL0aBPFD50DH2+V8l4q4kMu/M/pMcPh2mhaG0ppCAiAbslylqqopnXMevVMRUlNu8Azg9qa3PcM1my2GlUDiZQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.5_1550220674587_0.5627595402102668"},"_hasShrinkwrap":false},"0.16.0-alpha.6":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.6","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.9.0","arg":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.30.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.7.1","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^3.0.0","inquirer":"^6.2.2","invariant":"^2.2.4","ioredis":"^4.6.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.7.0","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.8.0-alpha.1","messaging-api-messenger":"^0.8.0-alpha.1","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.1","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.7.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","@babel/plugin-proposal-class-properties":"^7.3.0","@babel/plugin-proposal-object-rest-spread":"^7.3.2","@babel/preset-env":"^7.3.1","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.16.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^24.1.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.13.0","eslint-config-prettier":"^4.0.0","eslint-config-react-app":"^3.0.7","eslint-config-yoctol-base":"^0.19.0","eslint-plugin-flowtype":"^3.4.1","eslint-plugin-import":"^2.16.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.93.0","husky":"^1.3.1","jest":"^24.1.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^6.2.1","lint-staged":"^8.1.3","ngrok":"^3.1.1","once":"^1.4.0","prettier":"^1.16.4","prettier-package-json":"^2.0.1","rimraf":"^2.6.3","supertest":"^3.4.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.6","dist":{"shasum":"2ac9ffeb63a56654a3e95c4dd4a32d19701ba02e","integrity":"sha512-E0leyZLOe91U5RZpb+n5/2H5/n01f9dP7k5XlcRxaJiED7Oiq8Zo5nwY0St+acoa23rodHFGiQw+5IO5/eWuJQ==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.6.tgz","fileCount":348,"unpackedSize":1269472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcb8BRCRA9TVsSAnZWagAArEIP/jPFatKjsBcdgt0dmaYe\nqWEFHeB5tIppxbeChDfNX3lfWwyrtKvaYZoccFjTfCeI5Jr8u/SdFHA4dqxH\nOR1aU+q3QgIJxen56EBRAxC3Uvy5lXFVjfxB4sDg1Wgd6fkI74SwQLcHM2RT\nL0+FgooEZZ+23n7jcjAc71tW6Ki8MkqZhCW8pHRcPTZoxwlYsMN9B2D3iBVr\nh3wNB+Ts/ZD9nTTjVz6kpwAfQhcnVWFu2AXrTGucwH+EUiNc0YOPfS9m19/f\nREVgAx0oR/2sn63fCzrAljQlGbpUvHXYO7SbNPpI8BRG/3LUWS576uQXLSGd\nYgXrhZlc9Hjfp9b1xG6FUUs3zooD2QBkskrqQB0lzD79/fE7Or089L69KAFF\nBSnyL35A9xlhQh5qKe7uP0a8spFbhwXrEY5u6w/iU+QRLJ65OKTL3/bMpz/i\n4VOEgHrxVsx9R1AeXRNbKqb2Vlj/+3k0luNHbQwGYnupoXWPzx8x/95a1/bV\nqeoDvFC10uVtfh7YSv7EiZa8VPn2HCx8bAEz1XQWeUJc/8CpH9hxSeG2qR70\nHnFM0ydLBi53fe/vUNP2Fs/p2jQxYg280j1nZUFs8/4qvoGmUob/2ngpOCGE\nSQrLvTrO4UwfQ++jiFS3z1PKEMLusCuMmLH2t/mnCZGj/KoLXMim9BQvbeMk\n6Sc+\r\n=Y/ft\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFP/18wTpj8R9opot2EoYJw8tFZOTBscu4KChatuvcCiAiB9NYKkhNT3tifNvC54dX2Nh5v4jwR2xVkVZWbbAWYHcA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.6_1550827600389_0.8557022415642721"},"_hasShrinkwrap":false},"0.16.0-alpha.7":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.7","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.10.0","arg":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.30.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.9.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^3.0.0","inquirer":"^6.2.2","invariant":"^2.2.4","ioredis":"^4.6.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.7.0","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^5.1.1","messaging-api-line":"^0.8.0-alpha.1","messaging-api-messenger":"^0.8.0-alpha.1","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.1","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.7.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-proposal-class-properties":"^7.3.4","@babel/plugin-proposal-object-rest-spread":"^7.3.4","@babel/preset-env":"^7.3.4","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.16.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^24.1.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.15.1","eslint-config-prettier":"^4.1.0","eslint-config-react-app":"^3.0.7","eslint-config-yoctol-base":"^0.19.0","eslint-plugin-flowtype":"^3.4.2","eslint-plugin-import":"^2.16.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-sort-imports-es6-autofix":"^0.4.0","flow-bin":"^0.94.0","husky":"^1.3.1","jest":"^24.1.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^6.3.0","lint-staged":"^8.1.5","ngrok":"^3.1.1","once":"^1.4.0","prettier":"^1.16.4","prettier-package-json":"^2.1.0","rimraf":"^2.6.3","supertest":"^3.4.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.7","dist":{"shasum":"c67a3ced92a1a8abd2cbb52f02cce1c55b550eed","integrity":"sha512-43JxtsK1obdk4hNhdcWxTdpTSkopL6uWVaytw1WXzZZIo6vSJ+UzD84FET3UTwjQqLRcBBN84qq3GOkjuzNw0Q==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.7.tgz","fileCount":348,"unpackedSize":1269473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf65eCRA9TVsSAnZWagAAKOQP+gOFjY8tyRnNzerevypp\nk5zh0JE7fB/KM6WMgDfxhUp3AwzvEgwZ/6+aSijat4FGq2O9dnTMuEH9j5pq\na6uTmp7SiNIpZTAEQxPDmsuh+41MyZGQFTyy0kjUHiNLVGdd+zviGF+LK4v/\nkmkAlyFkhAKvBbBZg7LH8qbKaJTkusy9Gv/9Z2iapgfdZvUyLh+7tGTHYc/J\nSUbOHnjoXrjDj5Q/s/545RqZrjFlG0VKhy+PLQvikJ/Izzjds7UEM+bkjOPb\nN5W6YjaCCxI9x+NDp9kaevGHTT/3idUDR6DqHzAUMO4KGoCjQnlHx8u88uen\nGHm6YIWPnVuCXarUTvLAzxo/4P+CkxjY+65f9dTkJP3m9okd9GJjpCAhAxq5\n48pQQ9H3hoz39cGoeroFnhhHgCMHlZiBV/ELvuJDtHenEd9svWudH1VPvG3B\n8/IDdbrm6a+p3sxurOHvfF4gzXepbeLfpXUqqdZrvDT0MXezRBek66PFGUlS\n0aMUmDdGrCHnLfallfdyRUgqkeihGzpbsSUIWcAnX++j2V9V+gA37nEjoEI2\nkPL//CM2PPwDDizZvQzzLxlMoMUj9NCAwuMw2ANZSzmqZ3Aj4yOE4XZMy6qx\n4+gz0s2NhduEXGSojO0c5D3qHkfQWYyEYaB+Zsj0M+3QjJqA8PVhngnPSazD\n+QjL\r\n=wVBC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICnCKQVie+B9cKoi6qjQfIHUMpm0Iy72NeNjOTsIWsCqAiBkurmGM2s3twn5PJt5AhpF/viS7pDqSTI2B4OCbUytwA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.7_1551871582263_0.16900401927225506"},"_hasShrinkwrap":false},"0.16.0-alpha.8":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.8","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.10.0","arg":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.30.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.9.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^3.0.0","inquirer":"^6.2.2","invariant":"^2.2.4","ioredis":"^4.6.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.7.0","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^5.1.1","messaging-api-line":"^0.8.0-alpha.3","messaging-api-messenger":"^0.8.0-alpha.3","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.3","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.7.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-proposal-class-properties":"^7.3.4","@babel/plugin-proposal-object-rest-spread":"^7.3.4","@babel/preset-env":"^7.3.4","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.16.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^24.1.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.15.1","eslint-config-prettier":"^4.1.0","eslint-config-react-app":"^3.0.7","eslint-config-yoctol-base":"^0.19.0","eslint-plugin-flowtype":"^3.4.2","eslint-plugin-import":"^2.16.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-sort-imports-es6-autofix":"^0.4.0","flow-bin":"^0.94.0","husky":"^1.3.1","jest":"^24.1.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^6.3.0","lint-staged":"^8.1.5","ngrok":"^3.1.1","once":"^1.4.0","prettier":"^1.16.4","prettier-package-json":"^2.1.0","rimraf":"^2.6.3","supertest":"^3.4.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.8","dist":{"shasum":"ac26b5cb5c7e286d2f13e8340fcd8d9c957c54a1","integrity":"sha512-cHQGkULIxa6ZhoiIbZ11GbSbGMEyr1Dzu8T8gj9QUBo5jtyzDuRJgvjRkGgKsYkinzFSmuBlW97Mt6mrDtVpsw==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.8.tgz","fileCount":348,"unpackedSize":1269473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgHiOCRA9TVsSAnZWagAABXoP/3d+7rm0yZrUawpX4Z29\nl1zGaqZ0EVyowgg3n/sXuDZlVmU/l1nQVv2cnvG54RvWgSrdLZVUJahEpA/e\nBpD2qakgeLAcWWuS++zHl/V8LB5Hlus6+izw8AiIZ0+N1l3JNA+cVnGNT6+9\ngDQ8SkMA2a2RF4Hlxp2mz/BXjvbM8VKl0Ot7NWJX4rQczA7t5/SuOEIHBgtG\nRtn8Ny36vvIkymjjllO/S2XK6WCY3T+PnnLIqkiFNxyUmPleMiL3HdjRq6SX\nvS2jJRXIXbeJAVefjnoIGRhAGPzOJbCk1PtBfd4AohRGhZ+5oX29r+swwFJC\n+jyUlsS1u/NL8fcdj1wA/QZ7tPZFByQs4OfAbnv0ylNNJmjk0InmQuiQaNfP\nie/P1Pbcq0e5bwCcr++N3k+yZRLVVqjRzXl8Bd7GTEL1okv1gOSrwdJ1K7xS\nmmwwPCS7jp7vy3tZoTsYLOkVG1LCsDLWNqeNlgVUBJ6L1R3y60R/Ukf8OL5z\nPQV/uJXnITct/GGUXwv68ROjgTY1hKbqGec+M4nQ9QXck+QC8n8vfa5WCaln\nl0doMQMfVfUMTZbvm+6CpNMng7uTtozP7PGse49WGQZxd/eO4mBBJoXl8QxJ\nH8Cz/O8qESEWr43YC4QnDRqV/iuxUwkIYM7g71uHAGtbuhLi2yFva5wbHXJA\n0y0H\r\n=3EUD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEcNw7XBiP7py2UrRKqNCtZLclI4Nj4/vloP6OpRiN1wIgYChdm27ktcsP4Y0pX+nI/nQcyknLv6/rAPvG1wPXCU4="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.8_1551923341339_0.28597104095193915"},"_hasShrinkwrap":false},"0.16.0-alpha.9":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.9","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.10.0","arg":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.30.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.9.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^3.0.0","inquirer":"^6.2.2","invariant":"^2.2.4","ioredis":"^4.6.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.7.0","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^5.1.1","messaging-api-line":"^0.8.0-alpha.4","messaging-api-messenger":"^0.8.0-alpha.4","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.4","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.7.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-proposal-class-properties":"^7.3.4","@babel/plugin-proposal-object-rest-spread":"^7.3.4","@babel/preset-env":"^7.3.4","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.16.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^24.1.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.15.1","eslint-config-prettier":"^4.1.0","eslint-config-react-app":"^3.0.7","eslint-config-yoctol-base":"^0.19.0","eslint-plugin-flowtype":"^3.4.2","eslint-plugin-import":"^2.16.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-sort-imports-es6-autofix":"^0.4.0","flow-bin":"^0.94.0","husky":"^1.3.1","jest":"^24.1.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^6.3.0","lint-staged":"^8.1.5","ngrok":"^3.1.1","once":"^1.4.0","prettier":"^1.16.4","prettier-package-json":"^2.1.0","rimraf":"^2.6.3","supertest":"^3.4.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.9","dist":{"shasum":"d04acb7e585fa266de7ecb0f12135d70fd7c3f0a","integrity":"sha512-voJgnxuvA8Go7ZRgmpk6rQ+pH4w27CtNrstmKxQJn+ujWfprPlF+21fS0aJdxjr75mSJBY12jNZNhQSaWhQShQ==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.9.tgz","fileCount":348,"unpackedSize":1269473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgKAgCRA9TVsSAnZWagAALjgQAIjFHOr+IUmOuNOr1zBJ\nza6CEtmRcVVzB1nFlWJ5KUEyKLv4ZtevMlpKk/0fBY7meP96bO56LNQ/K8cS\n1g181oNS9Hc+UK0j7EOEOoJzdRDzp67WKcxtgtpKKDt4oRNQjxb5ZPRtx4Ud\npi2dKtlYNn8YYbqGGY4GZaLvvV8WYzUk6CydX4SAAw0hcsA88awy4Zw+eWZk\n5N515Q9sAA769G/pFqzc/hjPzigJtgozP4DLCUKodotwXDOsAP2bdIfXOwwE\nKzEgOB+wPAz8geGaxGk+2MLCfZ4SSThPyWnLZkFOyi2wxor+mDr+xpFOdsEF\n/CsSlr0CEIe8dfzp77wd9V0tLhj99+WfDrYGOblq6fHwo40fzeYYcIjYarmx\nfnPC5pe7BDQLtzg5aO14q9RRnz96a6CY4H+wnWdURpIuRo/vidcA9ISM8prT\nqk2MIwZawq2XZqX+7zjRM2/QspTFGteHkeBuQqt2mpkzGkUXGwQN/08qPg0Z\nJZjwAtw9ZkvPkZXjvIa3XGOX/jQD2+Ad/mlVtbglGwGKajeitsPGxUKKFdrn\n7ylEjXELieBINwVZhnQpyTS1EskAeF/5A/V8P+KuG/GXCtVb9osKBStpIAZw\n6bKuD7YksDAbktHFPzDLUhonm1e5ETgrCMUUYVuK5aZRxjehifS8KhihSQgm\ng1s3\r\n=Cncf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVNLxvUTPUAgnJoTPV73qlgVD9Hx93HGYcJDEtSd/S6gIgLyZdRiP7LTlsH+fhXwNDbB3OFu8JfsTWY8NGXTv6Ts8="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.9_1551933471524_0.6202867585710763"},"_hasShrinkwrap":false},"0.16.0-alpha.10":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.10","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.10.0","arg":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.30.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.9.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^3.0.0","inquirer":"^6.2.2","invariant":"^2.2.4","ioredis":"^4.6.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.7.0","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^5.1.1","messaging-api-line":"^0.8.0-alpha.5","messaging-api-messenger":"^0.8.0-alpha.5","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.5","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.7.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-proposal-class-properties":"^7.3.4","@babel/plugin-proposal-object-rest-spread":"^7.3.4","@babel/preset-env":"^7.3.4","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.16.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^24.1.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.15.1","eslint-config-prettier":"^4.1.0","eslint-config-react-app":"^3.0.7","eslint-config-yoctol-base":"^0.19.0","eslint-plugin-flowtype":"^3.4.2","eslint-plugin-import":"^2.16.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-sort-imports-es6-autofix":"^0.4.0","flow-bin":"^0.94.0","husky":"^1.3.1","jest":"^24.1.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^6.3.0","lint-staged":"^8.1.5","ngrok":"^3.1.1","once":"^1.4.0","prettier":"^1.16.4","prettier-package-json":"^2.1.0","rimraf":"^2.6.3","supertest":"^3.4.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.10","dist":{"shasum":"a27f25972d218c4c6f26e7ca24f5a2aea957d2b9","integrity":"sha512-M0ytWz/pbGwSbGY4DcFNTWthiED56ZLSR5PkjHkrIp+7i2Z3L+dsQrkuk3Kjdlut5thNP6mkMQf2DYlnvgI0wA==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.10.tgz","fileCount":348,"unpackedSize":1269474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgQJ7CRA9TVsSAnZWagAA9r4P/jIaaTbEkIxmxae4Bj8O\n7iKYFbBOmH9O0hs6mThNIqwYnR+oE/8Jqxfpz3XftvBozGW9COIA+oGeLXX2\n0XSfhLFDnbhyPfs9pBNkAEFo9Nokla/ArYlH/JxJNrcVXbxdmMUY8rZGyfzY\nXq9k2R4KzlpKp1FFs7EI0V7JQxbE6JsIWjMmW3mMv69jDwj5T4e9hzdyvYBW\n1JytISzigYxGPmMv0GXK8k1gtKeQQYZdsb0O3WxoADPsjFhl0MUNNDI6qRqS\nMF922TLqpaPSFh4dWYPMmngaohd3huRPK2xJSC9DVup5JEdyKrXkDA3KKFp+\nZxwySUL8TXJZej1drmH3JfMxPIRwn60Our6ZiEFnPgvLBy0M+gF+/yuOHlU8\nHXF9Bfzjry7il/vfQ3zkjBqnt1DbJxPYE+fRIiNGUltVZ6oTdl9dpjCHmAJo\naNiQkuOwFmY6jWXueh9MTje1YfBguyuM1drIwr4zoqOAZ68nVCWFJndOVGr0\npaG87i/p5CH39TrR3r/HK0UsyQMz2ydJNyT/lw7pklJBZzwPzmqJQ+5GaxzP\ncy8u+6oPO7hbhAxEs4U6ztDh+jvd164CQjhpSIc3wcdizjn2Oe7zXGLflFnV\nvCJHthtuIe4Rwj6+8WP2iU7NIeDNdKwly4J0a3mBksZSWneK1EcYZ9FSMwNc\nA03/\r\n=Ayel\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDl8TxO28BVaTsj6IWXw4h12ZynjHOd1FJMJNQu2kg/YAiAGTL0+0Od0tuf+ILN3iAnYQ15s72klIoSlhaw6cBHlQg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.10_1551958650833_0.8278666325565347"},"_hasShrinkwrap":false},"0.16.0-alpha.11":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"https://github.com/Yoctol/bottender.git"},"version":"0.16.0-alpha.11","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.10.0","arg":"^4.1.0","axios":"^0.18.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.30.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.9.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^3.0.0","inquirer":"^6.2.2","invariant":"^2.2.4","ioredis":"^4.6.2","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.7.0","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^5.1.1","messaging-api-line":"^0.8.0-alpha.6","messaging-api-messenger":"^0.8.0-alpha.6","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.8.0-alpha.6","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.1.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.7.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.3.4","@babel/plugin-proposal-class-properties":"^7.3.4","@babel/plugin-proposal-object-rest-spread":"^7.3.4","@babel/preset-env":"^7.3.4","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.16.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^24.1.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.15.1","eslint-config-prettier":"^4.1.0","eslint-config-react-app":"^3.0.7","eslint-config-yoctol-base":"^0.19.0","eslint-plugin-flowtype":"^3.4.2","eslint-plugin-import":"^2.16.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-sort-imports-es6-autofix":"^0.4.0","flow-bin":"^0.94.0","husky":"^1.3.1","jest":"^24.1.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^6.3.0","lint-staged":"^8.1.5","ngrok":"^3.1.1","once":"^1.4.0","prettier":"^1.16.4","prettier-package-json":"^2.1.0","rimraf":"^2.6.3","supertest":"^3.4.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readmeFilename":"README.md","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"bottender@0.16.0-alpha.11","dist":{"shasum":"34fc101751ad2c8b66b931b83f3c62fde7b0491d","integrity":"sha512-Rl1MXLqtuMfYT/AnbQN07aS8jQWVL+LG29JKDzIxLz6bt/XGsgj1vWIm91iSAyC2cFRDqCYmizFnJjlUmyow7g==","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-alpha.11.tgz","fileCount":348,"unpackedSize":1269474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgfApCRA9TVsSAnZWagAAcfUP/Aqc8ZLNw9ljTauzOdMm\nitqfn/OWy5AwcV4/A36vL6Cmsj0DfWQ60GhHV2cjNc398Ex4vh6x5An+Fq/c\ndAY04N2RLJBSIpFmiiIsIevK1gYrozX9sN/XJ6AJb2yMKZrx4WxyKW1f6cLz\nDPLggaX/Ot/jxjmHLGAzKIYWXbRY8x0cW6eXTZP7fx48ZBWUKzhx+2YLFbxX\nxksAPtncEtGBZ/zdb5gOSd8mk+eIXY55al8R5XCVM4ONuLJbUVeOQEvFhPx/\nVv4b5WbHo7gAbm8EPCXtX2/Yvxt2lSC1OpmigcIsUZpHDbZqbgK0RiHWkqCN\nMpi5FfOncLscF39TasHqfcKHYfNxh2ngpHi55F1W35mT0JAEl1Wh26F2ixEi\nDGqLLmB6+pJKO48BNMEuIFkT5ggAKyO3EAnwFkWHR17iu83WD8yVJCaVXJQV\nwmtvlTID75ufAEmtthvbbNcn95H4e1K1o9lZ+EMPQoPl1+T6eNiwx7tMRZ+r\nsI1lFtVUwZVo9e20xgtppahkfs6FE2DFLZbxF2kDHebkbOL4ymfGqpQ2Yx1d\niXCVcst6MMR3sdu9ZYqHKbUrbU4L+Lyuy30R36t5LUvM5z1lNVh/sUIXnhnG\nDfDVeFTvcdGzWBLEBo0gxrhXyreMogx//QE8tONvUWydp11AqhBwDBoDiGUl\nsCxq\r\n=Wer5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8y8xJN9dhBYtynJ4Y0XDmWKw1+0l9tRK7Rvfecjz3KQIgfgbumFZdNjIuMRBFSQy9b/S9kcwTay66m3RVE4RDuNs="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-alpha.11_1552019496754_0.5298071932359338"},"_hasShrinkwrap":false},"0.16.0-rc.1":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.16.0-rc.1","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles --forceExit","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","body-parser":"^1.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.2.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","koa":"^2.8.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^0.8.1","messaging-api-messenger":"^0.8.1","messaging-api-slack":"^0.8.1","messaging-api-telegram":"^0.8.1","messaging-api-viber":"^0.8.1","messenger-batch":"^0.3.0","micro":"^9.3.4","minimist":"^1.2.0","mongodb":"^3.3.1","p-map":"^3.0.0","p-props":"^3.0.1","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^8.4.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^3.0.1","urlencoded-body-parser":"^3.0.0","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-proposal-object-rest-spread":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.17.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^6.2.2","eslint-config-prettier":"^6.1.0","eslint-config-react-app":"^5.0.1","eslint-config-yoctol-base":"^0.21.0","eslint-plugin-flowtype":"^4.2.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^2.0.1","eslint-plugin-sort-imports-es6-autofix":"^0.4.0","flow-bin":"^0.94.0","husky":"^3.0.4","jest":"^24.9.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^8.0.0","lint-staged":"^9.2.5","ngrok":"^3.2.5","once":"^1.4.0","prettier":"^1.18.2","prettier-package-json":"^2.1.0","rimraf":"^3.0.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"2d53690e0b1012fd7843c48c4b41ae0943a5af46","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.16.0-rc.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-WiUn6EaZxMPOFDkhlWBV0GNKdryMpvEX1j6pB8JfAkRwt5riKsiVeWM7SJ+QBqA/shS076PEue3EPS4kkfPPYw==","shasum":"35c336b703f9d89ca00ef2d135f7e2ed2627e73c","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-rc.1.tgz","fileCount":300,"unpackedSize":1280502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZOI+CRA9TVsSAnZWagAAukIQAJOtj0fXF3zleeR1wEpd\ndrmnWL5apvUDWqBY++z2b+I0Q8J8uDFqZyuI0/FUql0Ws0fokQBvJUziIlHc\nD0r5ug22WoXYE/zeTHyk1xpBGfj85BEXDkVAGOPlyB7hPbWmWeiJRfvG/hgO\nGtJekexqjt/mnAR8mKOuQIRxMZSOSW+tvEnQTGK9+sC8yKj9eckOYrAm5NZg\nkmf976PvjkiCUDxhIOASnGuhUoBRoRdYlFUsVAn3hhLPXyJgbKVEIb+gS+dF\nyPw9YFVLXtjiUUkzmOUyAGug2GDh2RWI+U6eriCA2WY1TeB6QRHkLmdNQfps\ns6NXY2d9117xypMx6uSHpltPhhR56/D5Rmywfku7W4WBqNCAwTGCDMYQAno6\ncjEuGFO70VROtQi5AwU88pTTqsa7D+oattJ+RID7JErcvQYP3nZctyRuGuOR\nSfxTctWIvKloemADbwpx09r7ES5b7vO+5OV3xizAtM2iu8VKeBRSrudIhoRZ\ncQ37Li8ebolP1YzCQF4urdaX1LcPVvez0edFLHrZuQrHQ5owyPT1KIyrsChK\nYiO9tjj1vRG5TWbu3pEu8FMiv7TCeGhFT3WpE0pkyZY+5700dpSPB2D294Hs\nYVxsWAhsFGIAHDbC1Z2aqI+D6oo51VyC+s1txD4ONatwWZz4scRefFA5+n5c\n51SC\r\n=RBk4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHciIJ5pyPVn+1gpLEs/65fOpoggOoU2LL5ofeTV4k9AAiB1j5KcLARPJSerjiaQfze5HgmUmUxDDcv0M+8AHOtMGw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-rc.1_1566892605554_0.3495765562253941"},"_hasShrinkwrap":false},"1.0.0-alpha.1":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.1","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"dependencies":{"@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","figures":"^3.0.0","file-type":"^12.2.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^0.8.1","messaging-api-messenger":"^0.8.1","messaging-api-slack":"^0.8.1","messaging-api-telegram":"^0.8.1","messaging-api-viber":"^0.8.1","messenger-batch":"^0.3.0","minimist":"^1.2.0","mongodb":"^3.3.1","p-map":"^3.0.0","p-props":"^3.0.1","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^3.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-KEH/KsdNswp2Ncja/j2lxuqUQRHm17/ZOHXQnYj6q3V81Cf4uaGdm/udIXSQrOiweaT8nQpdjTtkp2pbEEFMBg==","shasum":"d5fcffa76300317d1ab7efb38336ea5ffc0938d3","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.1.tgz","fileCount":100,"unpackedSize":333889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbhtbCRA9TVsSAnZWagAAfiQQAJeykF4jA2zqdAJxUoaX\nUF5CYVvghM819vDdvCE38sVybJdsgo7kYIpgaZhzE54y4VN++gqyH1qbm72e\nnYaI6eLCqecM2mDwAGRWt5vlCZ8viSFd9cjEbT2CGD7abDUDU4vxNFmMnDfi\nSYUVYZWntVYncvhEIe4pBN2jauFj0yq1uF8CoUeDMK50K8UNDIFUg6IkYlCR\nrc18MFdBcjDB783kTFojzAaY3T4DCRLWMPiGjP+USTIAahrMs5KjNyXSxTcx\nvkmP03LgO7+CRvbs738hqzjJHGpFRsjkKkAMRegXefQUzHKVvG3X/v9rkOYL\nTqy4EVPp/3sNOExHbeJap97DdGunngGXwYz8wSTXQuZJrweZpu2kYmg9ktmZ\nEe1y0LVrNHp9QGb9jTcvI4slljoRikCGE6yekGG8SUdohDLPU8ZXV1zJZp1N\nItv6u44747C+l/OCpeOi75Iq8XyOdd8hkEZBEj2QcfvILalX6PasUbqkedOw\nL8gbaj/a1L3Jp6shJU/oxVM0EL0R1aOO1/o1OxknBI5tU4jCLbWn1fFyIvmv\n0L4y8xtmRvcEodIUIqC1dJM+5eIhLth7araflgqUSzZ8HGkCgzA+Ec5yWpCg\nhazeSQSMBrfdVKXWdYAgjZwXr+enbmUd8pGLr5ZVuJ/fjVh1f0LyWbqtaWmA\n1/OO\r\n=i0t4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzkIMOyozhY02202loyQplJGgYZEwQSKW422RHbJDUqQIgOtnrNKIM1DrqvxzCUZd3FyCuGMnSHWQ7jKK3YXvJ/5s="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.1_1567497051239_0.6393539829735693"},"_hasShrinkwrap":false},"1.0.0-alpha.2":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.2","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"dependencies":{"@bottender/express":"^1.0.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","figures":"^3.0.0","file-type":"^12.2.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^0.8.1","messaging-api-messenger":"^0.8.1","messaging-api-slack":"^0.8.1","messaging-api-telegram":"^0.8.1","messaging-api-viber":"^0.8.1","messenger-batch":"^0.3.0","minimist":"^1.2.0","mongodb":"^3.3.1","p-map":"^3.0.0","p-props":"^3.0.1","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^3.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"545d19570d12b0d398c96681c8934fe9b85de8ed","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.0-alpha.2","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-prxuBX/DjDI5SBzzSFXsXUJ5FYIl/0eb/3HBX2rBA1MbETPq/OglYrRpo4SBUtP92q4AFyKWxC7KMeY9wHOj/w==","shasum":"2c3672ced28e224ffc29a67119041a3c6c06c6de","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.2.tgz","fileCount":101,"unpackedSize":338517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb2MJCRA9TVsSAnZWagAAZcoP/Ahg5TizFoZtKY+w/PI4\nswm1uzPLHI4eZ2RDJFjTQb6oJduFqKW8zaGq7gLsrtKVQlpoO8t2j6zj/UD1\nVeW/QbW7Y+tJdmZeA5owhik2icVqo97v8E+pC0PC8LawN7OyTOtf+W3G5Y2y\n0rdNJJvjHNCbmKNZFF9j8mqofJ6HGQNUDlkWHR7D4eMCEbJ1SZiJJJP/RqJB\n+GLGR5OfYVEO77zRrc85RlhCpRtmNRyw9gIHdgJnAM1ao55szuFo91BsHuOm\n8e9LOtrqFfvHWa5stWZ+Hb7LhwkimLzX0w9wIRiobf33kMWFJ3odp4w5dfjU\nhrrP3nVG9WwNBt2q0C3Xiq3ZIGp2jPln6tkXqU7KZyjgQpCOn6AnGFjqsDSc\ncYsj4vnSwU/SeaZBA5SKpTXEXc4pKoRYOzJFlIWVkyqlxqDbg0vNnxoATobd\n20pu4gugOFA1w2bWw89wktlgcK4BYjgSGuzsSKdCkq1sDlfi2rjS1Y4AVemU\nojgA1n+UYfD7Kk3okCgtFcb1BZiOcBV188CoZAkEDzSRXJEpQCKt01fQ/hKU\nfY45FcbkjHyasgQ7DZPESoce2T+fyjWYHn4DGEEhv489x84xGZYvq+BJfivO\n9/zTksgEe0whJ+ygEEDonangOoJ6vFht7eJTC5IO2YvqzogFSa2S3jP2UAKH\nP/Zj\r\n=ILch\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAC/sD2pIelf7kGnDORAzIxX4qNQfabaybnHPjMWMyuMAiBpuklyWWS3JedTHcBGMTHAo0BbfeHsZ/P+L3sulbLgiw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.2_1567580937347_0.47367375459782024"},"_hasShrinkwrap":false},"1.0.0-alpha.3":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.3","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"dependencies":{"@bottender/express":"^1.0.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","cross-spawn":"^7.0.0","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^0.8.2","messaging-api-messenger":"^0.8.2","messaging-api-slack":"^0.8.2","messaging-api-telegram":"^0.8.2","messaging-api-viber":"^0.8.2","messenger-batch":"^0.3.0","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^3.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f3631489b647044ed02cf6e11eddf9efe79f0340","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.0-alpha.3","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-tTdA8EvO3RBeUySgsHqKuoIDg1yG1ZKF0NGvvrb8qmx6e6+WmsUTQ5vz1+jz70lY0HkPMRa7RwwsUmbBevRbnw==","shasum":"ca9ffd00bb4daf93a58e3649d408429933238fa0","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.3.tgz","fileCount":104,"unpackedSize":345093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcMDhCRA9TVsSAnZWagAAzh8P/0ObIWW97Vm5xu6dR3Cy\nYTkWVXrRCxh54OWj2xvLhOg5FfojPRM9geYwoYw/CWIIOIUf0Xdge4xECx0/\nunhmNpG6KN69+zoS/cVQloUDVrE89KP9KMTfyXIdY8Tr5zXy2tPgWXPhwlPU\nbbWDWxJSwDcDg8kaJjePzp2MvVOWiqDHEzYAesWBegrkQ+ChTc1wTOSJGtPX\nC8k3dltBy7tcty+bRKJAsG3x/j3e7HImRzqe80iKMr1Ask8nE+2PGmZyngUj\nPMIuvqEP5xZWkYtxbmlKqs3VzmLsER6QedMSLU0loS98DKdBCPIP3WzLsowO\n/IctIk2587x6UKq+7YA/R7G8ugSlCaB3WLBHQCrmnw8GUt8mxgpbke4mNakB\nM0paFzyYV07haD9URwGa1S7pA888pHs2QCKK3ejp737Rf+vjhfgKcJ7Agv2h\nkJFOinDPlfEljiGBUCw6JlSUuTeYHztlT4ew0LoZ5/Y9cxDIwbKA/SWOkyr1\nCy4xGkQDoz0puvvCh3YlA0p+a7gCfmU0qLCDTG4yYfFVMJTWfpQ5uUeQiv9W\nbNoXHrxZs4u/XxdJOANUlx9f2Yp0+o6wsfmGumZQq8ypyMC41AhSazD+LR7V\nDaZqRaNFDXm9aUbb4d6eMlORXbjBAHkNLpVTJwRqlQhCVqeKEczoeGsmlBhl\n/mBi\r\n=EIL1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHL3DOEfWiO79WeXKkWIsYkS+HthCpbs3QLF5eWQiDLNAiBxDZThZo606aANdPuAxuzgipmWHiePW8Zmj5VcWsqKig=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.3_1567670496958_0.8617440511454049"},"_hasShrinkwrap":false},"1.0.0-alpha.4":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.4","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"dependencies":{"@bottender/express":"^1.0.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","cross-spawn":"^7.0.0","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^0.8.2","messaging-api-messenger":"^0.8.2","messaging-api-slack":"^0.8.2","messaging-api-telegram":"^0.8.2","messaging-api-viber":"^0.8.2","messenger-batch":"^0.3.0","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^3.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"b46029b0a4cfe230fb901c7202acbc3b754ae2a5","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.0-alpha.4","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-aQO5Zac57xU04iz33ZK9C7VFBwHUKQYorTVHy5zv80/Ri1vapct5zyT8TdI6nS+PAvXhtTJ8E6HHaHwIEPpsXw==","shasum":"fee6e622a63d57e0bba90b2e6057789deb11d9a6","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.4.tgz","fileCount":104,"unpackedSize":345234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcMcGCRA9TVsSAnZWagAAvtIP/AwPRCiqmMHrB1v/UWLE\n/ox2DymCrcel4IL4FdC9086fJuc4APekcPwOp5puq2bm4BEku9trZTYlQx/g\nIBPtnLsPv5T6IRSm/kloI4SATnQGu3B082wF+4WWw/yNYTplY/1Ne15gkI2a\ncvOcUBFU7u65Bhuc+wKEVgoSkijfRPod+CHj02IacB+QLNNuQtsfKCmnfz4U\nFFR5YZdeckmSeY7bWaOCs1TwjgE2HlFSk2q/L8WWrR358qcvVcayUIr79N8y\nRk43LHqNxlsRQan/5OHcAwJ6Oee5pcNz7b/z1Ag+EJ6F9He+5KwLjUcltcZt\ndoE1gFoE+QJZ+jP3/bO7UcX5XvDnPXQCw8iEyy2byDSlfHBrIzLNcVB1vnqu\ny4MrTG2FX8MKXemiLfYD94dw5ZJubOlYFYipiquhzEuuI8n+lwA6pOUxTofk\nEwFtM15+a2vRDqIstiVmuikHbuyN7gLVqIaAEPishu2K0SQFIWDNWdT28HVY\nEqdHD7ZaiAHux6NJePfFjd4+RZa18bWcoUrPjKHPzABRDnVC7DtmbquzUbtx\n7xgSI+M6oC9F6r+eQbdrTmzaOxYoulyEJblfuzAUqfwejBSs3/eeja2aiMJ9\nomdy/2mPWYSZ5XW2o4ftxcVcaXxy+V4A2OevPu1IhtJHVbUkCWUnOhDIXJhj\n+2g2\r\n=nhid\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtnByO44S1YHVgio9FWAYmrR5ZbMrW52Jmnrf07b+zDgIgfviPohPTZHBXxUlEmL7vsgHCQ4itqfRSAM08ctXVECY="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.4_1567672070018_0.22931251208727121"},"_hasShrinkwrap":false},"1.0.0-alpha.5":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.5","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"dependencies":{"@bottender/express":"^1.0.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","cross-spawn":"^7.0.0","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^0.8.2","messaging-api-messenger":"^0.8.2","messaging-api-slack":"^0.8.2","messaging-api-telegram":"^0.8.2","messaging-api-viber":"^0.8.2","messenger-batch":"^0.3.0","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^3.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"98d37feb6e93ddfc241c80591c921bc4462dc52e","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.5","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-xKqJKqGWr9zriIzjvtwthfWSDlIoM15nZ6DIzpG2U58KQJu7SKIImQW8jfydOwJnt1ZDU+coMBz/MKEITUBV9g==","shasum":"876a61123c94129366c37775fa99ca3a6b405f26","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.5.tgz","fileCount":104,"unpackedSize":345178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcNc9CRA9TVsSAnZWagAAAa8QAJGiX6Ucd2WU+6WLlWIV\neyHzT6qSf4NMwgu2m86v13L9mkJ9NIZtWB1CIOZ2YZOMRkhqsgBwNsNepBlx\nBzclqAzewruy+ifTX4u3oFUcz57FnMGH4oRar3mmiUXMxVir2RCuSbBW009k\ndWv57nVQasUaQzOOx07+ipFdgdlfQrBkObdA93fhyjQro22dJLh0SHreOGI0\n+fpinx8nazSnSf42qyzoMSHvo/CXVbeu5XzsID+C077HqM0OPJlRsnCQHU2b\nVzQS8/fFxbagp738bTj2XhAA/rd9iqNPk7qgXu1jEEolUGN2KtGfUbIj/zew\n6K3fpupsaqqOGjjYmyu0LZMHdL3sMQpWRsHFmVbCjfryS9eG0poOkpPWoAfo\nxJIr0XMbQauOI24maXZperpWO4gFj2d3jHArZDDBxPBlJuVIH1Kjcaw+BwEj\nQ0NkbXiTjDGzKKUkxIVT+Ybt4JBHA/WUp7zzXXm8G2tD407BXFZaEBO4lwYO\nhUlKp4kaOblPjNVgwyoFyZu1cjI7maQ7xTkdI5ZhCPuOJ2Ff5552+NBJ2LFN\nbs4u38yaOOU39rlVFD7nDUgKM7ElArv6lfRqqyA+/HMgNIyaWT1PAQMGYbfc\npfHeXnma5qh0JC+M44I9AQDf0ZbPTxl5sohbk8JorV44FWzmgkMYecx86o2H\nLEea\r\n=dsZO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN4xm/0J/UyTEEqTRHIFST2Zd6+v7ZXzWiwCa/V9MfFwIgEytJHFOdD93jgh4cQktVbPUJTegkMzIsKpe4DPN0fQw="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.5_1567676220627_0.46154132225013833"},"_hasShrinkwrap":false},"1.0.0-alpha.6":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.6","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"dependencies":{"@bottender/express":"^1.0.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","cross-spawn":"^7.0.0","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^0.8.2","messaging-api-messenger":"^0.8.2","messaging-api-slack":"^0.8.2","messaging-api-telegram":"^0.8.2","messaging-api-viber":"^0.8.2","messenger-batch":"^0.3.0","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^3.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"de060acf8f1dd1a849c81779606b73096d126391","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.6","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-2Yp5CEv1PDax4IPUueaAZwYXhhfUfspI7FZo3ga+55w4nl7Alc52MIrzUhI8WNVlnMJ3Z8fKounH4a2Q+fxyOw==","shasum":"d6820989541b2b608151ceff56b9272bb48efdd7","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.6.tgz","fileCount":99,"unpackedSize":319728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcg56CRA9TVsSAnZWagAAq7oQAJUjBQE1V21EqEQAw//v\nlT9guS6cF4ojnODc4Z5xhSIGt8xa48sdF8KxGdQut0s4QSFCVQ2DV6Oav3m+\nx+kteT05WIGCsKyuwUR/V9Jy/d40t113uWM4cHTj7R9761RCbTwrugy6wuAg\nzAIqLNDbnP92OL3Yf8GiNBX019YDdg//ddalJw0YycW1fq1ITAg20+ALN3/b\nd5kA9aVHD8L4QXADeNQKpE7VhiFn1J1kknT90UsY//5ukv9x0ibyAay9gG6q\npFN6s6WLm/c+Z8pJjzifJiLAvCYxLKUlsgt9pK1Sd3ATNWvrIMXP4Uvd8rpR\nLrpmHXNZfMZam9aNoGzeKqravretbRSfXTbPRtOG2XdvTOiX8oumM+ZLHpQz\nvP+BjmmBsk0p2i91TtdF6Nh6aOpXG4J6IdBSOqArVCxVOsfnCOC1/L+3Q0pJ\nkIxHIwnzJfcWbEImq+4dRDDkPBwEg1UOeE+Y7kBIypNWDwKqAsWszwfcGS5L\ndPMQ0bEIaDaBpH6ipAhBT1aXD0CceIqRbPdXyrh+B3tkB6vTBkIid/SiBtcV\nPHmdP7Dy8PyuBtU+dcRb0k32U+gibdYLkcVExLmbsbWjF1EQavCd7N5iMH9l\nY2SBstVk/eaGRA1tHqCO1cMc1bbcvsYwk28F5Bkf3zFJHpinO8FaV3rzgls+\n/Z9c\r\n=tQDi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF6x1UgGhVAO9M48sDMpxUt5ygF+/lZS/ALQOm6JB2IUAiEA+9R8WAF+v8VReJ/LIPs/yPdqExwebadsDQUIyJFn5zg="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.6_1567755897441_0.027301039939781946"},"_hasShrinkwrap":false},"1.0.0-alpha.7":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.7","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.0","messaging-api-messenger":"^1.0.0-alpha.0","messaging-api-slack":"^1.0.0-alpha.0","messaging-api-telegram":"^1.0.0-alpha.0","messaging-api-viber":"^1.0.0-alpha.0","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"df5038008cae9ecdaebebde57a403ede5dfe012a","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.7","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-p1rNc4+Vv76GvUKsmY6OFo2nLDE+1680ed3jj1WCX/72ftacwY/sXwMPqg18EPIyJuyfyjOCD0tOVE3oC6XjEg==","shasum":"5582304cd8b6cd92c6924f74533217c9bbe659d3","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.7.tgz","fileCount":321,"unpackedSize":608624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjHgACRA9TVsSAnZWagAAvVYP/0m9YRsgGASAvzKL3BX/\nqXMX8immBeNwgZprABFerPWy/3sLhaNfrX92uT81dkIEXjdRenqOHoswivXd\nMUZIAL8LJX5eD3fLePQzF+9kNmuIvDYiqQUuBdXhk8ITErK1thacMlvdaDym\nKL0tkGlm+D/7bAfMgaf+eYSbLDKuBb/OXWvP8uTBkbiEk/JRpkgS9jQPMkRi\neblGxtvxXQvb8JpXk30JR2PWQjFtMuqJglxTl348bh/WWaImJ50PwS0beOqF\nSmytGJePOgMsb83uZ2jqGEzfRUeKFteYtHcmNm/nFUYhTVOkQnBaP5Rww0IQ\n7NWO565IUFYkT5FjH6eftR82PTh+fGoRQemo+IoauLODVh4jg+uOxRogVaTJ\nsq7c1gC2HERa/m7XXxmLatGjTSYaHCkWz5hnCaNNMRqdtPBxCxAEfEcp1WtH\nNAScj7euod7OH720R8nMCwMv1uFnUTXew1NnBxdDsMjm2MeHkH/CVXwn4vCv\nR8wBUH1lB14Q6/cI7YnFmw+wbpsWyNSchpu8w87wTVP+oDN6EYgDGbIk3ljn\nTFjeT6e11cN2TDDaPbD/z5TC2459OZT5wZsvAFIjP7hQBSDZiQ06VAYq4NTA\nTHG7L/AiVg52sPPC25yZRamSKoHguXWYRqRsTm9hRs3AX+0aPpP/BQ/eCJU8\nTFZ3\r\n=cddy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZIzHeTzwTS2fwwegza374ZYo3VgO4QuZVWurwVyDpFAiB60Ef8snMPdwn4ASt7EAA/sk1zquM1Zfu1lP08+f47eg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.7_1569486847840_0.12016737260088273"},"_hasShrinkwrap":false},"1.0.0-alpha.9":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.9","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.0","messaging-api-messenger":"^1.0.0-alpha.0","messaging-api-slack":"^1.0.0-alpha.0","messaging-api-telegram":"^1.0.0-alpha.0","messaging-api-viber":"^1.0.0-alpha.0","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f9abdd09281da2d94e8f9807b04c9e3f5d468d10","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.9","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-9E0wvqNru1112ueXK9oa45/pPfPgE/kZYJW/1ceeqRcRd3qS2AzumAsgALvmMfS71zQrZcpjtgN2FCU5wnxFBw==","shasum":"f863365f6385ff75209cea26a34d957852019289","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.9.tgz","fileCount":321,"unpackedSize":608624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjLD9CRA9TVsSAnZWagAA+84P/jLLxXWiQGDsnmEONHNO\ntk5qjdC4jCPfqjfmKR+ThfSJacS/neBzmxhEKT+oQjKyjfTWHdRHbaUaIGMy\nuzsoVmhP6A/wmXmi5+NV4hRqeTQDTiPjQNqdIuXnoAfcT+MsZmD8C0J+G2DY\nE2JNzKW/9W61HsnVzSeNxmboxcFgIignomxtHmmyjRE1DqPbL5HJMQcrnZVp\nY/bjidyGSNef5LPzJBtKCvDs86/lSZyPSCNzKKqq8bLYihS5ogJLyqWHqMex\nuJbIBE1SascuGd8Of+Q8atVk4DwzTnqelHRSvu+pmS56DNCDQh1nXxNSiOQZ\ngJh+VKA8LNOi88wUDM4fQBK27WiB7CYpAaJiurHASTFGKNZZU2sp+KQHM18C\nGZ07E8ASdFkjJr44zYO+Pda/yLZ4AlySv/IRjO0nBhSvKXg5Y2v3x2uZ55Im\n/pPG3tXeuQJjCVi78CIDKeHOH9PPruyZ3RcMtgjoZoAkGMVsM2k1y3NBsNTO\nW04aL7BAEebeT8k6fq0J0QhVZSmuzt4RbWZ7KUVs5cVP6Gn3DYXespTaQxuc\nanUtNQwDzW7gOU7nMXF12dTdSdRNhwnKosq8Skfw369y6Ag4FCu/E+SPpdVB\n5dHftw+qB22lyZSsfxUUHODiDMyHgVr5Jx2kbhYLdi6GkkzJFHeclvytOKEH\nqR2p\r\n=EUPl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfB6q4wvqdtN5iOeNC/JrmgYdUAUtJXgjmzPbzhrcq7QIhAJC/W7txnORk3vuNnkJEh8pewdwOKzhbFKYac6xc9pQj"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.9_1569501436475_0.7373127344055512"},"_hasShrinkwrap":false},"1.0.0-alpha.11":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.11","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.0","messaging-api-messenger":"^1.0.0-alpha.0","messaging-api-slack":"^1.0.0-alpha.0","messaging-api-telegram":"^1.0.0-alpha.0","messaging-api-viber":"^1.0.0-alpha.0","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f360abd3ad60d7268762530b06b7e592e08186ef","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.11","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-kHwxIIJ6U1VIsr+etvPxec21qESpYQKoKxkQGKNo4r95gY4W62YHA+0OPOQocfOUysELwMeKWf+px4IfCzzLRw==","shasum":"52447cabb2e3f0e059168adc100f7ce6e6a14bba","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.11.tgz","fileCount":321,"unpackedSize":608774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdji/XCRA9TVsSAnZWagAA2D8P/jYEOolxhgAvXYVFsKym\nYPBiTKYRglRQ1EBFlXqPnR9Io6ymyWq3NZUpQMgjdtHP75gSo9ikwtgpKny2\n4C6n/hKRBzM0EMAg0XjAluE6Jpvoqz9wTsmle+CR+/P+I62YnUrdcZiVRn6j\nL4NyguRK2VDU7Lb35SiKfpeSmL70GYPrS90w3i14gbeFOCuCrn/XKpt622AE\niVqPdr9hXZatuaY5WVIA/D4frzBssGdGv3eePZpsVqXxRyioRtZz2TffZW+I\nEatnYS0i+9ecskOG8dxan2+rE6t9RvreFajYOxPhQ584cv0fXPbykbkQqEIO\nobvgw5N5uvs8bLMc7LoEQdmFz0UhND01tmSB5ErIrDHf4cPNrskKK3dReJOG\nbT8GfAwluxGp5C2YII5YKAs3eStj5XVScLF1h5N48912bXr5js2z4RwxhPop\n4Fon/18AUsgqvp3hyFb4YMCVFX0CayGsn+/eav6A33yyXU/ceZg1rxJzBA8l\nrwKt2cdpoiF40mseqXCltt3lag0p43pzIY6Cx4c9jllrghZ90t35t8tRr5mO\nt3bvL5ltjrbQ63WRneKJLgRbFDPEuB0E5IMuLAF8pyYL+nuKvaojoP9BdbX/\nZ/8sNObIcd/c8a1tbSyt/EyDHBUM0tOQjL9pQSR2anrKm3CuvpW8IzWdJjt9\nATfz\r\n=lZ7p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA7G5GS3PMAgiaRUDa4QaeMaUS6tseRvi4iz7lX09QcvAiEAi5NDAMscy6mljP8moQVq9FR7BN+jtXkQZrmhlura2zc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.11_1569599445050_0.85074806350889"},"_hasShrinkwrap":false},"1.0.0-alpha.12":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.12","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.0","messaging-api-messenger":"^1.0.0-alpha.0","messaging-api-slack":"^1.0.0-alpha.0","messaging-api-telegram":"^1.0.0-alpha.0","messaging-api-viber":"^1.0.0-alpha.0","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"6836e96c9155c735c15d5d39c8adf99535c74a98","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.12","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-UUGyEERp/P8kPRFyPbDpbvqmIGRLt+ADg0Q9X5QxQkqTXWsiPCiXj7uCIJDR4fodhpcEgFZETkNos7l8ygWWFg==","shasum":"a2748f7af7917cd9d2e0329200b434681faecf72","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.12.tgz","fileCount":326,"unpackedSize":616080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlv8mCRA9TVsSAnZWagAAMM8QAJG+Tn3i5SoNk01carkC\nRranx0XHjham5wGt1CYU67/hTIadzrJNf7jfiOs7sudRFIUYvtTnRkRSgzvc\nt6ZKNvWNaBtydoDbGRmqsE1o9u618CqJSGCgRQb5y4rvjcfUJRuY9ftM+e9j\nXBZ/lFAUVKWVt84RjDIs1LH8KPFWUk00zSf23FB20BrvI5Y8YotDTeyqm8og\nPboLrM5DI+qFs6QyaaeXuP5yZkeaYY9SkawsJcASGEydRQ0PZ0IzCtulUWmO\n2lIf9QhBHqhXupoEANScWTYZNU5JHSIiuEp/u4/C9VjX0WtvXNm2JgLr8eMU\nmg27vA4a1pgBhSCaFYIIakqtSJyOyPOGfVMLA9aXFI9yP/bpWunMBL8sWiG+\nQKpMwyuJZodW20Vb5ZR+ZGcpDGNNCUXJA6Fb+htJpw/Bnm9mNpBDQItoAcaY\ngHtHASz2FSrx3QOkDC4iqA26pl7a0N9AoViSqUG1MjZBc/Gaf/pU9Kqx9feL\nnCMXGUpZ8d7xGFV90fDYI5bnELaV4GDW06K19BVaemQ5t4uj5AIv0YIuUq9B\n9kFxvayBD1xLanroxIFB+9A+vx7kqa9jacpSnsi4xUBbAq7BAfTJN/mQzFUi\n5Wp6Paa+jvEWDCo02kX39zyzOLAhkAreMmsrnfSll98xJlI6GAWXGaHwkRiS\nd6YD\r\n=i8MP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBW0TctAnBULuD1kWsjlpW6EaGN0GynheONGgUxqGGFAAiB0mSGdjTKMC2uAlUhqqKuRxuaPGA9v+Nhch5JJ9DZUTg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.12_1570176806110_0.1815182315232977"},"_hasShrinkwrap":false},"1.0.0-alpha.13":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.13","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.2","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"5f3c51d0c96998251a5dc86bc1a4c3eba363dfe5","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.13","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-ataasrp/wKXUbIm/4WrmOTfDaFcKJPYniF6ezORoFi5Cx7GIyqGXXEZDN4N3HP4LxQ9P8doSjS7V4unYZLHIfg==","shasum":"3287114021e53e5ffa14a128013b20f81685ed4d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.13.tgz","fileCount":334,"unpackedSize":619211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmHCUCRA9TVsSAnZWagAAfJ4QAKEApQToNqZcodnC6z28\nWGVfBn35UxsGcDzsL+TLB3kuRG5iyNMWpiFTaS2TyDLD9HvjUNOW3+PDZ0ac\neLH6eqm2OoOEcGXl/qGPD5MZa6RtTdNqIb7OCczrTaaSmD5YxlMLaTl03Jhf\nMssjDoa4aFvfsRS0tlVN8KFf0kb+4L/nJqhXAt1aeok9tQvnMPTVURqFVzi4\ncyw5KwvL+IwYdHxp6OfyY/MFovSs4dmQ6j300px/R+MTy8U9enOLuZLvrkl1\n+w1HfvjxtAE6yXlM1yDS8wM29Spu8MREEJ/Qabeu03E3Mwh3+jCTxzmGEqoQ\ntXysEfBd2HOgegu3/FuBW5rRYQbXiUMp0zb7evyqppivlgtaH3I0ADgtxwtG\n1U9dsvm+LC9AxaldCdb1ZQwLxRqHhlj1VPFnXdkzY/mx6dEhqnpd8IeMEHLp\nxDzyY7ikVVIcF2JT8OnrdvVBzjGgB2UX+PQtiEA8oj2NfvkrPcGvMIjI+XtY\nIlXbSevxD1ECMyOY7/s0wCVgs/5RmWXXWxjZl/4oeXjmbTyjRntuaLX3zy02\naNuvuX9cFM2AzIXc2bxXXf5qtolmee04rIVQ7Nk91IL1E0X6d9Nbrrn2pYsR\n+x7pyltzvmj9Gs5Dsl+UMqZlRobbncXNyk5LSfJsbK3stp2lZ86jxQG+bn28\nA7By\r\n=a1J0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDXaN3bbKEh4Q80Ml0TUsuPLcrs1YFx9CzahL5YJqNRsAiEA8MsNslLhdVocoOel5KG8VTfvUDG2X43o722lZ9ylKG8="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.13_1570271379662_0.5715721979579553"},"_hasShrinkwrap":false},"1.0.0-alpha.14":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.14","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"e3cd057b6fa646f22dac999029eb8161605d277e","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.14","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-9IPBZsKbiY0iLhF++CyGIMzuGg+pPygszlzv+0462QYoj3Xsg4r7TVFBpbBNqocQIoOcGvAfLTNVhlnNIKIovA==","shasum":"b2965c3b499e640cd38224d7efac9ad4a3e6a1b0","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.14.tgz","fileCount":322,"unpackedSize":661215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnZxhCRA9TVsSAnZWagAAHCEP/2cP/ntEvd1UACX/vTva\n3W3o3+qQ2jh5ewsAditkCKyrSqv6D0mT+ypPd25a3T67++ejB0EMhLJqC9o2\nHf2RYwbDP3CRtm9pnFPhDL5BLfonsD67rxX10Dj47bjTRn/BlmNdtYCsL0Nk\n2tC806IU2VcDgafugVLlJvbn9DRHIeG5o4ZWu95m3hIX85OgizekqwukWc1i\nkSDSc1tkIt4hMlCVJrySEienbX0g1R5ikNOqfFycDzGhcXow3b0B6qCGr3RL\nVjTHzRem+umK+uWmd+TsMvaIkplP3de8nXz46r+sOx92/dUJk3gb78LpkosJ\nEve89Nc8mW0W0/fQMdkcrzBl029OfuxvIFe5SUYnEIEo0DU8Jpu78I57JV+R\nNFaj4SbF2k98qHGe+RDGTH7CecSiNwiSJJQM7JKryrWkcRs7bR6kCWVYIQAM\n6QmZuaL92Q0ApQIX+hJCvJxA2viT1B4GHnqUyUP3jfwWzPoQ2spAXJk9vmlO\nnCgEmt2U/JP4huqgwsgGz55JuKogLhXZrghUKxuWVAtX7diQ5fyHOkkuWoAg\n9MZT3cOiaST9rjfeSTXxb2r2NczzYRowP5xlnWKUNuQ4r+Ai906hqUIHM9sZ\nb3W8jpAjNqpL+futWB2rlCNcJH4S/zTFzce5u7XpIKm+9pp/4lm9w8zWpbdK\nt4WM\r\n=II5L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCs/iCPX7WtLakjIyLEg9vN/8Q4QKDPKWCXFdjJ20mt+wIgDS/HTJrJ1U4oMOsM9S8AWRvKnIKla9BCiCrrm78/7ns="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.14_1570610272909_0.2586685195350824"},"_hasShrinkwrap":false},"1.0.0-alpha.15":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.15","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"7c1784722b744a330f835a2b4fed1384d5ec7b46","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.15","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-QkTR8bShdC4ZAo6tRKVWdr8PZiIijgSB1dIeMXY3TkQH3VAQf+Ldk+KvKT4GQjqqEyzOCl4WuORwl+6V+cfOOg==","shasum":"dc63d714381653321a923e1f358b5297ce6f4c05","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.15.tgz","fileCount":326,"unpackedSize":663185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoEWcCRA9TVsSAnZWagAASDwQAIXeIhX55x/L7Pye+xkO\nfuhcg2LXCcI/McVkQiCA+CpIy36h/Du2ad7eDSWmY6Q7bMzt5RFFEeYAfePF\ngCdzfb5CwNmI2QJgCOnz3gJWpfhA79jf2nrIBBccYixHQdIJR8MuWtBnX+cW\nXMJmSRybK8F0MqeIACDdycNUhUAEMMeRT8OWh1cFFYe8MBQp2pGlNnvB8km3\n6KVDXhVxK5IestdKr+pYb3dV/lJqBM5npMOpU3tTF8SUhcqE8lTW6qUueUtO\n4s8cglwkXaAE3Fzxkdy1O4JUxRRA5H7aD+vcL/eBs7tT3EARjrGBQ86c+R2T\n+4gIbprHxeRvJAuB7qGDr46RYAb3GtlEKTbzvN8O2NiIpwwnv1FRSczm4MO+\n0asFDqO0G2QacZUp3IA56r42zKzbNcfprRMnDZFR5XxUQ8yS2pTYXShBNEM8\nTfBWODHa4ulmDF2wDWysFi6cbL4YmHpPZiv2VACeVTC83Q21mCoh3D9pzmSL\nM6vdyMPII/i17kJdb4Anp29dY1RVWrJ2xcwBHZN0TEm9zsy+M/M3e3c6y3JO\noYk5lZvLXJoaHM9BXSAUaw6/868o/E0t5o1/nFcqXsN5Qcuxr+ZEs35qV7FY\nJCi8mYpWCwjc3aCuADVGvd5gG9dLT5PnHyA4KaFXGk3qAZM/EkezeQ2AlBiF\nosLD\r\n=hjYx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBx0YJe5c1N5wAzlWlGI/KcuySCZSwU2YKCU2WQjkZ0gIhAN6L2aKDiH0AVjI2qxvjdv+IwwlEDyutNGuEjyT1GrcK"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.15_1570784667574_0.5439977621087695"},"_hasShrinkwrap":false},"1.0.0-alpha.16":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.16","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f8b6d284f4d70d6e0d4a44ccb8aabbb2570aad3d","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.16","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-7s5CDyax1C82QhAHMWULkjLI4TS+ybZ6xy2vohtF9NQtW3BUj2iLkYP8Wcur0GxWryCKxw4XvaDHciLN+hkbpA==","shasum":"30a3e4b76d4d254f80c8eec22ebe60d44c550433","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.16.tgz","fileCount":322,"unpackedSize":662522,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoJlUCRA9TVsSAnZWagAAYVUP/2SZCl/6OHkMFSi3V2dH\npeALhMJ2Y9SAMNeScGi7RNMD7eFFkXSaTXmCnMgdgrrC2xRVKqCo+0Ti1kUf\nqRjBbfV2S5W6H6qFCjqaituABE3Z3ajQ/obErbykKIq8CTAEThWC605Gc8td\nR7gqQ5b4zgFNWUnXbaJaGH7ddu+qWRDOXYcKZidIYvgdqNRbZKuRdna5RaH7\nRHdOVt4coUar+nyFaxr8NixsAmBg3ZP9aiapkqb00q2mB6lkNEsfkcaY0jeU\nvl1kGLOV+qp/PBbvV/fG6ekXpX2BVIzhyc1pIbCSFH6YaSA6BtS4fcAf2jrw\nwOYF4iFpOnO+TYxRlPKofJgT+/tllEdQdmYJV1fXrmRpcj9LLFlFjsyEhRy7\nSTv0EM8MVb/t11itjPHTY/kwiYidVg5Wk84ka166w+QeT+xRWc26hrXs4SIX\nEL7Kb6bHTolJLErcCmOCAx0fKuRRKKn1YScx1NDQ2ZiZ92Lm9UIZwwnidu/x\nkgmmgFdPByZkKvJ26NSPosEzLrXW/UOLXiQJQ+LIIlBShruCCrkoVTQjgnjE\nsol5qXh+DagJzOUNZopA4h36au5QgdEAQAEsY0TIo17f0hOJ2TSsa4CKCQfD\nB/I/dYPb841mVI1vP0WqCF6wfYCsOZYp3r3obPmuzNnJSR6aYfZycX34QKHa\noZMS\r\n=04Vt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsJ5U04oj+4lfoV9FXt8SqUvgLRGbhDm/EiilSruHz0wIgHY+rNDhVI5j2tNAYHd54HDMdcHhxmYTHRz/Z3iSk1BI="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.16_1570806099301_0.28142188109829"},"_hasShrinkwrap":false},"1.0.0-alpha.17":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.17","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f2332d99ab1826633df82b6ec726497086dda713","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.17","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-I0QPJSfR9SplZD3kQICpgoXP1mCrk943QeKONT6NAWP7wAlPCDZ/nZSY0KLHltxmNwz9Ui4mzQNi7hylh3mjhA==","shasum":"87730c931184aac1646eea24ffb3d5824507f684","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.17.tgz","fileCount":317,"unpackedSize":661826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoaVDCRA9TVsSAnZWagAAC20P/jEHMsonmCWSJ82t4ghh\nScV+ITRg/tMSoj/jw8+0aEoEwuIw+479VncT/6GUQUqFtk6qTUUO/7By6zWz\n5UZCfOA9JYfTV3sbPZd6fz9pY/Ihw3f78wBfXnjdEHIv4dozK1x8iZOz57rF\nUk2wSX87xl8hOjITdO4020TJVCRIyKoKpyxIcPljscpfohJL0SNlW27kwKDO\n+7UxhX8ycd1GmG9WWnfJWWjVEtEPZP2XXduOkgPIGARyDUAx5FygrW65Fmyr\nloS6a6R5oHV4YP0P6wF22mgG8yhswap7oNCSyUlN5i3/VbO2R+tqAxD6GWbS\nZPEUfPMACO0noaWF7hRXGLZ3rSH9mEYjvzVutyGMr6Nh6PLKeAo0xp3yttEC\ng7M/lPRMVi4llWZ20UUitY0o5C0OJuycOoeJfVF2lFFY2gIRazJIIDLHWMbs\ngE5tOsu5ARjBEThBvKEBB0wOW05ptwbFAfk+EY+dLoAXxapgDePqepuG5asv\n06upNWd+St2qqKMdZy+DiE9cMAm7po2n7SvQ1qSQrTw8bDDdD/YlW+HfweR8\nagHDuyWqLw4qei2HaloNM9UeEnSYUsLWDtqUCqaluMXw5JZJUMsxYlpuPS6R\nKTCBKAbnQLYtBvOiekdSny1AqxPR1lPLjwleX0ElLUuyMgSxG2WykE3f/ZR4\nwdoI\r\n=tEn7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGCyry9UMSciwGA3v1w7g6Juv/tXkrNdTagmCCpn7qjxAiAhoo7aUmf4BwNjQtLq5V02IbIIGIVYdeuPyaPCoUjwzg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.17_1570874690442_0.3699619722622418"},"_hasShrinkwrap":false},"1.0.0-alpha.18":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.18","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"0510f90302243086337b45f5959632404991ee62","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.18","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-hdTEWVOeAWqpEq7nDXh1JttExBv4e0vVpExfYyCFl4Ifi7F1elDmUT9Gt2gfb9CjEhM6ykEmvxpk1nbFz8ZCGQ==","shasum":"e6f65866002020b907949db2e7078f01fd3ca9a6","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.18.tgz","fileCount":317,"unpackedSize":662698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdocY4CRA9TVsSAnZWagAA4NEP/3GpPTUc1J7B627S0lT1\nFweS+YkLyJ4A7hm3I8u5Qqfe+3GYrAlxMLV/k092kUE+p5bpjNBE9XerK/c6\nu62Yddylr+xANRiT73kEbQid28g0uTBdUzBqfM+c1mIEDiHbTREh0ZzYij3N\nVDX1X5PAjAI0e/nM+xx2pNMmJWN5tHTnPNUlJthxXhmqtl0p4ZjCx7P1H0Cv\nElnr6qxQY0FxkDRiCTpJF88WjJ2qP+9SMFqF4Zab09UhQai6J5bdxDo8upDG\nV/eykPkVeyOWcLC5+nJDdI/CcertPOZupjyrPW3Y/hx0OmnqUJOfyKMT5TIy\nZwQ3ea6AxJlwVnrozWwyPsWSxqS7fPsq4Yhj3gw95VYBA5kpdhvKAJ3VZ0Xm\n+AnW+34iySzr8REC2jEa2VJNxizFDCNWbXVD3XxrAqIystNGqydwnRcj6/1N\nKQydI0kkPP04C8egyprBNYVRzBHshMExCZsIb/5edM5nptsBN/pmyIpEhvrp\n/61NUIScg9pLTflySSCsZkVc5Bqk5M2hPdDexgJnmbGu/cdIN8JwG025fyc1\nreHrDXpC37eC7K+xY+8aSsYsvsWNXeXqOu4TABn91E56Xk+UkodV8GO7t3z+\nex2V3IeSZJrNC22cURD89cVWuTpqJybXUGB6V1yRbjFzG90cK+iQQHmn4TVT\nS2/P\r\n=BeYp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaslSmVdjrXTWCdrwIUIwp1cwaT0IHR8D8OSsrbyP6wwIhAOahXcG9b/8Rqkdftz5ruOOP2j00yX6/kQ2ee37g4hpN"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.18_1570883127641_0.9865534135801983"},"_hasShrinkwrap":false},"1.0.0-alpha.19":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.19","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"81f4790c18f4fc90840130785655aad22eac2e12","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.19","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-cogC8zv1eO6qk//tCS8NdHq5OlN6QXA/Ad8IpqaCnnu58Uwan41a5RRWzc6rMdvDFfgXaND/85dirv+oYM+sUg==","shasum":"9e016effd64b58e3b4cd5010addb51ac701c7b7a","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.19.tgz","fileCount":317,"unpackedSize":664034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoxpdCRA9TVsSAnZWagAAGkgP/3ICkAPbyzU5NhvBhi7e\njDPSMZSP3eNwz9ntjfoyy6CRsoCsgEHA8VFp5xYMX8LMz082YFymYqoodX/4\nRDwb1Ln37DOSQhhOp6BZfmYKhZs2YLnkjXGK539gSXFVTRoT+c9OSG8fjOSp\ngqAGuuhDuIXIW1IEL83COetNxzS/ZrCItoFyx97Xj/wKihKNpEo72iKqjjwp\n/Bnu8d5F8g0yYP+L0PvK9Cl8I1JgLLKUUS5Gk29Wbjiz3795x5mrzhoXxB2y\nkkOaI9itundcrI+Mm4XRHqPNgW10/ZeEZ4k4v+f1a2suio3xDCCQ1S/lyOq3\nUtUsjXasVnZawcdzekYiEby9/bK6SygwmwclpTU3rA0w67lKp1czCHm2JsT/\nFQx66YnmH3gPVUefnEXUu9J3enp8B9+wF0tBpRhRsErSKN6apZ+lrjoWPRTI\n82k1B9sOI1CASjlvo9liPUoeNvN0JYLhDeqpPfdzTT5vbm8Hxz8q6yvAg/bK\nhOi88/WqmqwhT9ydnE6O1Xro4PsJVxrmyB3AOloOf+sxfqjkCl0zP1lFzPXP\nMdGsg7aMo+muyhTWIbHZ6nr6Ka+0dUA2O3BHh3ViNxxdc6YjzPi0+JbRt+PV\nUqqCk4QXF2sNg7pe1rw4B9HUQEDkdtnT0XdU3Axm/zBfYR1ZCq7/YL7H0Wk2\nREX5\r\n=9LPP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF1HFbBD1koawUaw1mePsb42u6XirnliCE8zLbdoa/PQAiBZk0zB9p7KPJopPulORyxSahslesnpXAvjtFSwQCzoIw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.19_1570970204682_0.7679481782922415"},"_hasShrinkwrap":false},"1.0.0-alpha.20":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.20","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"10322ec5885d00ad4007cc86c0ff3fc91785a88d","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.20","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-fNv3Jzm+3H9f+PYkwWrtzElZ5H3VFwyp7cXJVllD2/147eOQF+cw3Ep3LQRpEzLeZrGuiF9wqeoB4KbDj/i6TA==","shasum":"8b1f013cfcb7560b714275abe2d4d52bce939a3d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.20.tgz","fileCount":317,"unpackedSize":664134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpJebCRA9TVsSAnZWagAAUp0P/08EposUZ9mTXcqC0bjT\nRidZ+VsTMELi56OgCz8c8mtHKdjEYnmOHmh1Twb2SHkWCo5jDCti3tvQHdut\nKoT8WKZM83yzdgcghOA1lFDMOMxwh3WpnmAcpO0yi6FzeVi4MzRfJv6hLTrd\nTG2IIEEJoN90zxcaSYGXLtF/BXSJcAsjyxhydnCFsN+2yd1Vxm8J8wVZdO8J\nZmZr9y1LiBDQVIwjfNGDRpcQnQ/ZagtQnXPi9ZGIS7QdALnFBXP4qpEGiKD5\nCOd6pXNoplteD85aa5veyuxpTPzOZR+DZUGwvOBt290gLTqMTQ6ECPc0asmL\n1dy5gPFyAuhy/5pKh+npHk+oq6KkdoUsD9nUkRmtzzuYogwiTZStDN36lJf1\nQDRtv/fh2xPqejhCAnV0gUSSDlo95nZFqJ/njL23mp13VszHGYyAZD4k+kf+\n/7wGsN3kpNYbA481FomO6gG4s2msGR6iRhKNIuCHQYHI7jxclSuZug3QmKNz\nkTzBAf4EYjq4kcbMjel0FbYdJ5hnU7hyILdirOm1U5QaybVyZPfrJpIZpEd3\nBicUCGDHGbB7DCT/Q3hTQtAs3RVzWV/Auiv/6zkAKhhhqYLOxRtn8bqp5nqH\nFs7Befxn8cE8uT+7IRUghfBe/M/wFQb+ui2yQPO7wnatnSfpeRJNqmEqTnjf\nH4qR\r\n=NGWT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5ISPFdB1XEnKQ+/YeD8XL+WoHUixriJRDTmUB14appgIgQpnbDrpgmQiMC2jQRX+OiTOLWc/bvpT5U6lPEwJxOUc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.20_1571067802759_0.275854184760733"},"_hasShrinkwrap":false},"1.0.0-alpha.21":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.21","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"ad03ee638ad08969018f5bd65b93cd46100f6787","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.21","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-EhuPNZDxcYXUaODwMmluOhQIoZetfPknwgHftMDNU9Ni71J8uM7NzdFUEvGSdfit0SCUTO2kbgDd+ILBMwaq8w==","shasum":"993cf7b91ab808f4b5ba2ffb1e706674482c9771","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.21.tgz","fileCount":317,"unpackedSize":664482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdptI2CRA9TVsSAnZWagAAlfQP/08Je3NWlPaKzi3WyG+e\nh6FZYRBbrp2/VQq/9RXSFYr0C/JKqiRmse+1/CiOzrDS/AQwzq+fMzy70OTJ\nF+LSw6BIAX6g+NW91atmVyRoeRKwCwyHpzuDV5AnGNs0Fw8c5SrugejtnDhS\nb8IAiyAi9qjeWco59rxerpSb3NvSKufelChSDmSgj+6+ycGBumRn0ikfYYSM\nNZDLRFR1jbjxJ7rx24ru/L2SQRVnKDj+CblT3JuCSDHfJwCwa+MQZz+7u+pj\n9iHhYHkgF9q+NamnOkuL3HQmnfAEbBS0UMjQPh/JxPc/61fUZZP2CtBFisEn\nY73u8Zu99wCBmCgI6UKSK6Prip3m1RwRTaz17phSF3YXZS7hrnwQS1HMrOEC\nU2cEPTs3JvLMICieiP6M0n3F7ormu+UlulvmgLq1IYfAkGh7AQhqEko7dJj6\nGqh7pUzVhG9lznCbWv+jwlTqzYtAaFYhIP3z4G0mQ6QhAcC3MVR6Zb7E1bKc\n8f8pE/HVOerkT2rOuJNKzvGzjuZIhzj14UM8n3xHNb76TIwo37I6cZwBf/R/\nYi5DGAYgMj8arHJj37cmPSmqAlz2FrJH/YNDVCgfM+qo3D01z9/zJ+5EgPwU\nczrWrprMIkJp40h260soQWDGqDE3Pl+cAxf/cr0VK90CLuLb75gdQL3C4nf5\nXCBZ\r\n=hwOO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCruHAwsA6/Ju8hdFyHGhSdbXGv96h4cCCPtyP6ps8jZwIhAJpBe2J4miSiF6ssrhhmw1IFJIgrX7Gn58YZjjnwz+zS"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.21_1571213877769_0.8874586417250538"},"_hasShrinkwrap":false},"1.0.0-alpha.22":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.22","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"425ffda5ad0654ee7de9a52593ec27ef7246137b","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.22","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-jY7UpVh/EvyRnyTDujrT6Bu0z8ap3bjRmxUm6ivV/c39vr/B2+0rvJNptCu1N0V0QmBoRSdCeJtY99pZZeVzxg==","shasum":"88eff7a283d6255eb58cb54277dd1104efc581d5","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.22.tgz","fileCount":317,"unpackedSize":666469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrSwDCRA9TVsSAnZWagAACJgP/RwTRh172uYB2OmQqgZo\n+cGb7tljcxp1KuFt1aVLAyodxYMRIrTGtQXvnQJipvebmZxGrHFnAnQpzkdR\nxwStmMbcHye9QW51nfMK2XwAXx0Q4d0pJdeFsMNUKWuaAMVhPEXvoVQdbEN7\nok1WEZV9v1tX46Z2cr82cMRuBSBGNk9VtcwdkUH8w3GIerHYfkm0gNcL4rS9\nC7ouUGpAipIiRCIn5Z4ptEHUUVyVwr1HWtwxpKvCkE9sW1D026hmkBgNcoKd\n4YycSlapxGY7E/gY8CrDb33lnIE7OdE4OyMSaGY9rdvs1Tpf9grcUNouGexs\n3wWJwWP9pgGvBt9JtWEumgM4VEAGF1QFyCjq990TaMLsbU516G1s83/CMY1L\n9kyO2OIRWVWGbx+7gnw5MsmckWEs+LlPDvN7fh9ZXs6zxRmFUBqJkJnDzxYt\nhpyDI9VYj4+BqWmkhxiNcW+HA6PMINfEsQzZnsn6X/bv+Q6A2IrD7a07H2ak\nhzz2S6bg9sFVykyGkpwJ9vOLHqGJrDC/uXtBDwovNvvTfYwYeT2KsOmc0DDV\n6G+Rd3gMXRSEWVORucsECNsRS+pb/7s3InDWvQ+xtE788I1HRY5Y/S8zTUr9\n+9QO9Ok6HGVvqOhvbuEqtxDQ5H6v7YnuiPc+sAFfA5LBT1jasOv9IEvkQ7Xx\nGn1J\r\n=GQgd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFoi2Ia4jlcldWP8m9S6x9eMMbW+fe1ebck5D1O7xW5rAiAAgwoNt8X2HLjRLEiC6d8barB4zaY3XIVPbYAj38B0RQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.22_1571630082655_0.4873329032898246"},"_hasShrinkwrap":false},"1.0.0-alpha.23":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.23","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"e5361ed405d67996cefd043fd66f19b4f547ebea","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.23","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-LQwvtVqwU82HnhorJFSU+3NXcVkhvoBxRgQDbXLb3rjR79NMAW+87Et6PJZtWvgvq0sQ4LDcisJWkEptxmXVGw==","shasum":"3d9240df697a3e9b01033f887fb78a2a85daab89","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.23.tgz","fileCount":317,"unpackedSize":666608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsdeGCRA9TVsSAnZWagAACU4QAIxLFZsmqvILQUs3xzAC\ng4p6EHRQgoZrJVCWRlotDrTObMwGBAT1b+QfzqkReS4EMUN3Y9AIPyhcevaP\nSQOB6vi0rCk5y3RHJawjxBmJuvj17oxjsYs2v51fTqxNuMVqbx/x/t3033Nj\nn3km3Clg+saXLBfahYtJFNAgi5jdzUQLM8dCx6rVg6D9n6I+zSfDQMzO+drf\n6uvrZQorJ+PMfPQP6602haZ3aDlBcuaa2WtWWksTffy1x35QwMG9gLA7Ipkm\nr4QBhK4TvHCXRwKiG1aMBa7SthT9sfK/NXuQiePIUc6YwtLVKO+AF/mw4/P7\neyOLqNaKLW7XshKueOSi8z0W8UY90YEJCT7u/FEkd9s1Y650Ulpcd4wBuMkD\nCTgapV5qaIJuGQI+vij+foQgeU9r48f6N/M6G39W7MWhnHdgpxey1siTHuZG\nLZ3qQHIYBDTlbQhxInDx+S0T/Cwi/oh2IiIUFjIpBWAnWWGPC+yV0vSHW048\ndjjS6IUXKi795rNvcIctAVLZiiSYjA3/iC4YGIWcFuzZFKvAVr07owHgywWa\nBzRmg/oWi0Xo77rKLoqPE4HN148MYtFq9rDVCL8LuGqZzkebXThp5U139Hh4\nVfRDyIw3Z1X0R+NPDwRLVkBAtPUWcRub0CChSJdJ+qD8OWXyO/me6RevhK+v\nLu3a\r\n=EQKA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIARtXUskY9rtrtiiGBK7kUUSCNeJd5Dw4j1005+cMnL1AiEAvOOvCAu13ieVb2gUWaAnY6dmHG/kCaoiJlcrh2+OOnk="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.23_1571936133558_0.5573568290082409"},"_hasShrinkwrap":false},"1.0.0-alpha.24":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.24","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"cd00551358d5416dbb5dc6b1c1819723a7d06fe3","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.24","_nodeVersion":"12.13.0","_npmVersion":"lerna/3.16.4/node@v12.13.0+x64 (darwin)","dist":{"integrity":"sha512-8C0n9MfA8LhJ/Eshh2ydgPtI2safe2Be8Km5Xf16vGlqZPDk3rlTv85Qpoju8oRAMZPtIeXcg6GfJRVNxf42nQ==","shasum":"c7233341e32c5194cb0d7f9251594fc687f88660","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.24.tgz","fileCount":317,"unpackedSize":667334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduaTNCRA9TVsSAnZWagAA9f0P/1HD2wyFyS7LdanmrvcK\nMM/xgARm19VDnGenp6NC0jnzltFym9QayIaYQ0+jhQOYMcoQOZwjJRCYZtVV\nW7k8ogN05pUpOfECWKNJCfDpGVgmo83wiIjJ5IQhNFlT51q7gHvtiGmtaUyc\n3NVEKobUYwxKe0/MRaY9jk6C+xhoL9X4nXI3ZUfUIHMLG8YSjdbztLcxFjJj\nJVooVxmx40EgfORt8Qh+gmujPKnVoMb63TvMXYIpeukiUopC0r84XLYZEGT/\ngDy8X/Mir52hX5MqG+cxZNwLYaf/Ncfm6mota0HZrMh8zAt1mb3pNPCY3LdV\naHL2esezR+m73TNNMyWf9QMjlLW4BNYyY/Juqh7xJ6ICDgG3RNz5HopVZl2h\nEOlIMyIX33zbUrdvn3DyVDAOooAfANiQibi1Df1x5G8+Va2/s61E3HQAsVMh\nq93S6g67WlPXSejTWoekzim7n1xcO+vv8R5QejlH5BZTFFPKjZvdknxin+aL\nfYDM6ML4wgVg+wrLHWdqe3BMbgEcDUxJ37VQpQJ7DqWOQl7D50kuFQcDrgcB\nYbe5WOvBWLXD2rKt42W3+ntLCq+6fp0mCws0iRInrInJ9Bajd8Fn9qWPyIZs\nGCdXMVtHoAtQVNg4V7+yB5Z1ZA4CSSJ/4/4lj/WJ0Ur+P6NXag/pbIOQSJju\njQY5\r\n=3uGT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDCWMbhPsi9M8oiEg4oF3y3KWXusYHvP5BELn2Phwi7BAiACSQN5p9wTLOomB4dsZSltQcJcKI7IgY6RmYbnFHoTRQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.24_1572447436679_0.9831761602519411"},"_hasShrinkwrap":false},"1.0.0-alpha.25":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.25","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.4.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.1.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.3.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.2","messaging-api-messenger":"^1.0.0-alpha.2","messaging-api-slack":"^1.0.0-alpha.2","messaging-api-telegram":"^1.0.0-alpha.3","messaging-api-viber":"^1.0.0-alpha.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.2","ngrok":"^3.2.5","nodemon":"^1.19.3","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"db7391c51c6db99e4a0c2c72168986d942a784ff","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.25","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.16.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-rsXkEoNNUyQQvC2VvYQrJVVtY0fmSlW0ICFkMymtgUdWdWyrDLYVqAJqWz+VXkJX5ZODVbAHzNsBMon12aR64w==","shasum":"072efacb57e7fb439e0e0d4aaf8a0b5ad83308e5","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.25.tgz","fileCount":317,"unpackedSize":670773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxDisCRA9TVsSAnZWagAAZP4P/1l7bQuvdoJSnv1JnVMo\nBlaDIt5dJgrd3v7yhWKv+FB2dn6ggqOWhu4G0YqKP/hxB1GDnVmhKt+Dz1Gh\n5GrM5kPjEH5KWPktE9lcOT1ca4Hc2Cl7mkILDql3gIzeltJzbGi6xHL42zpz\nk8qSdqYXhR1JY2R6tAIko3ouEjk/CiYbugOvBRDCBxR5DzGwxt/5+0UTuy/0\ngXhV+2bGWwpdhfE6q3vDC90LdY8IJJpQE1X1Q0fSIiZdEZ41delQYqcZ3Fh2\ngUW1LBVkdAAaySVfodRo/E3cmy5Gs4Vk98MfN/OW2hCgqku3BFSrIo+cpdO+\nDIiH9U8D4zfTk4apLakvIiGOc6+nQpSgz9yEtMzCp+GCvymCe1aJXnPMzcTm\n7NNXaJrbnrMN/r5yLJlEYGuDQTCKjlOss43ZVUTG2aBdWb9AL9wsMOiyOsK8\nTcTBmW6qgpXXwW4wAqSjWCUlf25sFVzFx8PD6X/P7pIHlEZoilenzYEF4gR7\n5qKNG6tNa/LN7lEOOUb1K9+QA9Pc9w9ViNu3l66pPxcNfYLIPQOIoWVxcyot\nYicOFMJVNFjhNG0a7FKc25878OAdsCZDVpctK5io1bo6nJpssK4bjdr2JYBP\n4QaGOpu9gYCFLb8aERb45YTfOTZX8bWiQ7/4f9yRz0FnQuzopDHXaSG5kLUY\nwH4u\r\n=Mafv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHznRXwdmpH7yzwEdEWzqqlcIMLVIARfsCTpHh/MIy13AiBgzr05SJxw2tQlm1DntA4/B8z07UV6naRVhxAnmXZCdg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.25_1573140652222_0.9486345510775747"},"_hasShrinkwrap":false},"0.16.0-rc.2":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.16.0-rc.2","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles --forceExit","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.2","arg":"^4.1.1","axios":"^0.19.0","body-parser":"^1.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^2.0.1","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","express":"^4.17.1","figures":"^3.0.0","file-type":"^12.2.0","fs-extra":"^8.1.0","hasha":"^5.0.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.0","jfs":"^0.3.0","jsonfile":"^5.0.0","koa":"^2.8.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^0.8.1","messaging-api-messenger":"^0.8.1","messaging-api-slack":"^0.8.1","messaging-api-telegram":"^0.8.1","messaging-api-viber":"^0.8.1","messenger-batch":"^0.3.0","micro":"^9.3.4","minimist":"^1.2.0","mongodb":"^3.3.1","p-map":"^3.0.0","p-props":"^3.0.1","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^8.4.0","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^3.0.1","urlencoded-body-parser":"^3.0.0","validate-npm-package-name":"^3.0.0","warning":"^4.0.3"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-proposal-object-rest-spread":"^7.5.5","@babel/preset-env":"^7.5.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.17.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.3","babel-jest":"^24.9.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^6.2.2","eslint-config-prettier":"^6.1.0","eslint-config-react-app":"^5.0.1","eslint-config-yoctol-base":"^0.21.0","eslint-plugin-flowtype":"^4.2.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.0","eslint-plugin-react":"^7.14.3","eslint-plugin-react-hooks":"^2.0.1","eslint-plugin-sort-imports-es6-autofix":"^0.4.0","flow-bin":"^0.94.0","husky":"^3.0.4","jest":"^24.9.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^8.0.0","lint-staged":"^9.2.5","ngrok":"^3.2.5","once":"^1.4.0","prettier":"^1.18.2","prettier-package-json":"^2.1.0","rimraf":"^3.0.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"gitHead":"fe217f2977e360cc499c341d074dcf3a7aa53771","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.16.0-rc.2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-44Zohny0CQEOyIMhQR3PzEAqAWaO6AnT0IfTHTznyhD2Eba9fDQ425xsX2Acv39DxVan5xrmMxrt/josLAljig==","shasum":"00bd651c229a8d1fc8b88e8a007da9529e64859a","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.16.0-rc.2.tgz","fileCount":300,"unpackedSize":1280551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxOqBCRA9TVsSAnZWagAAWd0P/1MgKOIWIFnZL6Lkdt41\nW/w7s20UmpzAyYomjvUiZCtTI+s9lAqV1Bsxol+NgnN1uH6uTN8lRH7bXoft\nhfQgZslceOpgluPWEnuF7Ma5LbyZPMSyofVMeh13/bSmRY4BHHixOkPMHD6u\nipwnpdOvPo4g7MiuaRDpfr8UP94LLLs0tijmwzPiDq473pyWowPy0aH/2VrC\n1YZMR+nFhfIAW2GDF6CcYCyT72k+c8b5BkvmkCpNdtdeExnXOmppvLz+bUyG\ncgiDcjNc8L0PQV4aBqgmtUKxeJH718kx4z2LNx8HycA8agbZd66rcFb/brez\nUHvrxjFdhewKKXl2YnwEIEbg19/fUnKDjPSbblWc/UJoC4TuCwuFKwJ4FQNd\nLo6No24v1mxBA5mi48XVWMgkzuZToiA8I+1HykfyIxFoiU+TsXD2eEUisqIQ\nzFLxU8wplpvjYLDnZxkW1NKbGpQLG1CB/NLjcWhEbVmdJC1SzOycHRbiBBl4\noHOMdeuusLg+KZRCJYFmThGcq5suDecrvwE/75oyrvaPHbrGqBX1se09KRRW\nT025k+xN/mqzvh0v3rP5WYP4AYPqPwr4u4rsxNMFoasDwBVdH5jMoVIM0LFR\ngitbrJTRIFP0ALCMCsFrCicF0C0NWDrrdBSqtxoyMtXysMKcMkLXczEgcs94\ngbaV\r\n=bqsx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuslt5vZVnmF5Lmo6DoZYK9FJ4Gg04YxNq5TF52ZHQfgIgC7QHVHNOXYWxIFk2prEGbSiL2peqy1r3j+gpB3souys="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"link515","email":"wtflink515@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.16.0-rc.2_1573186176839_0.8983566302864852"},"_hasShrinkwrap":false},"1.0.0-alpha.26":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.26","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.4","messaging-api-messenger":"^1.0.0-alpha.6","messaging-api-slack":"^1.0.0-alpha.6","messaging-api-telegram":"^1.0.0-alpha.6","messaging-api-viber":"^1.0.0-alpha.6","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.3","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"c6aad0dd3fd3869470bf7619881f3d1d521e381f","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.26","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-5bDGSkRoCAho4wlqf/wJM6mUw4VYwMavykxPTDdVTln3MjyeoPrc8yyaQbCi/NaMerEkf9JMtvazemNoJ3XuuA==","shasum":"e65d0a72d0232302eda4b2c4e8d244adb14bd9ac","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.26.tgz","fileCount":317,"unpackedSize":672839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyUvaCRA9TVsSAnZWagAAhxcQAKFKxzOLDTRVNvkZlJTg\nMc/tHiONGQqF8y2evnIE6vSE9nryaXxpyMkOQTlz+3y3I2felVT0Bo3TUPUg\nOoPZAuf0YEuvbvM6lijCqbfUeGQoNyAOaSkWUcrSf2Bz//u/g7AbIfath/Oh\nFG6/E+6zJck6HI7gok6n6dS2DdgtM3h28/MS1blLOhWqU0+giIANgQz/bXtO\ndxn9vsYqyMYvPIYGN/rx3j6+JDyVov3t98fDk4Dbu+mMqNrgH8OWVN8eQuZv\nzyb9siIyN3lCC6b8tBuwX5vbgjtXMyasHKtnHxhSHLxOiHiiUkt7dzWSnmge\n3dvaJAa+de5mB08zUkjRUm+9tt+aRipMdwqTjpgmp5GwFcaAGZRu0xc7gpKk\n9Gy/vhj1oGMkMw/kgPS7BxCuBIyPt9z5QF9UCRYtjhwBl7wZvV3QQuHlNWwd\n46DrAllnRpOjv10st8Whl45rgpFZfATzkz0A6Eyd7J12R36xpfEc2FPZEwOx\nHUju0g07qQiChGWMO4AVIm6W1xq2HgZsiApsnDJEUgUM6YKQ4O7sQNkbAcrL\nZhJkyweilH0tGscaawiZjekdu97RpOaPnnHwu/7aThXFxQIlGVGmiOEv6Y1R\nHflUU+kzl4gbagiGEuia6uHuhtdINvDIjbxeLL74K4V38rNPXivhFoiVJSdS\nx1Nb\r\n=73rX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4VAqQflfkC4ZkenLinxWYkjIk40Tfpi/hW/SXMClc6wIgQ9kSQwPPPlUuqTJivoB056VYF7TRpEHLSkWWEFKP9oo="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.26_1573473242533_0.7327551377125721"},"_hasShrinkwrap":false},"1.0.0-alpha.27":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.27","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.4","messaging-api-messenger":"^1.0.0-alpha.6","messaging-api-slack":"^1.0.0-alpha.6","messaging-api-telegram":"^1.0.0-alpha.6","messaging-api-viber":"^1.0.0-alpha.6","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.3","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"1cd66cc7278f5049e695ac7fde88fed3dd3311d4","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.27","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-U01jqwg7/VQ1OdijtBQO7qbX/cuOs3jIekAVsF9Ehynweo7H1qk4I84uOJMlqy4aZm4V4CsF9jF5cdu7LqkX3A==","shasum":"0ef2f01d5a10f6015cf232ffe573ed70a32cd606","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.27.tgz","fileCount":317,"unpackedSize":673179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyiU2CRA9TVsSAnZWagAAqcoP/3cVfSU7BoKJl6lAchU0\nyRqMxiqrbApuWoXVeY5W/oIHQoIehGYJg9pmnc9m99Gqxa/C1ak3zK57sTwF\nwaxMy7Zw2n2OoK7DrOLy621bjddN4HTEKSdD50Iq6jJEVxh7PFUI0csFZMJT\nryAsRqfXwtbnyzKF1FcFa7Q4C3208+iKMzqvb6F1u0BNdw2P9fcb1cltrzEF\nPMIs+XmpGoGj+VcCamSK1Qhtn3ASznYoeA76EGs1zGQ+9ZAEC2TLRAZPYH/c\nHnhgqUrSMTCSioTMSapsYTL0h3DaFOddZHrK/PHM7mTeduqg+J1RSSSyFhDq\nNMldKCsXY3tNxuQpgu327RSINkFTUotfZagOsPtEBncwwUkf0n0jZlvgQRFf\nNUMHWHje1wBHrmFEoTplLYUtieIYqQpxkQKkGHAEpMnWgQeoN0AQGdOvE4iG\nobdWEei7YI/OyrMFBAfB+IbJ0XiegtelXaxxG5nRrUr52haaLqOTDZZJU3aa\nJRu7NUEoYquC1EsWgkmR/OcqlGmM3D5a4x2+0KbECIpxrGy4MbVYDUwyBByz\nfCM5xN5ua8OKR7fx1Tv8oOGnai5A6xG+Ii238dQnymOnXFf83NvgAB9IxBwi\n1EZ4Iyj0suPQj/PM2qKlfxd37zl3h2feIqT2WxIV9aVz/zDXJqB0Z051ro75\n7p9A\r\n=6AYt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLp/gOxrh8yd6qwKPGMt4nDO4B6yiYQZjwg14f9SYb3gIgBxxMZbpWxmmdj05DAf4Ec/tsO6uVpDy4ulqOZVH2e4M="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.27_1573528884892_0.5274020887153315"},"_hasShrinkwrap":false},"1.0.0-alpha.28":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-alpha.28","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-alpha.7","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.1.0","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-alpha.4","messaging-api-messenger":"^1.0.0-alpha.6","messaging-api-slack":"^1.0.0-alpha.6","messaging-api-telegram":"^1.0.0-alpha.6","messaging-api-viber":"^1.0.0-alpha.6","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.3","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"410ac9123f98b3099fabb6df9e0d4d5c786043f4","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-alpha.28","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-2K+BIX03f4Xewc4Q5j3IxkoCzEMyxPEn/4eHjtB/ildiLPl1pHYveERWH85MGwTmRJTVP/NhfuwUNhAfN9pjWQ==","shasum":"3fac1c479d5b1be1d073421c4fa445f90564013d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-alpha.28.tgz","fileCount":317,"unpackedSize":673308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdynSWCRA9TVsSAnZWagAAnZMP/RaEKZeTx37eXKbMtuy3\nTe1FIDWEAFAFOh9A7I6B1rbLZ6B8/aJzCFowl+iIB+5eQNv1z2Tk7TFwPyu9\ntr9NOupdSfqO1E687lthlpn6hfTrQDcRRogXPkUz0sh31nNkkUpl7ED22duU\nn9GXJINwMk0ei7li4fdiQfInQQPY/hFuBRLhA1hrlSCPu6sEbr54AJkXwpeS\nWTpiZUnajmE8o1ooSSKhDSZydRiRb/a4FzLShZh4k0c6ODqH2VdhkCDCdQem\nsFvdnXJ6PsTBgzGkhEmfDWJpf06kDqA8bPLSiAHvLnIxJK6Ov1DVhVBRtscd\nt9QZTMJOyZemsMvufs8FmRgcvb2Wu+icLVHmqQqvMYVVZ9dKDQAQqq1bmrML\nVFlHfYy2QpHIiwwpoaka7HIH52tkSVRa32r954jpBmwpxXgoyIn2E8l1uWJU\nmZeMekeG63oH1NAxBZ1wssFPnR5kaOp4khLjRKyvjaD69jkXlRy+VSx4zgA2\nSQcVCOM/kJdKJaZ+cFngMLug5vE1eHWWIDA1gDQ3jpKg5kP90M3pGnLpTi5W\nS09Gp36ygGUgn/M0bNlMO0iYTlSu8Q2bZ8zfV88uNLlfjfLyMqpot8EJUseQ\neHIyZgl6UGycd/xMlRQS1WNGbOIEMG6yL7VVN43BEkuM4EtYjgnPEN7nxDsT\n8Hq2\r\n=2Tcp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDF4337RYlMW7rLx1Dk6qVYVultdC6g+RfdsZ/oKwYDogIge9YwJpiGZ2p25AKCG1UJBZa06+gED2Bxs6Ui5MFTuS0="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-alpha.28_1573549206433_0.6842420297856078"},"_hasShrinkwrap":false},"1.0.0-beta.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-beta.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-beta.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-beta.0","messaging-api-messenger":"^1.0.0-beta.0","messaging-api-slack":"^1.0.0-beta.0","messaging-api-telegram":"^1.0.0-beta.0","messaging-api-viber":"^1.0.0-beta.0","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","snake-case":"^2.1.0","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f306a88e7352bc389c1cd2ae59966ced28d18b12","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-beta.0","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-kCrzSymxezhgIJJE+CP7HRrXaTf3un9kyzQgMfrq3R23HpSFuDXnQIDE3rxkFXpr3FcfgtR6ustIebbl7dV6Yw==","shasum":"b2123d8a96f864342c80f6ddc9eb5fc7aed58745","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-beta.0.tgz","fileCount":317,"unpackedSize":673652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzR4lCRA9TVsSAnZWagAABeYP/iGzxIWqXOI/gsGP56R0\nekv/mVEtwSR3G7uekSKAksqMBRo3H7oC23Ct8sgcWJFHhlSLR61+uLi0MwX5\nIdD4z1xtGp3cToV3tQVV86ZAcZIXF7SWMynK7RIkfdMcc3xV/ILt+EZHwg1N\nQPhYNwhzi1mQf6mk/mUe+Ds26AkBY4QvBFr+CkBb5BBaQNww/LAFuCteGy4x\n2bBd+y1pcmLKGE/7bpxUnd0Htz+FDd8B/9SLjH/BuzvMD1unseFGvxx5f7j4\nSDul0WRx5kIDCgj6tSdrM6D9+8KhCwfZNUgbysHpUQNj4d7I8xpBUYoF1i9U\ng3ND2ReHjM0XCrACMsZ7i5WxYwZBE+JMaiVgNr1NMWdRinghLGZ6LAKEWtXA\nxCwcwuajd1Ip59l64323omIMJQ6OuoQRmgW6fDEpkCN9UOf0QNn9QkjhVOwM\n4+6oXyfKcD91+ezviCE44aFyMPU6sh5A7VpV2zhAbKMoC7btf0mPMdOo+ME8\njf4gwQYNvS2yrUHOw1Go6CXjardu9ckQE14hKRP3XgHZZDqWSd27gwKJUYsq\n7lpkSPua/4I/f/c3DEBgDRAumr57FIrFxriJK4Eez42lkEFR37VtAbEoU6PB\npa/vLouX0LGOYM5lpG2YM64I60n0cw8iZTXiZQVwUGlLHMf9qFjZSOOExnGQ\nevn1\r\n=0teA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJk2xKVja1DZXJAJKpritBJZfbp6SSPEI6Le5lm4G9uQIgP0r4bzgMURGLuNsd+A1XHB8SLibBY7MuZhJVJ/EgM44="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-beta.0_1573723685407_0.012624639468848065"},"_hasShrinkwrap":false},"1.0.0-beta.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-beta.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-beta.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-beta.0","messaging-api-messenger":"^1.0.0-beta.0","messaging-api-slack":"^1.0.0-beta.0","messaging-api-telegram":"^1.0.0-beta.0","messaging-api-viber":"^1.0.0-beta.0","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","snake-case":"^2.1.0","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"19b5136a03f6b4911de07fe6468868db29ab4045","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-beta.1","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-bTeaSv3kX+wywLGoB3ZnojqoO4EjchKJHG0uka3GHFDnlZ7TY2LlSOcbfpaHDDUO4s93QaDJ3i+zKfYLArmfwA==","shasum":"33335495fd4603be05315d7c8eda91d7f2a6aa26","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-beta.1.tgz","fileCount":317,"unpackedSize":673644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzSLVCRA9TVsSAnZWagAAYv4P/jDJSQ/LyBg3aN1zCIa1\njytCrNq5SkDikfgR7KQE/nwNdg6XPatAx4e6guPso50KoSJ1v9HnLtn1Km+s\nzqDBdvS7YaUlji6xRw4VqHC0Xz2DajKPfsFwDlJPdzXBlT+VcAqtnS8DcmAg\njS5YCRKS8OWbnBDI+lQzL9GyIGT4Kch5K5lde3jDoLqP+ae5Ro8eJEeTZhLS\nJyLLk9gchu46qz+BpxPQmhGVOaDK2E18D/of8Y1N8CmAfDSD4krucfSo7jeM\n9NPR409sHkwflSW6RlstyVhYwWHKDv7qduHbg33BpjHu8oErHSUjuPKZfMAO\n/bgef7+bUBf35PqanKtMwdFktt2y0YMjAvqz/cSB0G1xgFC/AEhWwKYFx1Im\n5CB8VMR2SM85Db7BRBJThckiTmD86V5+m7M+W2+2H4wgY8lcZdJPrxA9Qx/s\nrUL8H/ZKt+Ce9ZDo7aI7p77hSae3fePDgqjLiQWsNzMv56zWb9ePxThrh19x\nn/b4wwtmUm0CKa9afez8xN/rCMlaLo6UD4nXMCgkGfmU/mwpce/S5aP/5IND\nC8mmrtQHfoeVjXsdkaHhmobPXGrRIk3I1ZmauBM5jdZzxSRQsgglDEsi8NXw\nt85Yl6GMnfF3IHSd4c20/figfjoSGEY8qH7wFc7e7vlS6e39xuNmQ6sGpY6d\neoIz\r\n=7YMb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXbGYnLNrXdwho30cK/ZfCOeh/2Sf4cwD4DyC1qxTqqwIhAKBH5emqRBzjDkd7EO6vLL3tJOzwux/bHVL7mWT7y6Z+"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-beta.1_1573724884886_0.5832151968677932"},"_hasShrinkwrap":false},"1.0.0-beta.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-beta.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-beta.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-beta.2","messaging-api-messenger":"^1.0.0-beta.2","messaging-api-slack":"^1.0.0-beta.2","messaging-api-telegram":"^1.0.0-beta.2","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","snake-case":"^2.1.0","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f2f194a25bbe2a55df26ae91c07f0ccc40956a13","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-beta.2","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-Se6NLFlnfUZ9Nbkpje70RwOebdDuFUlbON92P+sk0HXiu0RmernkgiVPYfXVOGWacq4tgnuJxaiyc7ToZI0jWQ==","shasum":"5ff7e4861343ba789eaa52e593587f9a294d4864","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-beta.2.tgz","fileCount":317,"unpackedSize":674666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd04a4CRA9TVsSAnZWagAALAEP/0YxznsjR++tTOyJlIAd\nMOg0FYuYEPBAiqc2ciVNzts6jKDUfJe7Ntf8cXYJaVkBwV90L4mpJheXdtaQ\nzw070VaRH2S66lk/RJ2wqZqQ6/mSyXlc7BtRrUO9gxjInhJGkOJ+3wOjWpkm\nnb3Xwj4n7Sh9ku18mbLO0SwPIfL1BaN81AFKqKaYzI228VVKwu+JH4I5cgMK\nFNg/wnAi3pcQxRSbg0eiFc5idddIEeQrs8DOreWHFXp7zUs/XpXivB0emMDe\ngRw6rH+3pXDRQS7OF+EMXd8aYm0GZaJ/8p+oyKGTdqxVFA/EAjlnGNNnDP3A\nycYq1uBa00fB59/Nqsr++9pfCTvaPKE/GtM2db6mn8fZ1Qvx1tpAyN8gACbc\nJ1sdtLvkfLrZABRPt2gnQfLVextcSaBZbU1U8f1tiXUaxwlMaYjMkh5k0f55\nZGrpinF4yTyLo82eKSj9CBvEbiswK4FXN+kd3OiXAgKIIK8jQm/JugiXzX1w\nO3hDDo9flS37yG0SaBrZ5Y18hy7PL0F2yJz9Gzodk76/CrnFuMezZP7h/rQU\nAxSE8YHflHd17nhK0hUrq59B2K0AL21q88HD9l5kk7eMnwEKP3QevVXMGTBj\nsFbpyiG6zLiZSvEIvCZvXNz2Rs2xHcW1bv5UNPQnHV6f6vvPwsgWegl89V2y\nJOZe\r\n=vL3w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuoVLPHm8WX3iEMBB1QCxb1PGtqECRN5YNMcn+2Ex5XQIgJeXzkfmwjDYaolVV99FkLjZ26+efM8S+sn6wwCTxbVw="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-beta.2_1574143672163_0.4130467185951048"},"_hasShrinkwrap":false},"1.0.0-beta.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-beta.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-beta.3","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","camel-case":"^3.0.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.5","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","snake-case":"^2.1.0","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"8b577fb4f14b81872829054cfa29ab7450818fdf","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-beta.3","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-Um5TO6oLbRJo9gyZHewJz5lD8qQoaYPWS+XJB4vWGbWX3O9KRT1mRHVUK1S0mcpQszHcr1DjY+KgmZMAXQdE5A==","shasum":"b2f798bfadec4dd25827da22cb21524cc6d91e46","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-beta.3.tgz","fileCount":317,"unpackedSize":676538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1+3rCRA9TVsSAnZWagAAY3gP/3Oub35AaDbNisReKXKx\n26b1VMzfyoAx07S6SmpDQMqf9RgwWVGMKWh1v7DOXNPJTynw8ha2AJhNASyN\nx5zoyRsoUn+BHjxbYaHtHk1guLrPjFvvH3OsVLQTU/cDJpOUqPGw48sFrMcZ\nL1M6zeQ/RJIn2Zet1uFlDXHooAtIc8Sf90nDktPfMI6tf05KfGhIr20T/lqa\nnWezqgX8hIPa1P8WMwNGtG4mQvrEc1b/msjNPNSImaSISZAYYvUKTyRhd0MB\nJtgeo6H/HI89jKCtsqyWOY1BndAPQgtHEHRWI5nVw5Tau1jSUZLRSNLLvZ6H\nIRblGM0cDiQrUbxP/w65WVxhOgGw754/lFApnK9eNQhrl0ADgkhGT6+Aho/G\n4a1Kxk0C0JZZji3QW8VMJEt/R6klJkMNdzk1ZhAAg8syxAgJDMiqYedBzAmZ\nXB2S9XpC6cS9q6DXro6dpP1RXZaYn90apcysWL89FjaYx1XVssHMmxlfoMte\n4FzvkxPMVxJGa4OfyBYpivate3A80p+8fjCb17iMdhhafwxVhZPqA+XjQmCP\nJl3bAphzJznv8SCNUPlY/4coE9k3decEE+WnDEx72JYSMhLpltBp6uACYgEg\nptJTn6PC8Mq9/Yc5GG9iMPTvVWT2Lybh/YmZmJqYodIno3O6frwg3K19m0Lf\n4nvY\r\n=dRDP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD36fvqDAENozZNXaojbmJn+C7uNYSPN+fRL9qWUl2v6wIgalZ9Gg94aCD4vsvPKcq+Js6Q5f0KvYEB8ZXeFhAb0rg="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-beta.3_1574432235389_0.6272431147723923"},"_hasShrinkwrap":false},"1.0.0-beta.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-beta.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-beta.3","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.5","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"64eb561ff5bf0e5764811c50cfc63cf0b05ebead","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-beta.4","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-58lonrxjSUXrw8qJwAE+S3DPbRdQxN7WsbHpUfoGeBRpcwW2ZcjvS0vOtDNCQyoKs+wUS8+tOexrevNvZqhwCg==","shasum":"44702e53dfce7466631e2caeccf826d6a887178a","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-beta.4.tgz","fileCount":317,"unpackedSize":677084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd49vJCRA9TVsSAnZWagAAQaMP/R06AJ4OHRcX+rc7Su2+\nvZJGE5XaWUbGffJbgxhrRBCpnBKWqA2jtYZ2PPzi/aB+BtOysksDi62MGoA0\nmuKlhDz8czn5yNxUN++I2NftKINZ20VVbll8NtHN2bvtcR5/A7iGpH6Nl8LR\nHclggMl9Qm4KgqU0ecLEzX3PDgtKfV8fBgdGonOHDED695g366dVjZHc18AT\no0U5mOvZ1jAqlNfm3OElMn0rzJSbe3lUEtd0UsconV+/eAuxG71YcwEo4JDx\nbk7FX1dnORJehXErGTY1uKg+sbQQN5J/ipgluThHvwUResy1rrCckCAZq7ve\n+UM+k/mEabRlpW6PX/GDHRfI9FpLVxoHvBrpru5AHJpkbuWjrBk6HFhfp7A8\ndLqGosM3T1NDxTt5wOUxQng/qDDZCM4uLQEwSFum4MQ/8DEgfXAM0zXMHL+h\n6M6R7s5ubR/5EEId2SvagGnaWYdKn19JRwkllpUdlsNzttALjX841yuW9hQX\n9GbFoCoCVaewC6fZRgHsmG5ZvBUzrfQd/X6Qmsuk4xuhKSzSsqtuOxdM0blS\n7DOwPg8syn/YIZqEpsc1i1uoJniHKcQYhX104ud2oQTV7+8bWOflv1V56SCR\njOe7K90XbWQsOwbBxPkpeoYv17fzgeyOtSu4DOFgG5NkKIWFuJxYvoiw8x//\nut2V\r\n=Y1x3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbqapmyBWV/kwsXex90gq6muaXqEU/LNG4CCHrQV5IZAiEAwjrzKAZhmy2zNnLPruiJX6QQQEArK/efVAkKR+jgATA="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-beta.4_1575214025211_0.7773453132620756"},"_hasShrinkwrap":false},"1.0.0-beta.5":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-beta.5","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-beta.3","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.5","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"c36c034708e7b683a7060d33af20e1031a1973ab","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-beta.5","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-989A0JuKI8kaA0dfxSMZNrfqXLMVSCyXo9zI2auzsdMM+PjKLlHqZD5I8GqOb2zH6HjOp5dF1bvx0feT0siEwg==","shasum":"2862f7541777078390feee40b119fc20e2b490f8","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-beta.5.tgz","fileCount":329,"unpackedSize":696785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5pg+CRA9TVsSAnZWagAATgkP/1rmtYMxlF1OPOgXe2Px\ndROv8zC8EkIIpLt7KeaQBWymCJ11NYXvjXjO+s//BzNuPtUinH0+7bbwpazx\nwUgnsnNRqolbjjfKyYrW1JExSZQn+PFjwSb43Q1YlkhdlFsbyNBX0NyWfWuZ\nkOYhSi5oLSBd7hbMqS7gieRxJKkUz0sG1CjjUOHfNYIw1Rt2C+N6u2+oZYn2\nwfUO1r16JlI2V28c1FtkGG0R0NQktlIioV1oIu2AcTV7Pb69efRaZ2FAsoPg\npsIpzXcHNe+Y1JdVSbRImKz7HVgHcSNQrGX21iNiLWXb8mvAadR7mV+YGv1J\njzjO3mCCd1U35ZDJPCfVU8NBrvIx+PJctimM/eCRtnwSvYvYhZNJ30GJ2r3v\n49NvMHe+65nXn9HnZOld7LvknMv3H2IQLNE5bIhHz6IgmkuEKcJlEA4P6MnJ\nPxIDqtfj8nlcvn+gXiS2539bN+eUb2wYHfJUXTGjEKxDBMqGwMm0SIieFIbI\nEqD/amedhitCQzNdlUtsj33E5g4eMaC4oPeI3coY7f2l7nv2B2fcpfQlVS4X\n7A/eZg4+5QrEGjU8pKQ2avxb7xbSIdwA0EYiJGSuxkvskE0pRjl8w6gmu1hS\nLa3AhBwaaCOnSm+RZkqRpTAHxyR2LXq3UnKyEWlh2M3+4Qgw4WPSFY7MGm/T\nrSfC\r\n=lDHD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGC7C9i+ZmdxOakDseVgyZGGUjWxYg59YPAuIKvvI68QIhAJUz05L1oB91eySxwebPRfFN9/K3B067liwJXS9yZwzy"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-beta.5_1575393341891_0.9865876878596263"},"_hasShrinkwrap":false},"1.0.0-beta.6":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0-beta.6","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0-beta.3","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.5","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"6c25b3712b7c35be1b73c5f76f0b275c2398ce30","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"readme":"ERROR: No README data found!","_id":"bottender@1.0.0-beta.6","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-6GreWtEs71yrDKe6Dek3TEeZ+9rlrEkpuUnAIeyAaR/3GZadv9fzMQzwQc2opsDvN707i3p8jhzzgeh6aH1sag==","shasum":"b8e81aa8a7963093c88ded272b7f67feaff57b86","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0-beta.6.tgz","fileCount":329,"unpackedSize":696785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6IBKCRA9TVsSAnZWagAAsRcQAJNM974Uo6QjC2uLmX2z\ncLI4Vf/yHZWz8bqx29T6PJ6liSlf+Qu5Yqos5yaGbMnmFcKKwOWXa20Q5BXy\nx/jp/jJDDjFhTkBWURsRJnb+oBC68IuY9MgLsd6m+3U7W3WpdS8YT6Skng49\nQBJG8BGFR55IKnLYw0cbACnn6sGv/CR4Lfs/CWpRfGxA8Ku+iW3hhr58nVw8\nSzL4vnA84O4k9tm88LXJmzSZ7S5UBgfUPBljULNTzpfPCy5rPpMTK3ILB3or\nOgYKA2OP98rq58mxLHyt6TgYkHyEyt90f0JWLRMnAUX3KKCbEXAcA0JUbZaG\nrUL/nJ0gN6b3HkkYKedahySXmkJAt4esAdfv0nS094oCV1JmlZcSi39pkqiG\nS+7ymf5xfRGQTUmaV8pmK9rwkn9VviWt0DY7HLiXatQxurwOG1ktFhQkIRmA\ncPyWj9YVZKl/tnmhNtJ600h3KqH1hNuG+uQqU9FplubNAtiBil7UBgadFzo2\n8PvJVYGe5zD7oZV12HxM8zQgRbiZUdbI+5jFVcB78QV8ngWmWGf3WkmbDrk6\nzfuzDDzFXWOSxUzgplU3cCAjrEzGfzLMsFHPUEfsaLjr4vu2ZLX7JfKVXVHC\nwBLCWofROzJ28Cs9xUlXQjBJPFOKZnMTtQsHtR+ZVameAQSYkShy8Ng6XjKh\ntpyL\r\n=u9x/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDehpPi2670x3MBk+QIhXRS9FxUb4eHCWqBtB/xo+vaCwIgaSr3ulqPE6vRAElKeSjZRZeHSnsJgXQBfAqrMgsZpzc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0-beta.6_1575518282268_0.858504859463348"},"_hasShrinkwrap":false},"1.0.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.5","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"5fb5e6f72d4e01908c6f1691fae296c498f147c7","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.0","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-ol/nFwGTTi8YlpuiMpT+FQWkQ3xHfR4/ek8pbAXP2ePnKeefNoBVo83dWUXw3i/RecuQPcB9Bz1i7aFX1UOOwQ==","shasum":"c53979eb032cc00763cbdf143b7c51fed560288b","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.0.tgz","fileCount":329,"unpackedSize":699404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6LuQCRA9TVsSAnZWagAALDgP/iXi5wF+0BSp96q1Kvvx\nUmK2R7qo0Y9XGArBHT8E2safIp/7LlALLoTuP9juZgH4pey3qbnll3fcQz18\npGVjOQr9fuYiIIvwJZPTggRB94lw7aaAeGnznYYO4z3VdgquZwzYc3WhRNjE\nYpnir4ePdv3v1UAqlRZUWxt53n9MbyH/M44oUjbYdMnaJ/pJvJu0Xf6Ppu9T\nKa9QpkehGoPmLQHislyzGnCF2w3rLmLPB7Vcjwx5gsFFRFBn2uSQHv24zfJd\nq602HEM1RqCJoZEeGtJfTm9Y2n/afYj823px92yRxiXrg0mW2WbYDx+An+fH\ngBzsWYR8wBY/XvW3oUFOS3WFUAOlCzqQg8Bz6wcM+7YDnRvY5pm8p2+uHEGh\no3fWoJy/P55yFLaPJON36r7iUAxXPUQhDZPdNb0iNJi2HYigEXTdRJCiRCGC\nnlUxufDDMkNrlYA7B4TzHSStTkfa3JyglRq0EP6V8Dr7y9MKslryxsbYRRhj\ntYnXMSFvvFOVVCa+AmkL4w059WmiwOJjaQCMTbpPpMFoexwXAZ8fkqFV5MiI\n36fTCjyW0jvJIRL+KoyKYuvmiQNCsXo9mNZfGIDgDXyj9ldsa3cjfW8F95Vb\nOJyNtghketdjKv8vFEvrFVsHF4LKvRmqGKrR4trbn0x7gByJQxBYncJIBZlL\nOZap\r\n=iKE5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsepAK/genhXsUBD3zgM2qrw3dR5uBNucUJu98I5XXswIhAOv2BNe2JolPRa+swNPy3diEiXGB75HB/EUfoSdeLdcu"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.0_1575533455920_0.8099658137563406"},"_hasShrinkwrap":false},"1.0.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"ed923cbd8f5c68d6e7196df440f321f50f61ac17","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.1","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-U7DzmppKlDCD1Y4qlSN7xsqnUzLB66/myn2mr+7gOnJ/C4Y5AIFLybYQgo5t6X8LVI0dhlw8X3qQmHE9nxCdUA==","shasum":"a9db0033f34e713edf9e8e65ebc17a815872870a","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.1.tgz","fileCount":330,"unpackedSize":705764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd708BCRA9TVsSAnZWagAAmTMP/16xZZGtT7lhhkU7UgYd\nCdOxGgmFkoGNeMdtuHE4uvm0IkuYmrLC/hVJh64cThbbBGSVnAhmzLWTjfbe\nDzC35u4hXcvRbdVzLZyO7i2iQsS8KtUQmMrQdfe3mVQjcbOggNNaiwie/W4A\nBCAm8qoiFHulMj1n1z9qP7GjYjmkTsPR9MDqBXIX1gtILm2/TmSPkFVlg+mj\nfSodfUXKz2jCgC5RllaOm1Z+zTEVK0mEpRkHOW7Vyj7+7189SAmkEkc/AKo8\n91D/dijm35ZaF4SOt7kW8BU+6e2mjqvXktI6IGduaUZJLs2VorJYyBrZjSY6\nTA60ETz0K8eAR8ToQvC57I0KoCmlBtBTS4Ek2BfEbIOMhkQxhV4RquwCctlg\n7avYq/1IdTWFapEIPdSpo4dBOnUB113y778cO3tjnmqZRFALYkFpeUDsFg5Z\neBUgb0pt+BcrK+S2aGeLPs5j9XTkfXouXjx6ISP6lBir4oyK3lzUpmhDhHy4\n32Kz+cnEYklrrunRV19vwL6RNIQPeLPc5qiUhrkQ3P6wTGwepV03VYO6yBBf\nnoVJZfAHkWum47VdaIDRrR3BfSqlY7L+bDxtHNeRgPCqRfb1eE4xY1IFikri\nXIpRq6O8ZKMP5FOtZKbmywFvdkxwFxRD2FPE26QNA544KRtAU9cwfB8lDp2J\n4gcP\r\n=bZNp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDVF7OiMQaSb9alvUKdUUFsqz5nvJfdOOhTKvLdYBNwPAiA7dYe0YS9kh5MahDY6WgJDfdbFEavLodwXv4TMQ8fZAg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.1_1575964416950_0.11442724321620035"},"_hasShrinkwrap":false},"1.0.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"0f53b42bc4f87fe99577f5196c9aba8c2d2bfbd2","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.2","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-Nm/CnHvg8UnVSmPy8pUG3PRjf60kiaI6K6pe9uJqOGxVLo3xhEgrmlZ0pgip9/6pIIJcZnhNFNm7RRA8AO01ag==","shasum":"919e33e3c4548395230edfff7c6ec1898779826e","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.2.tgz","fileCount":330,"unpackedSize":705927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8ds8CRA9TVsSAnZWagAA14gQAKTLAw2P+wLXwV+sW+WH\nnfeoGvBWHu0QvOJN7agvLfdtAaWeWnJ8l7fFTgxQMjYYNkYz5N96hvade+hR\n1mdk94GsuSV9utKxHP53Bxft67oEEIiMSdxfh2ISPu2XR45jjyV/z37JBE8l\nyhdlIkf+bzMyDqcAqchP7EKDZXyV8NvfL2WSmbghBv+gYGPfK9kB8IEw0SFO\nrbw/+LfsGxoeGwT39q4iNgRav6WOXC1rmX0wUXe3onrowVEeCnS9Be1aJiGh\n1hB8Y/cJJYXQw/7fmolIWa+apKBUSQXCnAARcDpgvfTHQKodQgRrh3189gMz\nJpvA1Q88Dz90yy/SdApsnYVCK/BILSfNE1bEPugsSMh6GH8Js97DqIZn/BEP\nlRkVJ6Q/t/T/puy1cInCeVXNItpGijf1UJLq4V3TcK5szhrUKRZvpOaoEhrU\nEiIdZlBSrgyq+wwIgrJ3WZRy9rr/ZQBFMW2ELSuJwRZAjEf7BONTR7N8szbW\najRtWkWIrNweyT0168DglWxbe2pCPPoQIJe3P64za/8K7vbYE4RKDoLToyl2\nbYWP6NwEAyiRdW2WvgjyrismxlL/vvu3c2Dd9lYdL+1mvjzEAmXi/VUdU55o\nmL4lHt1veAIjM3irvCpHJS875XnYiTqAJyHUl4DARGZljlxAy+RgkVuOKEFC\n/rVa\r\n=n9MX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDojhGAohLSf56WlVQgL2E/5vWLl6mGA6+8932/DEuH3AIhALK9Dh+laNuBtfxt9zDnnezroLVQkw60HJPlGBVqjsmp"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.2_1576131388445_0.36432720945166364"},"_hasShrinkwrap":false},"1.0.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"c994c2e2253055733236d6aa3f60f336ca2c43d2","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.3","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-xJ1VWR0YgLS2WkUMIVWeUaRgRCjZluvj+Igrr5OybTL7bcQZ05nM3qC9pH5pFI/c1SvWlT0NS36TjLkcqxzQmg==","shasum":"1ea6dfcf7e86ae2f21ac92b931d8f178adec92d6","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.3.tgz","fileCount":330,"unpackedSize":706078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8fzrCRA9TVsSAnZWagAAqIUP/i7sCu/YMe4ZrkjMIWXj\nOsiSLtkhhn60PwqeDxPP5h2awo9aRymJVTaXSM9MrmXIFboH/PzWnDi0+Qow\nBWt58kK4ay3g+eA2oFLY++GMRMZidEwY81NUUC5/iynm0xDhJ3CDwiWIVClp\nVNKeD+47kAn9IRhhSkBXd/fXl/GqSQF1VJC9b+MH1sZR5+YgmHvnUrndedCQ\nJZjdvizUyrdHocMIoGGk8bATe8029X/8C/FCIc6xwh2kLXM3Xx7S+cri8Ew7\nl6NlQUAk8YZ+hPplWuXUiUXeuq/xvqdNLYmZMxkRSaiGlNVpiO7Y4NKoUByG\n9NbCJhLDSbOr9WbGLJDOCYiqJ0vf0QKtpDyFN85hBzp/xzeFTvepwwcxOS0r\n7VtgX/8YcHwPql595rymGLuoir4RaB5/Y4GWGJvwEhSTWSpyyevbHaioZ4wz\nszE/SDCREg8GiMm8UTHSBkPysWp16mSwwzWiLs8gPe5YvArOd2JZckZbTogJ\nORhjEuBASW9E6CUXfn1Vz+aVH7kVkBDr8gPa3FjxraId1q419IMsOOFGb0W/\nNSb3sh82Slei7/26f195NKYNLmtFhZ7UgkrAeRxpXEJhj111IPK9lYjGcICk\nyP+IrGpkjWW4lLXgeYKPSzSLfWDa1i1brWinom3lYH0FhelNmTRSf2awSkQE\nuT4S\r\n=BRlY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfHm6K0unq8bPV3kJqrJpUllmnwpIMSo2ARdcfDnaNyAIgYz0Zou9M/NkcFxt+KICWn6bP9puK5B1YZ2drTtzB4zY="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.3_1576140011392_0.13566667456637238"},"_hasShrinkwrap":false},"1.0.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"c44bc6f14b7c5212b1ef7d83b4086859298f4e01","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.4","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-HSaiWRJUhyQxc6z3pFcQ6TEayVbLsn4092nZ9P0p8zx6ymfukZ/6KityNTpvj+oOswjQDsOF5R113m99gIIQfw==","shasum":"5721039364be291834ee26a9fed1aa0ab24c0cc4","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.4.tgz","fileCount":330,"unpackedSize":706827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+LAECRA9TVsSAnZWagAAv5EP/isrkZqRjdIUXfraxcb0\nKTVEUb+ACfE73yw9Gh8QYoqx09zdMt2/OnX3nNMsWCgoIxRHOK9o6l4hZNZf\nT3TiFGlybEzhk13sXSy2HRexdDtePE2Up/csfBfEmMZYFTwLSlSWnP4366h8\nxrzkxZrvpNgPVAgFh3GGxQt1neK7JwmIUJHBeh31ilNwH18pQMYpTDu6eHdD\nDrlRTuLmF5KvcMLN5GwPSlKSukf1U72O1i5WCcdh0+jSTniZ1R56FEP5q4Wn\nZpciwLZBkiKmXXioTbFs+mmmTO1FpmGPdB/KN2uZRZGAKt9v9xMQ4YILP0JQ\nBJofqWPd9fns0uO9pE8yB3rQQpXV75z/kkC3XVBmwxe9asOOOV7nJnNJGMhh\nUMa4KJptcNsiaPgbkzUUAvctrW2a1DKqc04Wj7wND8Q3yml0oH6XZ44T6haZ\nKfsHGEztR3tQ8rfpUukZUbauQz6oitFeAJLO3Y36Q1I1r4m79MIa8fGjcVbb\nfi1pWdG5uXaxxux8XTcUHqiGeXaIw3FN+vvVP0AbxG9imXefbbO73szR68Iv\nPuNMYn+vNyAlytHiS2FqK9L7kwn2LbcJIZ2JEbFdVlqtD9ooRCIGqdSnv20B\naWTsEJIPxraJTPpL4+Lit8e4VVJ7hkv4B8ihXlF0CmUU8NZ0TcKPqQQ7X2sN\nxSH0\r\n=qSuI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBeA6md3D201bNc3Aw8aA1LFVLZbOFmJpbi0gEf17hf3AiBBpEr2tuyLuQa/Flh9e7u6w9ngfwcC6os4tahXbW7NMQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.4_1576579075568_0.8885367867477787"},"_hasShrinkwrap":false},"1.1.0-alpha.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.1.0-alpha.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"bda4c682afa8702e150bad9a3f527bf5af59d678","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.1.0-alpha.0","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-Udyy/HD1PrsxSUrvs8Z2yB4X8Iw8WA/9Y8mPvPCCUjlNgL6iKUncdYDnRp+pFeaCQe5y5pSR5Bf1KRP3SVYtBw==","shasum":"d621bff688a64b98a4f322950f686fb7f930bce4","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.1.0-alpha.0.tgz","fileCount":330,"unpackedSize":719958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+ZqNCRA9TVsSAnZWagAA5yQQAITb0tCcFnFwsNuWfxlk\ndFBTEMMyuuElSrhR7tHT3yfdn3zEDayZan09IoD+pIDpYqEbOxGBXYTcpb4Y\nsZDZkSJE5qxRMXNpmC1ivXcsjgohsjpC23mEXcUbnMWp3g/Pezy+FVDjHhTs\ny7yJMVCJQgsEmIPgvNoTSUyRked2yDmGt9Js5+H4psM9jq7/41WANsVkgt3U\nqvD01Ncg+ZtBEU1yvwq0kz6b7L8oCBMUdFnGLCb0VV/9bW3KY4xeT7dBe1hD\nzcvLRbAGr0sSN/gzneWNawx2oexWhlgyDeJLSseSMZgyrVVXr5gDMvDgnJoe\nNG/NigdToT3K2yj3RePjIjZ1AkG5je0URCJQR+VKGyUYprSgrD8ATXl7sdZO\nfoW6JeHv5J/EDhTddwE542BWET7uxuR6iqZKue0UcxPdZuzgPPzI2Ckt4Eh9\njVN3nRT3aDggqwGd2V3l8HkdGXEN/+qE+3i2WAjsdOsq++I7/jEgKjZIvP47\nSYUirFMmvkwZvZl1nySVv760WixZakwxR7AsvxpXGOCn8HBv+d/+hR+wQib0\nqR9npJA1DVT+EdjxHkzNeiu68s2xR3I23v50GzILluEpVcaNsxVLZBpb80hN\nJE5oLezvED25ukjR7M4SqZwhdKVSIMAH8DaAKE/wVkFAFUkMmcQ47E7s5j7a\nShrt\r\n=IoE5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9ohr3vhOuHUEqj3n+ZAn7w4XJWaO5mqff9UPYmIZrTQIhAKQyy34vWa66QPecWQkojv1HnM1Q6nF8yhUOK1tw68vn"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.1.0-alpha.0_1576639117044_0.5183984799300203"},"_hasShrinkwrap":false},"1.0.5":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.5","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"c1c95e72621031df261bddfb23e299b478cc6eff","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.5","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-Qv29M8ME/vICzYjJQkfcrRp7PZCDYrpq/89LA9YsfMGuQCH12Rye/Hw9SdtqibN709jGDvcUfjOgFevzMN/qlw==","shasum":"ec96e66cf9a78239a150bef2e0f2f4e1643d4a56","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.5.tgz","fileCount":330,"unpackedSize":707414,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+5cyCRA9TVsSAnZWagAA/WUQAIHWrCScoz/Y+oYgzkKC\nFZQnau4ueWXlQ2QzLRMZMTY6Hsej3hyQPBzG4QO2HcgQynWpqDeupVn9Cb1x\nwucHVzuBKMZyLGBGfOZUALhAuDU5GdpUU/jXjTw1SF45ydF6yoIBfH3nkdok\nxzaCXrfIHQJ5Zg7TarEOvn/pUKGY9S0v72L1lyLKd2B8hnxDhlZeRP2UEjog\nguNcxLwxaiv9OC5SAOSWkLBoU9HH69sgnLeX/FMC03oPbkrH13xlzIhIEWcj\nlLug/6l8A9r99WcuAZ0Gt2G4VUDZjhw0/xwHE73N+RAL8YsZcxMm6ImwmWJj\nKhKptRQomO136lRTO/Btf/GaL37xTkdnKIIDEijkaaQEm5uhdkmqrvfM7Ps2\nMy/ZEwx5pTJ6r1cjsHc6s+eI/Ob7oUPcJzwpjIhWIR/qirh1cjnkqkD548Cy\nU3fGOKcACr1DU1stujslVBzx6E70aI8SiggmlUONu/+tj0iXDp9iU6O5IwDO\nSpdH3UKmPqDW05FiDk1/iVQ0YdfxEfy5rAalh/SmSc5G+f2KhF7ec6mTJOCk\nL/Z4WAL6G77nfDOy3+KmHZHjjuyT5+CUpcdUaLAJ+fYknjAG2Fw5zOvXYwND\nMFJOYEoDI/lhxP0XFxJ2QK6bq6xKJmWF2s9wRY1pRmM5PdmzZTqJirG/8ccb\nfOr/\r\n=QRiu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG38IL6OOlXS1aRdcLiWxaVqLOVwpiHBXGxvx1hMZKKXAiEApzTs0DtPxjce8nRmLi+lKRMrmzONKns2hg8d+L2T74s="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.5_1576769330443_0.8282700138589116"},"_hasShrinkwrap":false},"1.0.6":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.6","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"5c5fa15da131281b2814d8a53ec1e0da98301541","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.6","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-y7nM6rzlUs0bc35inMDr+7Zo80PfxJ9ZRuYdGG6vXk7e/oY3huPAEr3WCYI05rO/sK0MK2UyXZl13DPYQMVaZA==","shasum":"cea93e04be6ce9995f73780a97ae332ffc85a677","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.6.tgz","fileCount":330,"unpackedSize":707611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeAYXFCRA9TVsSAnZWagAAvrEP/R71S2C2Zf9XEFyvXzfb\n/Yf+06hmiZX55GbviO15BKVdAri75lqJ171IVfLte5WAJfZ/J4RZxGjBTcje\nZTNDs6kaZYiUd7VJ6tL6ugmltkFmpgork1wIAYFakw+u6WnCL0jGxT5imEhy\nWSd48UQNqmutsrmw6sjFZUq+PS6BR+MNhhe7cY1puIAZwr1De2L7bYhUsljd\nlMGABFScYR0UmOCLMl/tYPF3Mnzsna9ndtCQFHB/TZDdeUZZvxs/fDnrTL5T\nJ+5VeqCsEGaOjWe1klq07qRhJ1ILta7W4f+TDB8yQVcljvvGt4GGp7z/WNPv\nkF6pa6lS+hAjFdVaZdfCP6P6dcw7vERHNs/6r4DA903O8eeVwdHv8dvc4aTQ\nwnxkr+bYa9iAzgmaByh2uCC8W8iQiILaFZ3YmhjyTTGOZVztoxZXTODUtTir\nWkGV5mzmPLoAiz/a8taUQD2Zg/XP8HPQkpuKFIeGZQKLdvEQmIXsk7Jr8k1Z\nED55POvv3jTWVaP0mOYWcJFbLQ5wOrvUYo/kaLVDuh3seihA8v6sHi25OojP\nfL362N4E4kUeIdZQaLp+XumvnX05GazJvKvT+J2MtBA98qW6edJM9YQCpdeO\nV8vivyLyzQmGCDgwct2dM3q8WdAhZBRo0hbbiFqFAA+F1oWKs2rysqhDT/6p\nQlrl\r\n=r2Rd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiAukK7rgA98xhGGbuGZtSxhCcqIGBRxwEVBl023KUPAIhAKUFuEQs0LA2jXsTYUUtmW4KR4GV/np/uLBrKZDlgSCR"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.6_1577158084419_0.9438365339765054"},"_hasShrinkwrap":false},"1.1.0-beta.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.1.0-beta.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"190dc2757fc981aa0d34b37e815946237b65eab6","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.1.0-beta.0","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-IX78dluIzhukqjAG8uq8jGkCcqsxCHQ+E6JtzkqDWUM3qDo5IxSSh/QVuap1iUNOyUbg41Mtlab4y8ytA8lNfw==","shasum":"143a56d27f503ee32f3a887f6c1403bb9bf1154a","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.1.0-beta.0.tgz","fileCount":330,"unpackedSize":720741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeAtZ5CRA9TVsSAnZWagAAAUsP/0sc6/BVJ9yvuRH//JGY\no72GBLYfqtmJfnO/wnCwmsqoppssSouJmq1PCezBuAYtDk88CVzE7lZSHy5l\n5JLv8jgR6ZJbymyKdTPL+5QqwD/L0yaQxRMWz7I68YkFxR6Y86ePcyheKaNb\nVKVJex6t2IIniTyqlspZoLskg/vKslKIYWfKTTpJdXf1fCI4iXfdwhW7mlsI\nxj20M4V+GKYl+CMU3oB1DNbfZieVPib1+g2kFoV4W5SYRh5NEGhgU2MkCKx3\nPZVYC1Is9YTIbjgCFC3MDZ6yo/YWn1/mLeiOYbeP96tEIHZNmZKEOZOid11I\n2b0sc56yfYMDNoFRI4VcMmwpO7eSq6fmNxZWJJ9GpYnMyq/NEGI7zEdrGoXD\nRN4QkOz8EZnSFw8ncZQlsqvzh2kcV+LDJQk+KFkZ8y/59eCYAjYtgcD1+a5m\n2njuLh+RogO2TKn/HNHWwxJ3dMruB2RA3hd0Zz1V5yu6yYYY8BoIYBJXGSD1\n/nOiP5KEz8VaZvc2Ifi5UIIRt+igbMb7XyIzuRJHZEL5Cwjh7aaOVnIKKC7N\n9NXojhoX95l47GBEtinOrYsjR0030Lyn29fqOBnM9qrJ6TUN33ZqnrB2qCJp\nkL4p2MbQAzcO+gI41P+qaE7y2TaAbAxzMCS1pvl3vwtMKv7mE6npSXp/RHmP\n2xBB\r\n=0KmR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDWuAj+YPzxPCjmW+3ByerCAw2dNw2P2KfHfZC1ztvMkAiEAkyZO5AiCpnMnzp9c3m8XPjBdMMzRTOAWYXoEAuPZLAg="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.1.0-beta.0_1577244280838_0.7425558620875756"},"_hasShrinkwrap":false},"1.1.0-beta.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.1.0-beta.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"8d5632d94650b63eaf478c9ff5f74002723d0588","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.1.0-beta.1","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-MMBe6X75t6TUF5pH+zv0w/Zzx0bcwghODfPdVQ9JMetHkcRqnGm2PytEjZ+arPpSeuqmeAcYfcuVQP8ZdV4Dmw==","shasum":"8f9fb9bc76c4d8713f1ea15b0bc99c259918f071","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.1.0-beta.1.tgz","fileCount":350,"unpackedSize":759344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBJnWCRA9TVsSAnZWagAAUr4P/RcFhVCBDSkoH93eJ1JW\n1ZpA88C89tpCvpsMqrjeZLUhwATfQnN+GLbrQBl5c6Hc5kywsu4Zk2fJBkBq\nTbGXjbJ4BqJUA69Aw3JMEuH1Tbt6u0A2qqNBL/8GIrKlb3BeWHjK0WXkwYdX\noeiFQr8kScvOTCBVJ74M4eimdnWClQ9P1SiGTsV0jANotl28cGpxGjaikvPJ\nh8qgCHZD0FxOTiGExMbXPcL9C/ZXabQYE+SeS+BkJQN8OWkvyNT/JIS+geTt\n6BbaxVHl8b1VKOwtsRSHr/vz6LEURmk9KntCmVMsbF8v6gEwa0wUByp/pUJA\nwbAXH+fzTC+P9cs69I1iP/k4cxzI0ZceyVirFTUvjgjsIb0hXxScp2RCjI/h\naDsKTNofN+6EitaBurUdVNe/e8yckgwweF6Ez8R3XTQYjm0L+hPsadwqIemw\nZ7bDjcWIon62gJlp6o6hfXv+kEArj3Kw9inawKy3i5qRFgDUf1yCalw+xv3M\n+XPTSQMVTpMm2F8wsORr6FJnlwWZ7qcoQRjcaoUIOXnQswKg9OO1tmKbAgwz\n1ZqntuwcpOXb2jgHwASFUJHT43EM2XmhUImO4RkolaVNEXVB1/cYAPMpJ/oh\nLebMZoguUo7PUUWkSovb9JJDHkaroFihCqE3+z3xhizb6SyMVv6U9+8hTFti\nqtG4\r\n=5Hy1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGsA139iclQ0Y1J/ZPZcQziwXxmY9UumQtGjOGLcW0IDAiA0/AksEK3JQRv3h/YnZf4P0pnW40Wrbv2l4Qi96psviQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.1.0-beta.1_1577359829884_0.11646485144596763"},"_hasShrinkwrap":false},"1.1.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.1.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"17150d030cf48850660f4a743964f62c24a456a2","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.1.0","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-WBME6ToMrW7wNvMP3XmKhl/0EwxBeiyiSgW4Q9OLQdT9v1EMdmoxLjM9z+6TKacl85qmh6na49XPa1NdW0Digg==","shasum":"b2ee919df2666a07cbd397d7002e6fd944cb1946","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.1.0.tgz","fileCount":350,"unpackedSize":762908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBbOACRA9TVsSAnZWagAAu+8P/1rXje/gleui7AwTPRKr\nVqvET4SDi9SLAgPGiA92CFDqjZiak4hDdOYQPVgJX3KqT1wLpYnTvIHaBXKm\nZBpyvwZovR/jLJZInvrUDxEjChVtoJPtuOzfNsXP3GCVKyjgVGqdL0JeQzjK\naXjMJwzCk9ecZWYYWmoCTt7TBoNa+8V6uE7Kq5SThum350F2ge4RcS9tOhAC\n1CKYrHuk9Vaub347eQCmyMfoFf4uXSqP5xoa/LaCghcFqXMQ0kJyErej79WL\nfGIUenTL0/EojaS8DuSOcbJ6FBbAziVLDQyyGUS3eyZ36HWxXKQ2qtmBX389\nsG+ihP1DnGxDzNCa+NSaFmlgWtO6sLwmTdC9Ub3uhlWu3MHBh9kfjRE7pDXb\nvs0SowQC7aunxAB3vqW7C3nTTXinie/GzJRivcVs+eANHq3E080Bb9xbbSLN\nIbQMJn0RUuyqbbIrnK+4AmNXziV3Zs2Pp1T9Kspe5vSg9yevuO/mpnl9TJC+\njCsdgR2GSgXetzHqi6cF2jBP9oi+tPRIQXsCHS3CSMZM592g6IsW7mWf3Xab\n6dh2UA36wGdalMnBjnMl+kkaySHgNE20STIR8oqwsSLE5TtMZV0PuFost9j+\n1xkvA20jm732bicJN60v3Qd+/GpAhD0lX2mg5mUCQ+6HHzntAoYGUC9Ly5sc\n+HOj\r\n=7Uqx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCK3tpbWRmW9dx+arO2MQ0FVBX3IQ8xKlQhN36BUoR3PgIgFcaY/FIkNbQtg35lTJdk8pVqvYFdPzxkuoenXdr5VMs="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.1.0_1577431936389_0.21012175977130476"},"_hasShrinkwrap":false},"1.2.0-alpha.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"65bf519453f9d45857ea3481c4c3689755f13eee","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.0","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-IfnI4Vepwgk2AvHkMkxikBkDarN/++gRj8QDQQQKWSxur04oeKZ23DIa560shTfe7JBiUwzgpJEbYJSbpbAGww==","shasum":"51ccd9362eeeecee006f147d59694c63ae865483","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.0.tgz","fileCount":350,"unpackedSize":762969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDWMWCRA9TVsSAnZWagAA+RYP/0QVkt28qfDkxJ2tkxPF\nO2vOMcRz2n22HwArINaCCeEOrZfSg5dRvRtDOQle/JJFxih8SamqeY2Ro6yb\neGtj63fzEZbsCx6fO4iUTbty1RcDIW7jh3/Varuf1VJ4//IZAkLx8uINUAw9\nHfOM0NqdkH2sp4prxWZbDQ0SnmSg1mRBnvtryPTIGUsjafA5Uudll5EE1CH4\n/IWUq7G/TNGBR5x1v0MU5Liibj51jyvwBRWA2ckmLiLw62x1XgnpghA14jf6\neSHkwG8fL/g5IBw2jxvBhifFSMEi67G5aPw3FJCWhoAen+NKgrNfp0xCfPur\n8ZG3RoEHWhxyFzofzkGuCAi/T7tuRsysNGowE6v7WEuSdwT2lGXsgLY5pQ/I\nPySPmxMVob9nmCyA+1Y8kTNm3c3QY8kNkJBx29l0HcvF/S4OIhKJffflJix+\nOZsNaF3avWR+XDzGtOEHgxITU1EevOluwi4MwXBag3Q3nlr5wdfV1DtMI+ou\ntDwqHZoLp9GBLGwa6tLowL8Q9h7BL58JdHK91YyK3i1V2tboVvRbxcmT9RVh\n5h/LzzfxY7raZYdBWE138+3OPvnHWA89NmD5QtvsjR0NRV5Qro8Y9EBU7QPk\nEoikj2JQkX4cERv79oBTzEoYI3hGxTbKfF4E2SoHZXMh3HKvEydnFSkN650U\n/uh0\r\n=f8O6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGN1VXVwB+wfAHJVBQPpJTXaPdF0OaICzDvcY0A0Vp3wIhAJPmw+nsyTsGHDaG7ztwx3v4lBPZYBM9/6nGm1X3Gtam"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.0_1577935638161_0.24788922879519593"},"_hasShrinkwrap":false},"1.1.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.1.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"014c33baa6431f8476776e88a9112800800f2b8c","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.1.1","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-ksIFisKTxzbTB7IAQZvnwYYDGifZkA78w8hRRjPCNJFU6zc/AhdovdIJ3Bg3+dC42YEYidEgpw9D3K4cE60V1g==","shasum":"e7d904b85355bfca96883ff64a8afd7a6b6c1741","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.1.1.tgz","fileCount":350,"unpackedSize":763120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDbo5CRA9TVsSAnZWagAA0mAQAIT0v7PY/7CPYN1BD3Jp\n7sTdFSRhXqkpUxQoBl/BPU6aKDRkKL/FeRXRJ3Ugr2MBFBeG5mOQIEivzyvi\nm9B15vdt2unE8DxJlEukDydgv2ICL8KhqjhzAtv2c7q1LZjrpAUR/EJ2WgqA\nsP2go35Rhf0aIXc3Q0MNCa54DFiQtJ2Np4QFZUUU8BttBPb/LithY6vaL0Jy\nuThi2xtOUfvh9SlM+sO7MIrPBsZFTsmQ8Ovqwmz0bR5rX5GD+vwAnhelywYs\ndCgp5P3VVh9WNVJNOSglZUGXzVBTN4Q54bV/CM0AMtyfLP/nMMwlQs9OyMyW\nGTmuMaHikTgZ/r3Pn+kVWmKMxiRNw6VU4zX9ioABz3zHOKNq05BeaFESkXFx\nc5vkB5rsWOqj4PGKK2aq5UOUjXYji2/P1zsTt2bUofRteUmlEZBYOBiGrfLh\nfp1KQotAV0TJQd5pXhaY02AVb1b/rCe5Tl+vcHbJAzNldRP3zHy/3XCky7cY\n8YA16kWXo2vhCsY2l7sEnigc1ZRmwZkFJiTokvSdReg3BElMrmsqzky1e/IA\nNphCRLLu/AqZM43YSBiVzdpJJfB0eZaezuoAs/xiu01td1zZmhkMXQrewUwD\nsingCCgiSqLw2ujQGdRScR3vpRsTjf+w2ro+94nGjcGrCqQiStL6u4XPaY//\nYxKK\r\n=xQ52\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9LB7V6RHtpMN0GOdea1oiwmpOtjHwcf9Iul1yE+M+KwIhANoIp8v+2ArA99f6QGYWjsyCJ1FsHPO3yW4KlMjGBHx8"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.1.1_1577957945152_0.8195664568497982"},"_hasShrinkwrap":false},"1.2.0-alpha.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"026f44b7f1e14ff543ddda1e12464135bd932c3b","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.1","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-WkFnTn8LcscuMItvQa/QhEmwPhbxXUhCnjIi578y1IJEIHDfeHsneqekDmxHVNgQuuwkdGuek6a1AYUjHEsyRg==","shasum":"448e79c2d0670e154831a36f54bceea99b342872","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.1.tgz","fileCount":350,"unpackedSize":763181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDbsHCRA9TVsSAnZWagAAWeAP/0kkRw3A5uYdTr9rhk8P\nN7JfmMezKJXuPKm4Q/NglqcfBvezkIDSyFQ6jJDhfNWFaq1419vI59N6EGO9\nRr7kYvyH94trAl+iyoalid8WVEFA0q0Bmo6rHRVFGkqSv72KaRi8EE084EqY\nEDSThnGOxIVjLH87+49ykZokKCKiJ2uh38r3+NJPJjRVNDzGSl/AI59rWgZ/\nC3KUkHM4uHoJGSuBbem2ADikAGUEG2cRAeh6wNsMsuQBpFHNAUN12ZRylIXQ\nkpd6NpyhRiCd4znTnMJ4588yksg9yxUMWHVbOVL8kJR1zW7UyeUL/3Nei06f\nx6rmiEHOwN0jCe5sg2uAV4D6Xuke4SbcyAO66ytGIFztvu2aI/PeAWW3+z3+\nC2Wxh6ukeFDlImJuLAZzpMakZn9XK2FXL/2W+9RR5MJ2SM+Ue9Dhy85egEPJ\nGMSV8UPXd+Q8oZnEjtK8RtyevPqc/E6KzZC2WnMd9bgwvTqThLc5RapeDJIe\nIiiGdANauBtoGl7K7VGnDDVp3bvlAAYU4BDmVhvySY+dUZ6bCYn1JAIwTyAk\nk0SbhqoOmhRiz9kwXpOiugRmngUN9av4IkxTuBxM/7Q+Likux6tFj8nxYnGa\nPQ4r2d1xfIVhQ6unXpCDK8K4pVgYHkMevdzLHbKOOUl6jJVBAc5xqgPOtu6Z\ndcL1\r\n=RhAv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICY6XM1Ls3unzGnMZrJ4JUnZtNWK+iiRRtpV3OjZM3MSAiBwNPRbXyG5A9vqbkZLZMaOlizX23YCs3ZSuxJuD1a9hA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.1_1577958151095_0.8705073809761155"},"_hasShrinkwrap":false},"1.0.7":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.7","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"0494661bd4e4280b689362be33944e85afd8d444","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.7","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-4JaP+kvZyiBVo+W1+riEQWCA1xlV2/2AOahNcugSKAe9T/mJVVKjdygM9X7ZaDlks3A+1qUI13PRTikEXcyZoQ==","shasum":"1b273a5bd42a16ee077f70bba1bdc70ba8094462","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.7.tgz","fileCount":330,"unpackedSize":707825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDrpgCRA9TVsSAnZWagAAYfUP/RhI2eaq08Vw8/2VcCX1\nbnXvh5G8A1uk/fhP23sqXdi9AtwPVbz6H8C8gVNyjnMT800YKLK+aITcEjJ0\naa5XSqoiDfFtl6GAmf8Zzbj0VSFmuJT5MBgDecPTR/SY/8kJnGbB4Fg1tz81\nZgkl8Uq54gH2jFBHYmxqwNfkI/fqpPqrQJ7qFkSBzTo9++aUCF+N8A7e9I1p\nAdoCGGAC8gs5u788Yk00qxfRoVCDsNIqIQRrOAewaYAZxRbmjmIh2oekQJx9\nALn2PQVvA3nlqXk4jlGMZAVSaqRBuh06niTk/hURWyoQBbRBl6qXTM3AvrQG\np4Xw6Km2EpbLib99EGAOO9+dzctwnMOKxsq2h9Jk9E6HTW4VqQ4Vj1YOXvTL\nf/6ONhMgGgR5RZzT6/HvIOTKZuFxIkb1SfROVngD1oDp9yQRFCDDz5pMyEB5\n+bj1CMkCAt+9jzH9XXQMHmdgOJJvveNAkT+q0fMGTGJf0fPIZ+C9RncSa6IX\nklU8yC3qHIqQDiG4zyWHBqQcX3eee5O/1vtwD9IZy4+G6p/i0ZmL5QFYNpmc\nHtxAvO5XIZCnyJqKHQAKw0TdCOVytrQMPmYibIHVMaZfpLioaJUykFqVuuw6\nDr+qx8KkzA4ZGSVxL/g2Knysr5X38HfgTM/qadZl87PP3FuLBbNvHmNCVCRD\nuWMe\r\n=NVo+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGA29t1+D/uuTbGRV6gEc2gw31JhL0gH+VpM+aZkkOl4AiEAyI0TzQCrBolS5DwR9fkQP9B1sUCgAFbL5V/3l1wymJo="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.7_1578023520102_0.6532547308895909"},"_hasShrinkwrap":false},"1.1.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.1.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"3813ab8bf9186fd34717f5461c1365f332a853aa","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.1.2","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-VXxbTHc5AMGCCaRVhHstoyHfD5fNgOiMKqC/Ag27rSXGEl9UVlU5UUpvJ+nIxRDKAV/a6gaaBfRO5wPR8qu0hA==","shasum":"9aabb93d154f8d3e90b0c01f659a86a91a92038c","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.1.2.tgz","fileCount":350,"unpackedSize":763334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDr1NCRA9TVsSAnZWagAA+1UP/3nxP17ONOajnWRUjA8j\nthRxgP1yk1qNnLKHujIuInH/nuyDBFRD6v8zBkZn8dzIJ+BYmCQ6I/Eoz/nF\nxMEhYfY1yHeUFl+8Y/LdTzImV4s4HSsO/1SXkEMFJhL5t4A4WZ5b/xUTJBBt\niUs0GO1p2pkC20FnBJ4aoUXFLQP6yLYwl1z6WZVJazhVfzGVO4pQ8Mw7X9V8\nNwlES4fD48qfFn1U/E2IE682pTns9Ssu7Zhoa6OYu86vA6EtpJjMUM1/lsdS\nyhK4PyJoaJOdHt8PI3lGubsTBoX6iwOWSUeCSpYcdMXKiG1A52xEMkBPgOqn\n4qI/8568CH8IbJ2GfpowYhMVbDhh+HXZRjij5D01+enMn4jHpQErF8sKICy0\nP0vkwTWuthz2/LZYAiAwxygUEhUiS5MJNuKLTNwVjiREGkfi4JQSSHOgLzkK\njudyXpcUFzRHRruUzlpQaH+bMXUrZp41LROzqd4PiPGYHU2BCIsh4NjfJlJ6\nfNBmS9S+boKj+Ek9ssNbIrKg9Lb3AYK20WT5L/J1fYtgUkAepXKMQKlrs7J5\nun1uiqDV/3sFQBao4a1h8gMnOPn/acQ5tWCHqr+oNC6UmPHsb562iQxxIWcV\nvLTH7UCmty0tp/HIfTtaCHCIOJgqt+7Uo8ZQend5MfdkGJVTV7iV3zdMr6DT\n8gZ+\r\n=JQt2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0JD9uUNw6eZtTdfctQyMMFpcJwY2SiwAHIvyymiHVAAiBsGYEtHIr4qo5vLeItqz/PlLQkOtY1XjTtIGnIXZK8PA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.1.2_1578024268765_0.26577276104545366"},"_hasShrinkwrap":false},"1.2.0-alpha.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"0d1a85161b2bb9a60775baf20beb70e165578b63","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.2","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-3YKXGalubTqkLcY1wWEYCWA5l2i5mMrn5KJ4D4C7Lu9kVsVVNv15KdjjpUTFVtBwtTT8PYjqDUjVLWj0O23B8g==","shasum":"2f5d3f8354e8988774bf4c5f86d7cfe9c028d8c4","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.2.tgz","fileCount":350,"unpackedSize":763395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDr60CRA9TVsSAnZWagAATdMQAJ7iL+Du3vL7vFr5f2vw\nkW059jioOHfDitPhRuvDyFti9qEKT8r35KLukfukD0nKVsSBC+NWSqqryL0L\nrxHdCwOvbzIVqpK557oOZicdSmP9+L50rUwrqTUZbSMjmdLsAHW8Zov0oX07\nMoWCxYECJzZqA5qGMIHThhIcFZRZGrjrF1bsWhXOjD0y+N7XwLGhi6Vet/fX\nIzYuN+hVhupIg0u+7Hr7lO2zZOPCJd2QfPZgsnmmk5P/BR/Yv9UbN+vjCtQa\nBbSltCh2OUysYXmL52fFEDSuiiZ4F9MY6WzEZ9jnIve0wrCuv0ZdLlIkzDlJ\nP3Ap5MvlXqe+64Zm56u+vTJSvtEHQFjNl23gHk5dqwVcEuko7hunQMlrczyB\nWHK78r9hpVBGqCX+Vo9WQuMLfAk52PgNobdYAJnUZRoE+t44ian40OySWSwu\nZqCNYJamRveMxI8+0B8F4h0uPC8XR1yU7IH2Z2wjdLg3aWtvU58piIOaUSLM\neq9kNYY7/BkAwH5nhJB7hxKu33yqFMxKVD1ssqkT8lba2YjTcuq2bSKf+Gma\n7MHumACL7K6fMwmiUuoVYMIhcECezlhwMt1GRaUh+/bwKNeKx1M5D3uZ3jYt\nb5AltUjQ1MO1hwx6AXx45gO1vyNeZ2ZjtME8+gK9T1qRnP7bd+C9WxQ0PY6n\nhgeM\r\n=wxWz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeIZo/WwSI8zXvkZxoyo8ZXTOHqr1hMtOaRSG4xu4oQwIgNwVkOYXDFgUNe1L611/doW4IhYiRXINrv8WZmM+sPM8="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.2_1578024627987_0.33866897368012894"},"_hasShrinkwrap":false},"1.2.0-alpha.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"22ce7607c0705669207f5334477079a0b2a6ea4e","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.3","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-QYTE2EIieQrl8TsoLmYPjXs0JkLrxK716CVSHUwaWWne0xyqTLcinlVmpLWOBtycbiCVNAOo8MOpaSa9mHLgyA==","shasum":"0c73d48c231f35fbcc4328a6db8c02e505fceed4","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.3.tgz","fileCount":350,"unpackedSize":763914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeEsTSCRA9TVsSAnZWagAAn0MP+wQsdTh1knvr9TNXpRJf\n0AWi7MSjN2lc+BhBIrKei21c4lngGaViSeU78ivSjWuXjOMbUfJytkc3vNqT\nhf5FdwcXTkPxVJRvIjSPfzX0fEDp1o+qr0CTe3blaQbDiGFZEp/GXEOw938i\nwa1iGUKiVOT61Rxv+SVQLPmFmh8ic9v6PC2kxBNYlHDFixrmKmv+rjg39Rfk\nkCN/zzWYzj5j+lYdUBvHB6Ump/p/4dIkJZqC4xg4bkghmlFnU3z9cErHjdk0\nBKRAu8MPnCAkM6DmjjcaKonpNEPsSYnvgjHEi+pzIsSSIBuCvgoPmImGLuda\nlM7GMTOUEJhLhYeVxI14VO4i+M3WXNLibnvui0HpSqy1osgBePbRJscnQK2j\nZESAR/prs8piE+NLBfgezSH3uJGrf2/YThBIf9WtUUG12DyC3L0fsfWtCt60\nDFnnkXMGKNR1O9z/C/YZhmKsZu0riH1do5NAcS8Bj+TXo+Qf1uFlnrb5RdX5\nDnp/NG6AeQvgeY7YLaKvk4mfTWPpMG9sR8njCJLvDNrSgx+KcDmq1cNtRM15\nY+WyhrWYreYWQ2iR1OnRWj+dwB0Rd8jc9PpwSO2OcW+Wz9wv3zj1WxEheQwS\nQPiUnxbpI1xzH7k2pkv4Ipa3dhB2eLnJ65UOONLoRzfAsJHdmnSpv+1QWZSY\noa1G\r\n=02/W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVASdWSnfBhVcMpg0VwjgFzJyCL/f0fgJrP8irl5zxbAiEAqOnlt9ks3DIWpwvAVB7EQHhFJB1wqhy1myziTm2CU6Y="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.3_1578288337622_0.3268793586978007"},"_hasShrinkwrap":false},"1.0.8":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.0.8","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.5","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"6ed0a759bfd42f2f8e9eb8986c213f13b552fbc1","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.0.8","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-sN7FfzmB666SmV1K8IYZUljVNQSkuVRGrIgkh67GSakkUP5X4FDstNo+/bHzO8Xl6z5llTN1M0mxLBakrRGA0A==","shasum":"47f9af4c816316333f0e2f6fadfb060e9ca53b36","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.0.8.tgz","fileCount":330,"unpackedSize":709940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFY1kCRA9TVsSAnZWagAAgH0P/02XsF2fV9iuETgiIaQa\nq6TQIm8pruryLtXvIWOxSFXRouSrKUh4b72i8I9abpOXbx/XzxS/UPOSk4vx\nXTve5Mtbz+X1uu4tIbrV6axd6eBTRsYYqla6vc2OQ7L57mgVeTy9w7ADa2hY\noxtem+KvLcGJmLrpagZoI/goTTn0U6aFbEor1ZcqrYfFtzUG597wTMQk0PYx\nSI6Mh4fEx6p+JsDiIzdrFgZBnoxe3r7BtxrAkJSviioHDyR5IwOr/zCfeszv\npJbn0ZWEnzjkuQsq0rBQmTTP95/eA9zkoP+yA4NW9QO6Ro6cX0/S+H88pdhk\nT8Dmh/FSdnyGDlIVLNcTqeguNRYtEq7a501ERf9vOxuKCyurWVujGGqAXZk9\nOJY9p5kaiuvLw71u2pWh5UPGY0ZEKgrvfe4pEmXKiqoQnh0ycIN5RhVEFEyh\nMYwFduTuX1mqVZV2Q2xzVAkSgU7GQ0LV6QIGT59EOq3zE4b9sOw4reYYCbis\nYcohLualChXyD369E+qnjOy7DPtrjSh+ovUYqrEQvm5Qnit1Fj1/AQ0VWmZ7\nQr43HsJYLYf6lCQvOTglyN0egy+m9kkE8H5X4ffwudMfYWHtENBuudvQqnQI\nGJh7BWbJe6/ZKPqLoodgY9OSWX1KKFQpx7tkYAGv9YNRM3VrEonTmQtExFNw\n0yzC\r\n=juB/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6vQ1aD692iNPLa+/IC/rv88cOex2ZSND8MzWcrFIbaAiEAz62EUUf5/JEdplueGAxHz395XBY+l9E0+tKNn9d+YnE="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.0.8_1578470756136_0.1089857720194436"},"_hasShrinkwrap":false},"1.1.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.1.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"0b403c9e3e3c13fe9f732e4d65bcfa188169311e","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.1.3","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-Mu+A8346ZIOkvQti1UgGjc4/GmR5MEra/nVJIIlQyMn1YLMY48lNfbgwf2eW6dM/ERAyawWxiCTf52RYhOA+Gw==","shasum":"4a2a807696e8e5993dc487e00c2d795a7c757b4e","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.1.3.tgz","fileCount":350,"unpackedSize":765449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFY6ACRA9TVsSAnZWagAA8kYP/2PzCZiEnrDi07FoN9Op\nsCLvCtDVOjHQBxL31CS/KxLP/FpywIYqMaZmyAGTQgYlWOlMcVeIZtEEqw1Q\nb84HYvJ9QMfvntDAZvKbMXVuqHLOuh1PcUaXc3LOuXbLcxcmZqprg/On6TrK\netcN5ir26B14CBJl6WAXA2bZMskLmOc/FWLdYWHd/YynkZjz7Jlh2n7p50Xd\n9Fyy7ejh4qJTQvSN2gpJc/kfpPO5Sx7VRaoBZih8sVYDkVN+1C8NzFmDvBwM\nOvSNaa4+Y8UJjv5jwKornNA8GfrdOKVv52glyv/EzOXnZwCGmLckVuEVV+Qn\nlVx8V1jAD5xRexQJA9XygtHeSuH6eeg3wFJKU1E/5MHt6OX1DDwM/+jWeHdx\nmZS193ybLDRD6UVudOENqPMr0DmA2R+7Ws8xf+K2J6NGu1SSat+OxVmvQpWt\nsivPJyG1YNimgwoKV+RcYyQfQELKgVILHpOyPIP2xQ5AzUE6MBFUQGIuPIWo\nuDjOQW6TnxCOZLci7YXlfLHkEpXdz/4RCneDTyo3fhydnLOvfv123HoKPkI6\n4CYnhRI6/mC1IPrhDWrQ/SqdXREiAGB7i23/e5NHVZntNfvk6082wekVPmnf\n/kvg3d+JmTiDbQcIHlY2DKoVBvX8jY/mIlAsL8GLxI1lhrH5hZPzN3o351ga\n9j7N\r\n=2o46\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXQBGAGWsZRJNhX1bGtQf7iwK+3hsmt4PefjFPrwDzyQIhAOu5AwE4eMpDQtZjM3JT3TD+8mf93nM5pgjSdaL4UEsQ"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.1.3_1578471039519_0.21595923840552822"},"_hasShrinkwrap":false},"1.2.0-alpha.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"cd4778fc830534b3fe320945e24a1bd601635b3a","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.4","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-lwSsk8/C/ubQW/gac6jcYEJu+xC6KdVF18IFa7NeOpw4dxHWa/f+0WzCVAP1OmJidIGubfxRUTAscR8drJTeYg==","shasum":"388f294d77da8c7f9b3f51d59e743be5824e9a4d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.4.tgz","fileCount":350,"unpackedSize":766029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFY9ZCRA9TVsSAnZWagAAC0oP/Ah5sqmu0lptCdVj+eIC\nZx9RK4rtOVFvtm+NUuK3glX/zMKElaquPV/wnqVdpeYd7Lwy9ADR5iwJXsQ4\neplRDiAKhG3QL0tjd3aOG9R2a+LM6/zDi4HwxqUBbz1vvcAP22FOuSaHiA61\n5qLYxpBb/pndx6/qlcg++teb0Lt+HdA2Q+Q6YvKAIHHDqOFqhESsMYCh4yCj\nQP1rjn9jdPmLVJiwgx7a0p0iEsg1JYF4k/eLTjABbPg9YUvGYODvX+Cc8z6u\n7jfZs7FDrEyGZhtAWWCfVouRVYDuTKJ7Q+alnFujlKfnGVUIaPZDH1e5gzih\njgpacMzagPFi8cI1r+GE2d22MeIjIgXtPopksYjOq4nEpgY5fGKlch5+yg9C\nRqRumVggDPOk2F0vrCAQ4LjeYm7U1U7vwz8sPtH6S/UT1dFbxieIR1RUEDei\nS+ZyFx0j6zJKn6hgieA6GL0lhpU0frvSKYc8IGz+v6RnLySdKKOX5VPQ7Rvw\nYYBp4UaUWCp8Jtzb3UFYe3lQ4IDQSzgNcZxPThD/fXJl9ppBhN7YMXF2vOi2\nfYG6B6Pq05fU/CXG0Xw06Fv3q5+6H/tRtidBARdyW+eTutTXu7jo+SMvswDD\nKmfKCeIFTJrXrdlTaCqzt53xMQ/e2UZPkx5byyVxZcRUijoCLrKqMBhVAlNh\nSnvt\r\n=3JYr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCY2GOdBqkBytSr8LqiHrvSB+4ErDq6vdYRs7Plq4z1jgIhAKDla4AgAVtBRCIcFucTphBaHNCKuBiGLKMfmLQ8mzQb"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.4_1578471256726_0.4038127751369278"},"_hasShrinkwrap":false},"1.2.0-alpha.5":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.5","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"0f0039cf59d29c12c9e20b243b779d91ef520b99","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.5","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-dt2LKkFmgFeGc9OrzE+re3+15bjUYRz/IxbT73TK3qcVZotQghDckKg4EJoOdNlhUkCx2qvvy+G1OIRBkTqZdg==","shasum":"3d487b9dc0fb2defe1ce78ada4cf6048b8b7c101","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.5.tgz","fileCount":350,"unpackedSize":766561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGDEUCRA9TVsSAnZWagAAYxEP/0qE4SMSSn45WzbCZ/q7\nS2sx1n+KZneAhSjkqH4asMDmATSMApIfbAzTeDVUpeZW6mF4/FsIi4pvkTzD\nOnXv9J7hwQOheflid6BON4VROeYpmLT/SRf67ppk6yWB3/Xvs4Z+yqXPRlWb\nkTamDhNE2xHD/xDgqRTpZQhDrGucLdbJmrkbBRQYfbKq3CzJcCcLBbdOuhZb\nAsa/VVLK1CgEw93vTfK3BoKB0XvrsWOf5ObB34PK68C29c2H+KeiGtfuvdgn\nA13Rgk6VzprSZ1Q49pwjAysvHT7vgrKD3TNEhPjm5HMShthYylFYMOzy14yD\ncwjrJTs1tlkuvo7wT5U3nqdwAJDCQYetMYlEKyUbMak/eJpdPs8P3CpnJ1Jk\npVT4vd+Hv3IAFS/gP7e59ZYzC71HcavoOg8r5omKrfC/KAwXpa0HzCj8R666\nihJzrfal/2ElrwERCUeR6QuBWlgEdCFdy85OCZZR9GU9mBsE1MXP7eLhql49\nKYF43e17i/DsbeEIjKnXz0u6X6mbTXthVDyKcMa2Z4DjJKRLdKDyPuh13Nvg\nYxjNXvQLHyHiMlL9DFu498ZrLD6TFE/amfXceypiIaDfXvaZB3NRi7p8AUvD\nbnnrkZCLyF1MjrGFi/q/I5iNBgESHGFQoNklAyVhzYsHCiFsR+V2yRem3veo\n9ZW8\r\n=zq+f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGEVtqq4kPw6JRPj10X+DxYG8/uGFlWPXPHFHB9v8VQNAiEAu5b1duLOvVDa6k5pKkOCIsy+2t8sE0ImMt+EO6vrG8w="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.5_1578643732035_0.49774499670372174"},"_hasShrinkwrap":false},"1.2.0-alpha.6":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.6","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"c1dc15223e7cd7373c80cccc9f69425cbc1e374c","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.6","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-6VFUlLAstDHRfqD4gjCcAUydaLP0is5Pnvttw9GMbvUNyQDfKIUTsEImqE3TN5hNrz6Ww3mJwZOp+3hRG6NGWA==","shasum":"f601c2961f0f23050453c63e0b88a721e9fc8e5d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.6.tgz","fileCount":350,"unpackedSize":766561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHBsUCRA9TVsSAnZWagAAyDwP/26m8uQe1c23PjZfu/N4\nGw4ubodbfAFmwu7HmBci6StXWpYyslI04nkJmpnuSoSrqg6sD+DVq/jWJXw6\nBNrxlOKIPKxnSp+snRj0DKeOBHjOe8oFU82GvjL6fEzCUEZrVjbjH2C2N40E\nMMGPVw47PH+3d2HP0Ph7tJHmJ3L0/uO5SGElXpfuafN5CWyOY6fkt7D+Te9D\nP0goqnsf2tC6bt0wVcOijNuHJF92M8vxF6L7e+MCSJz43zsS1lIBuTj9HXgW\n+E+htfsPMxNN9f2TwgoqIDA1SrAQAewzxAAGaWA4BkZxRPd07vdT/DkfCmjY\nLHtpce3xhVMDeeikxyX4SnGKX6l5xPosAzpktYrVDphBrM9htweZjIzZ+2tw\nWNHKD+8huq3x08s2g8qQEU6MfJRaf4nxeMNSw94f2Qh2AARc1mPeYEh8odPX\nZFPxd0ZdW1dyt1rUV77dZwcYIZafL4PpH4rO+7rVsjt4K7ZgV5lkPB7Whjqv\nhs+Ieg4csGd0Exhm5gb+B0BpKOksvVuQVDQxwwK/it5coghMjIKT3GXhpcWl\nFtymhILJlFlos/ZGbVIiBqL+Cm92O+0gzdnh7zZijJn719RMMOaSra/5zQNq\n/FvBdZAacha4bxINILqrJa+VZqnVfiPi1cNWpWkltTynv5YrPzuz7h6FpkoZ\nV11a\r\n=baZJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMJOyNcMnNsfbtKlxuu1RBOgpMYXTNmYorfQ2Z76AzSgIhAPC+M0Kq/tlpL2bcR7tqJdWAyPhG9J/EZT6YJZAnXipc"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.6_1578900244368_0.24091368990132245"},"_hasShrinkwrap":false},"1.2.0-alpha.7":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.7","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"562661c3404c766c089d59612f8dc26597070f74","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.7","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-K1BeSVWbaNzffIWJYWoaID6cuTUa3LhKU1NWBvNgMWwSBZD2rrILhP4UrhUOYhjRGFACuwb8Uj1Pu5yKUV7www==","shasum":"fc95a0e6e5e2a34b74ace075d5fbae4cd6002057","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.7.tgz","fileCount":350,"unpackedSize":761118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHYWsCRA9TVsSAnZWagAAEtAQAJXLf++lCladCUQiv29f\nUwkgvrQXrohQSDI7F1wizpSOgS5evTJJ1DJVdLJlA1zg1CvRpgZ5ghejb7gr\niwmRjFHZVeMsQSnsZiSTIUM0uHymBUVbjoXThKG6xLV+Lacd6WWzoiYKOKw4\nSs5mXudCPx0Sfko6GjyrWrFFUhj6CgeCPaxE/IzgdNlWm1MYVDk15OOZOJ3R\nBiM0FkTxBsvUgnc8wmIy6AcReGyiCByaarfk3eUrYcyf7mQBuETmlfKNDJl+\n0uXrGt1XOLLf5KAtCJYpDKTaB+Tj1EEpbwBiOkr4NttSVY9Xyq77ee5Up1mL\nATTJefxdx8LlIGyyfYdgFBCkBwYSI0JbIh+iZSAhvYV2x5kVCdC9KCedKTjK\nxxAWbiPpNcjIUY++LQr1UF+NAiPzEC9gGqcHx59BV56gCJ+o2elfI/PKsiWQ\nRF7UX3PuS6loiP2BR6+sY1AY2AVAtHxtV6ug+lZZuxlTkNTHqt/xXbFXTsbS\nmNYyBuh28xS8CpEbJ69LtK/5qOyRF0vSUb+XTXqwa1FSXHpCDwwbtVQWXydn\nFJ2qLqhSLlzRXegFK4aUpK1kOnSzp6f3h4KetCQTFmPU5HfntXLV7Vn6Z1zb\nLnuVuQK1DO1yTgvFiMR0uHFdBmRkiSvOub9lktlNXq2KwrFYHVVZzV9aX1Gx\nxCPW\r\n=U2Dl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBUs/XVwNtEw2Wx01vlkN5iKXkx96c+1KrG8bjZUcjqRAiBBFgjevSH6BLPg2P/FumAo20O3tVMYO5oo/Pc/qLcAgQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.7_1578993068094_0.8784576999827896"},"_hasShrinkwrap":false},"1.2.0-alpha.8":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0-alpha.8","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"073eb8521977a4385da34da20f308f68eef4dc62","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0-alpha.8","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-O3SsJTSpY3rpkAXH5mlDMaxE4AqpOzpQjx6o2WQpLQZbyIMRQR3nqH83Se1+kTGpDVkDzOAPw5FK1ZSD1hBTdw==","shasum":"c60593d53acc4dac6b25b17dc03e80f848db6287","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0-alpha.8.tgz","fileCount":354,"unpackedSize":762367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJRYpCRA9TVsSAnZWagAAZdoP/jGxzg3peXPtM7+DTO54\nvXCfToxzcpHPPIbpg/qYhkYUAlBe07FyH5d0O7nHAQmEudhIKlvHMNiMS9aA\nwEegMgI1VjNh8DZNn+/do4voIVfDj3GJE8HBbrEyMT1fOEOq3db6q3c/rr5O\nCOHLKJARUxlLeA9fXj09RceRrKBKqnbHzsuEf5OEmQgbg/qIZcjrEXe9UKN1\n7oacgmGGYea9cm+uo22qmPzordaGTtnWWv/k2YS34RpcoiilyqknOEsTvIyR\nBHZx9WfE7wLIcSXFEJScErR/Fzr0kFJ65wZLV5RtDkcDhbyYYS9KnRz9TTXB\npW5ej7PVUxRH3fv/w6/S0AOFmKot1HxbRqkzgMeYRtC/mIrjsqqZEYXWlmqI\nIQ/mKhBpgCBnXa94+V4DuvYiM6WM/B/pYsM5f09kfvJGjUAmjD1AJiGQrlZb\ngyh3iGuC75FSvMjjw4KoH5hFDZsHFmvLFZe3hDNQ5wdJytPiMVn/jL7z5NB7\nEtJ0ueTinjrh7eN2xjQKtAuGjmIEJx/NwEcLqkm1wvz/00SPvw+iUsNuRULr\nUqX1dA9OOkhA8EG26TdPOcs2HWG06tDp5SSkfFx5KD+ktNvioukjsp8+TKVF\nVY0TXSe5oWe2L+QgkN4w5bxvdaWu++Yz0Kw5Vfg96HsFWXRay8A9bE8jdYmh\nB+fe\r\n=P4yN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJoxEXDFyZOKOcb3Vyi7bUV8VSIlecXJSOu6vRroHJXgIgCv4CwFsm1IWGKPf2+V28/0e+NKYwSiGSydOmuQ1HNlc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0-alpha.8_1579488808719_0.6647711506696141"},"_hasShrinkwrap":false},"1.2.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"3bdb5effbb8389d958672c9b0a48b65f3592a09e","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.0","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-YAPUpDbC8ZDSx4tNBctv+hjburFZiu/Br19yHbMeDY406mFtax5kFWy5Df5FYu//d9ywsm9HXIosfYWqWM3AxA==","shasum":"64350aff741e89bf7fa69b3d17db3cddd0afc4f1","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.0.tgz","fileCount":358,"unpackedSize":765979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJ+xeCRA9TVsSAnZWagAAu8MP/3GWcFxtJtjwza75hbil\nP6ma/anTOEe/PdQk6aDWAw7/3JTyyny+lV1+8onpUuJ5JHm8o20AoLRdPNIu\nsxEPg5HUnfHQITunVaAn7OLnoelWHdx7DOz38SnusNHKNvSHcQi69yde+Zz8\nYc+C2yWjGX9dQLL2xRv3Bw4SDWIaYH/bhnNc85WiPLnzYld/M3isMCgcWHZu\ngZjRjAoAQCWXTk2n8vopEl37JI0xDibTFH2u59nQkbKMVdGRJSOQYtel0cJL\nNb8urglwMWDHFd59oIqiWbjZfCaCu1+QE4xjP2MrFEfOz6aRnok9wZulA8WK\nViW7kzifBKFPO+yIRiw7FSZef5bqqy+iPpQgbFyTNBLx55loFxrvKMzSObUb\nz/d9BqGr51LWoEvOWL7e9gWTURKQY1FtjoL+4Lh4Xm0zYfstCvSCFhmJxg8t\n9uBTnvAfnIEu6bQsb0Zic4a4U0oUi42DU5vOIcI68eeqn6EfzsvO4AIouZdv\n7kcUlXwKl456K9jBtWe6Hwtt0azOieHs80SBknSmnQFg6avE7mJn3ImL5qKL\npDsJbroCoBDfJFrIxQ4hNsWylw8hHQQD4mPp0HnyeOAvJ27YAHoc00675Bs3\nDDZZDLQFnv6hyRrGttsp4ft+sDzbsZbr4indBV4JvztUNytSUwhM/qkq8WPQ\n01qB\r\n=bW9a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaHO6Ns3BUIpnlblbgksIT+5/mUHhK9O486UltVB9zGAIgIVTMXe5Xyq4sMThKfkC6NVkiiwYyH/wZjpJa2rQYJrM="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.0_1579674718170_0.9741969059979712"},"_hasShrinkwrap":false},"1.3.0-alpha.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.0-alpha.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.0.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"devDependencies":{"jest-create-mock-instance":"^1.1.0","ngrok":"^3.2.5","once":"^1.4.0","supertest":"^4.0.2"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"b3f30341bb00b569bec1534fe0d31d9602a9bdc4","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using online one click setup\n\nYou can use gitpod(a free online vs code like ide) for contributing with a single click it will launch a ready to code workspace with repo already cloned, all the dependencies pre-installed and the server for the website running so that you can start coding straight away without wasting time on the setup.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.0-alpha.0","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.18.4/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-W57h7iiUYnxbt/1JTtbUlHfx+/BMa5TZ1W0kBtUCTLCg3b0Ksf0yRPMOXLwm5FxBE4XbtOEfczsqqWxIioxixQ==","shasum":"44f9eb14584b7e623148c588f34eb0da045bd4e4","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.0-alpha.0.tgz","fileCount":358,"unpackedSize":772235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQlJVCRA9TVsSAnZWagAAUcoP/j4ARKNJtE1UNwNtYE3B\nKLrZRfU+FdM71lQgeTKjxy5MLeK8pe6PcG+eIDL5Kzhy7CeBisJBWMuQ9HU5\nbe+2NwVhGXSDeGDtAIUtmUa+xjOA9Tva5+KiHYOn7E38M19CG1KaPoqpbpv1\nmARe8tsnpiT2/YnfjU8NBmooznR+Zyw1URW/XHn+PK7PZwlcYwF7KFG7Tbo+\nUfY5ZhVHnCu5WCF5PNWUatIdIF4kZo3XuPmeWqO7Iz46hM26Tdqj9WeV0Azp\nYd35GBNmaYFs67z0KmfSXHf/4ChNHKBWOI7+DwcoZxkdKBvMmPo5ZSbefCBu\nvbHt2418+tEATkOEvRWHRJkjG8OIPzX2qdxXgmveTINfFEAfUeRjOyKujsiw\nPBBFoDKWfMxXexWBPWAc/q5tC2t3BSGmvx8W8cHoCS5yvdrgsPMYcfsDHJCW\n8e6UDguxN2l4Qr6UZLyyju82zlG47+EMzsn9aPiqKZF4ow1BJLej7p2o8RV/\n9Us/XNEuhfvxBvHh4Pc2pJGEshR7Iy+cgykhyeuvJf4Nz6B+ZLMChFPf5FHQ\ncAWExYD2/+xEfENFclmat+RMeIIdL39EdU0C97i4N5pE7fCpdysdxKEgBw7O\nbGNtD6aJIn7BK4bOrcvEUSw3XxlGFpcFK796ZYh9wWEMHyRASJqMnLeUKws/\nwzGk\r\n=9kQw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2hwdzoSF4A3zlk7tTqNYzJwCCGW2y2jBY6b62rtz1sQIgcGjnuVuQ9dLEptG48RKtuv48EdhRbDGSsPKNDhYPR+Y="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.0-alpha.0_1581404757014_0.6204758317604426"},"_hasShrinkwrap":false},"1.2.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.2.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.0.1","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.7","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^2.5.0","@types/warning":"^3.0.0","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"5ffc0632333cc7d8593e43ab99949ae126975e4d","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-B66QBsekT+xJVkvz7p43VRJwnM+CHQ9JanwutD2N5lDhWb7a0JQFibSPVxBxPxw8vYeuUCCTNrrs/LTi3+FScg==","shasum":"872e351df1d14d0fa189b592e581ca2ddd92cc41","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.1.tgz","fileCount":358,"unpackedSize":767026,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRRwKCRA9TVsSAnZWagAAoLoP/3NAP6KDq1MJTG7e12/L\nUaPf0vqw56NmUIHBcrwnUPLcbeL3v6JMZxMbEORiJLFN13vGctEqersQTy4M\n+ru1VpsMK5ePBcWtLrFVkqxQR3qWNegXvzezww6dTypmWFrb2nxHR1qFEzHt\nxb6PKk0sWpCGQsfF7dLSjxuB05JbC6nMWa1uMkXiJx+8sES657P3cEHojUge\nA/eyEu39UV9k9ArICcQWVgOtZ1gU9vW5oV5qB81fr/yMGSg9z1bBGQe3rovQ\nSag7+P/x6RP3aNqnZssUFTY867kbOsZJkuX9TOCru7Ggt0MkcMn4s6gUu7VZ\nQR4FKtJGjSDp2LBtmmMrn5jXuAHt9d2MOT9fqsQt4mtBShS0wNMUoVAV7b4V\noJCKhPXpQJfufl+WymiJxzaDeAq77xEuN73h4lj10ARz0YSdpuCQikefi2LS\nB1VkOHAZNmuSyWWeDb4UCW3MWMQjCBYrwl1B0h0HA04ioukBGvcx4rJSq/1C\nDnXtNwM9gcYJ3lsxAZLNFOiO3CQv4ZjOMtN/n5d+DlcdgWkNQSfVc+jjgwtx\nhFhk7MFdKmK32Bzf3tvEYtRry3/i38H1OW/MeaaXV5N27DryxkHmubdE+gbA\nNXmwDUX2L1R0ONbr1qb1V+FFyAxR0B9uK+G6qlbJgPas7qSEz6RAVLKP1xLX\nLDBi\r\n=cV6b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHaVmA58TH1WsK8r2B5MNtbBoksnLqeETCS6aE6gwrFAiAY/gL+h+L2lvptoXY8uIJiOIAShDmdb+94zPJzf3G5aA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.1_1581587466186_0.4824395756419759"},"_hasShrinkwrap":false},"1.3.0-alpha.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.0-alpha.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0-alpha.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.0.1","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.7","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^2.5.0","@types/warning":"^3.0.0","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"99a7eba4fb942e6c07a58bd4e1041460569d6a0f","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Targeting Broadcast Messages\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using online one click setup\n\nYou can use gitpod(a free online vs code like ide) for contributing with a single click it will launch a ready to code workspace with repo already cloned, all the dependencies pre-installed and the server for the website running so that you can start coding straight away without wasting time on the setup.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.0-alpha.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-3p0E7gQlLMz3j+A/5dfvMu4Cnq4vZpULAy7RKoMYWOMN/QCTQ2ffmfT7WArXU8yhqWHNA+V6XNPMBBb1jlCjPg==","shasum":"fc7a1d3a95696c2b482cd017e334d6902e88fdca","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.0-alpha.1.tgz","fileCount":358,"unpackedSize":772663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRSHrCRA9TVsSAnZWagAAbOgP/A82M8hmHmINffeO9rXy\nniq0lvuRkvLjlOwp/nvByaCPoNg+keGdSGf7MqZcShqn4QT76FU4yRl9vTqp\nqD+vc5kYu3UxoQf028ev1uxt2ERw7ADNyYP5W5YGh4OL3CwjKMWELMQgGGfX\n7usQA5mWF1yCuwHltqbMeee3cT5cPb8kgRpPVFKFcU/jRKP3G4Puwcr/vup6\njynRHp7CaM5u0/PkJ0vM1OlW/KgbenrhmBwsA2D7RQ1bpcqJxNQd1V3KzyLv\nr37cpJ44KMZC9zdM9XdEzce1NHe6Js0N9j1zZri0gGHUYO1yr2ZbBpvLPJw0\nIe/5bhVkMErED2k8ErCAkWF53ABL9tJ58A1W2Rlo+DuqgQu0Sh7C4G+UoeEW\nukYfTFwknTjxYM9yDcMnDkV5b0EjaPOZrxIhuIDbUCpKw/OQ6u35Tckdf7I6\nQPxNY8n4yO2mlarY2+I9uacL3fBd5ui19keirmlY/4eqY9VN9axbL7AaZy4v\nz3VwPkwygj0pxuXCx7JrH0Xks1VjGrPgk1CN/Dxt1/NUpa+COwntFScB8TSe\nuBh7uuaode20hVa+U207WZx08D9A39wLR8VAlIzVbSgST4zcqI3cZRRl2wM4\n0tWH1SGsI9Qvb6OzxXYZAwcrCDyUrpeOQyfNiiDvCwTXH8tWzRb69FoZGZlS\nZ2wR\r\n=poPK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGNx4OE9o0+CyvGA+k6vTJIt7d9MIsY3v8V7aMAe2tnPAiAjdO7KnyDQka9af5uoAXqp0Xcddqr3pHvoTS+Fx2ruTQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.0-alpha.1_1581588970524_0.6368008243897378"},"_hasShrinkwrap":false},"1.3.0-alpha.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.0-alpha.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.0.1","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.7","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^2.5.0","@types/warning":"^3.0.0","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"afd2f75ffe241cc6cc670705828c47605fcfcf09","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using online one click setup\n\nYou can use gitpod(a free online vs code like ide) for contributing with a single click it will launch a ready to code workspace with repo already cloned, all the dependencies pre-installed and the server for the website running so that you can start coding straight away without wasting time on the setup.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.0-alpha.2","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-EnvxSbFTf5BH9lD2nPq0z3VBPSqXxuLX9h7eEeImq1Uf1KJVga14yVyxjii2w7vQVdX2zA+YEnKg8IC8Xr+xiQ==","shasum":"15ea8f1cb1c36da2e80323a5f4d255c770b4cec9","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.0-alpha.2.tgz","fileCount":358,"unpackedSize":774790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTkvRCRA9TVsSAnZWagAAf/MP/Ak1sHWfqvRFJMkpOEdX\nwh2o6Iws1jhOMmbGT2SFq55iiE4lXHsDM2mDlDLz08NYnP+l1wLLhDx0Bk2k\nrPXVY/BdaBd6IDL6YrB+fvzNA9eRr+YAHkzp6EfkI8ZttGfWoCTskPE75nE6\nHHxfLS+QUWY6Te6RanjYlXKcmuSS9J0h8CIDwOoabfs7jZEsP62bR3p08Kuu\n/nt292ks5qm4OOTs/8CEdOy5kksJ4xzgE/cLUwWCPdI777a8Q9fAEcg8qNh7\nBTLzOe+rIblxGfv1kLyRwfm7c7liq64fqdZ2uV2J0Nse6jn4geqzoO73dy0v\nUjtP+kzOofr7KhE+06OEI/U0d6St2o6olUx3/+WmhXbtBdiOj4smos18LpXw\nY3+oxQBCeSaTgGYyGJzwlHWWSmC+9m2Ci13seOMYL9IoLUQFs+RHPiOltIeO\nhtTjWSFp0xPrnw3zptChZP2gc6RuecDVIhZ23vGyMmaY+QZWJN8EJxKA2ixg\nyNhdzwC5IJoKp6eNn0GiQYjdtG/KQWqrg3OstzTIckgrAhD0fnACTYxKcukk\nrV5xRW50roDlQSnsEWPFdh+D+i/UGAIl7LdPcagz+8ANIosc+fStHmHpOK8f\nFneKKbBy822Xe3JrZCKkJoUXl4v4OHvrSj7Rhlo61QFjw99MqJXboYEkpz/+\nAkfY\r\n=BxdI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAb0m99kfPlxUWvmx2hB0uktLradUzPKTPmIJui8+YbHAiBpB93kZarvc1tRbu2NlWmPJR5sB57B/zTg6Kwpycn8yQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.0-alpha.2_1582189521499_0.5443443286969238"},"_hasShrinkwrap":false},"1.2.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.2.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.0.1","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.7","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^2.5.0","@types/warning":"^3.0.0","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"4f790774e5ed5ea0da2a6802ace0a6088efb8105","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.2","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-nteZ+RYluSquNmThq7XYAjPvOVzafnnDbKkTQpHTISZwNpYrP8xBz9wPWBu3T8jXPKqbTke/c5m63lJKnltstw==","shasum":"d007493d086d11da84f02f3c72b325f0c52d787d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.2.tgz","fileCount":358,"unpackedSize":766931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU58SCRA9TVsSAnZWagAAFOwP/1X0OkBWWR0woWomePkX\nx6E8JDU0QgCvmMOkIDxwbpLYdBP2pvSADuJ4oY85yGM7ontxrrkkbi1CKsfM\nNMOBZF90JYjVG7YKQ7tXD4R7YdgzW5LHGWkdOahNCmQB990zBYBmPkfJvuml\nnSHqexnnp8ZE7w1RI+aK8c6QIrIq82RT2D+gb1IEMoVo5dXJb9nxrBmAez/c\nykdQIDb4krT53HXV2w1LCg5SA0osbukasGl4bFpdO1gl2IHL4zF48Qu7uo8A\nv61GEoHuhO4QkYk0BeU9qjo+Mih6YFqizif4EZNpLTsLG8tkRZihAFvynFoJ\nVSMKAbwze+OjFB8o4X3ZzViFqIwuy4MDKW8A9d9nZLE6/hTArbSL15JL5Hnu\n4EFYfgv0seHf5Xk7bIHh10KU8c/A1NGvJh34ThcYnQiyvT0W26zSrEtzvmev\nk0c6+FrF8k/qb0diakpH6/LfUFwTFXua6lC/vuoZPvmb/I0+gBf+IlEWs4mu\nspDueWiNUbV1sI0wmopdR3xJxbi7r5cok5LGQHHOTLAehPB25V8hQXU2LrFG\n17N0TDo2BRnzZy/9UtuNKPoiNr5AByJncM7e8pkcCAX5W4fCtvrxJ00voe4W\nXmt6rsA1ZbNp6B8S8VVhiUu2nD/XqTGdbcjUl88hX/k+azT/QIMS8mrD18w2\nhSI2\r\n=O4I4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIANX56OEnjJvOOKDxiOBT0cTvR8NaErrjj6Y4LtLGd/pAiEAqckisbJsykn0INzt1o7Y5+UIu9j8DZA9cJanQ29hFpo="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.2_1582538513590_0.30037621110639456"},"_hasShrinkwrap":false},"1.3.0-alpha.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.0-alpha.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0-alpha.3","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.0.1","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.7","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^2.5.0","@types/warning":"^3.0.0","arg":"^4.1.1","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"fec6f580dab5e45b0148825222153d37d270c55f","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using online one click setup\n\nYou can use gitpod(a free online vs code like ide) for contributing with a single click it will launch a ready to code workspace with repo already cloned, all the dependencies pre-installed and the server for the website running so that you can start coding straight away without wasting time on the setup.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.0-alpha.3","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-E++d3PAaShwc/I0DVDb5ZA6fXbND3U707tLtponoymygwx36KJq0MjAx+BFaL2r3oxOLxxXS4S8R2rKz2xOpfw==","shasum":"a151979cf3668acb8b115087bb4a2a775cdbc6ea","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.0-alpha.3.tgz","fileCount":386,"unpackedSize":812400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVfigCRA9TVsSAnZWagAAHFkP+wXLMRmutE0eSt3jYQkC\n4o4KRKv3VwxzXHa2ewgqgUAqtF1WIZhj9t2GR2Y4TvvoC1USKvo6Db2wJ3bd\nxMpX4JYJI7AOrkh97V+tX7grR58lnprFZFBIRgY8Tf6kNe13Ice+27kGV49s\nxyCtEJxyWGqVeixdtmZ5z8vBJlNa9mnJWZuVGypCa4qgnc1iUM0B36c5DqUf\nZZwv9WFNQmRj6qixiMj/3ALvtclcYX5LCTlbE4BIlagMk/Zwq3oRxQN5EaaZ\nyKcV0Sq3kTbEeAbW6FJugv8tq8w4yXrVpes9p55LoN2TDB8OkjAUDqvo1+/M\n9awnPeGVpaYRVddO2vVVjz0PdqfbQ4UKKFa/9CPc+7LiMpRFgWGQ5s81u01k\n4m6e4JBm5+gBHrL9GEFlkO97wm5eWrwqWsZjybZYEFFzLrtG98LUzIcW2uf7\n0WyOBRGerh+5r/zuNvnM+AUoS36eXU3Pt6wl19o5pMko5SiJr/1htuOWvHVA\nIpm9N4X1w0jzAbzOGntvkA3PsC86NJVw3BPanW+5hct5lHGm0G138KhXQD1W\n8qaQGgHnKkgvC7wQmGt0Dzkq0+Q5We8sBlFKX+7cTwpfgwNwKH1nFoB1LcsU\nIuHcaLlOxuDtkJgUaqE+COaXR80qlQlnqiU19SXNMbiYxg/96fIvliWCats2\nbWyq\r\n=Y4O+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFfJvJfKGchqVU++KZCaCx7uYQFfcf8TKjEbjteG9fZAIgecVad3hIIuHcAYpKm8+PD63rSJSIhDYClJRE+v2ViY4="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.0-alpha.3_1582692511547_0.4519516411357831"},"_hasShrinkwrap":false},"1.3.0-alpha.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.0-alpha.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0-alpha.3","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.0.1","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.7","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^2.5.0","@types/warning":"^3.0.0","arg":"^4.1.1","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f69342ec832c5a235c227e3e6159daf1ad0817fc","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using online one click setup\n\nYou can use gitpod(a free online vs code like ide) for contributing with a single click it will launch a ready to code workspace with repo already cloned, all the dependencies pre-installed and the server for the website running so that you can start coding straight away without wasting time on the setup.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.0-alpha.4","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-7WANvNoyOSwTmd/LfhH1X1SBmoSc5Mk+yV8xVkouIFlHc/K3w7v7StLwtpwG01c9k18ND5hhQTXD58yGEzAi+Q==","shasum":"835d3acf23680ce4d5324a5380674fbbb3e97b39","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.0-alpha.4.tgz","fileCount":386,"unpackedSize":812637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVhs/CRA9TVsSAnZWagAARvMP/1B/ttE3WrfG62NQThTa\nE+RotrIQpHwsNsg57gz6lUQe5qcgZjS6K7CIAsjaBCxCKZ08wck81dtY30Ni\nftD0NqLdrki7Uidzx5+/0QzopjrVqOkEbd2M5U9YeUyBSLvkv8Fkzpz+KaOt\nFmYyLkF3+C9a3fzXhZis6xXRB2JlaYUEAY2IYvpBOZ4KLRi4sF5iLrvqfc1o\nP1sX0kmwRGHhvXGgvj1xFn44NPTubEag6Kq6Hw66Ncmvp5KPVoF5NZOlRjtk\niKHr6Yn62hfVlawkik1QfOum8aw07O9Z6422iN3Cc2CTI05Oxcw++nBbECXU\nEwZEN4qPyN0ljsYCf+e4RefJMLzE8yHeFq2VCsIz5WagGmoU1euVk9VlvKlq\nG55yj+Bgb7GGaFQadh0H+Bf7gN1pfijalddd3CIIVrhwZmlQYU5klFyd7oFU\ngsJm+cCQii14YOAUR256bsrtfZQv7syqA89k4w9cEH3qVcIEuobWesLs5mTY\nXn+Ck2khZFXUACfY/xQ7lTHnGUYCYxZAZrpvpnrsJFWgp4CNojjD825twXKX\nkICWMfN35OLOh3ZiYVrA/goHUHfDKl466GBld0Q7Bh9PV9wUY/fMuMLoo6Pv\nzCI0IU8+2uTu5GEQZen/ACBo7vGSXT//Gcla9jTdimV8yxHMM/g9rZ06QKYP\nFryX\r\n=1DYt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvMdyJcO/RX89H/XkYE5n7M9vjGomi6iRsrnUam9ZT0gIhAJ10TWE3MKBr2vI8hqK3c8kBck3jm1WBvbgDIAo+TzoK"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.0-alpha.4_1582701375427_0.0754398395439253"},"_hasShrinkwrap":false},"1.2.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.2.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.2.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.0.1","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.7","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^2.5.0","@types/warning":"^3.0.0","arg":"^4.1.1","axios":"^0.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.7.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.1.0","file-type":"^12.4.0","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.1.0","import-fresh":"^3.2.1","inquirer":"^7.0.0","invariant":"^2.2.4","ioredis":"^4.14.1","jfs":"^0.3.0","jsonfile":"^5.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.5","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.3.4","ngrok":"^3.2.5","nodemon":"^1.19.4","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^3.0.1","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"b43f89dfecd7fe2e1f03c45bddda76955cdfc78e","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.2.3","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-2jvDqejH/M5zVEvpSmtZpEsjEM87z13MxR/3ZCHrYUhhhxeDFm/RhLDWsCHwfx7SMBdSJsc2/fBB5fXY/wT/CA==","shasum":"46cfe7a6ceb5dc86ef2c4151057c51653c8f4c19","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.2.3.tgz","fileCount":358,"unpackedSize":766931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXzFOCRA9TVsSAnZWagAAunwQAJmmqg+vPzKySwBJqpMe\nuMwxzqbqvMaXlywvZpvEw54FuktiokaJmN5Q1L7Cj0ZbNSKZk55bTbM79Fas\neQIOAh6TjwMN+sHdpraNVn3ZeLoenDuypLFk0a4YJmUnpz6kGwuAE+16fAdJ\nO114zD8POJk9V0twfAVTWcR60Z9OC49t4qptbVUsdAfm26OeE1P8n8MmfuvZ\n6P3rgcnSyS7c/Fbb4kQJF2AtcsxVppdAc7OBKHDsGLjamQlqZkjBF0eicAdf\n/QV7gexb/PC6vyRvgAj4BM07qngjgnEJ6MFQdmksPvk/B/Swp6BjbNQ0imdm\nWl8xI7ANxcxPv/e+YBdYahQDZjkeII0s3pYYsO5J4dl/viQi7/LlKrwkDt7Z\nZRqgYIkZei8dKxsBEy1QEGj8fLyjMhfjU8F7LbOrT1z4sr756zcSpyK/jHRd\nybxMwlYRBt4/z7OmOhNZ19PseXn69RDLz/rYh0K8u0gAFHE1vkZ0JqEml8FU\ngRqKswhEkMjxBt+xdvwWcNtuBW9uaUJgMAwZSemMK7u/5vQeyQTZQNX29M5c\njAY4xhQzshkmTZwOomwY4al8x58QqCacjt6+SzAnZUjB2e6FW3wmn4d0o/e8\n/z68jkkJ470pkM4nL3WtJvNAYYqZM8hC8L8/bcpTS3bPgKA1y5i+COsKwmSl\nRZlJ\r\n=R0UI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZoYG3kiD539Jv91BPKk5m3ksQYdIYXoKrFvDDIx1MKAiEA5bs9tHRR4+hBZHvENFE8U5cWSJTZefa0TyyhkNRzMTw="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.2.3_1583296845781_0.9529850565576781"},"_hasShrinkwrap":false},"1.3.0-rc.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.0-rc.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0-alpha.3","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.11","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"a5c89c075e6a97bc4e5ec96800805530d3bf33ad","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/68366395-3080d000-016e-11ea-8bad-d9c52a215376.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation for the old Bottender version visit https://bottender.js.org/docs/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. his approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the cli tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/getting-started?new) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n\n### Telegram\n\n- Webhook, Long Polling\n- Update, Delete Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using online one click setup\n\nYou can use gitpod(a free online vs code like ide) for contributing with a single click it will launch a ready to code workspace with repo already cloned, all the dependencies pre-installed and the server for the website running so that you can start coding straight away without wasting time on the setup.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.0-rc.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-DEsxAkKae8oTcoG74s/tGF1MeWcDesC0rEkZeQEPqX5/jVtBhJdDNFdfSjefu007vGRiUuOdYRgKkZ4htSsOng==","shasum":"e0f65ab61eed029dd9dbcee973f0697264d918e3","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.0-rc.0.tgz","fileCount":386,"unpackedSize":814880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYG+SCRA9TVsSAnZWagAACnwP/2DbyaGJo/PNdjZGR5oQ\n3E1cWrXsSTus1gKrhqpOdMXuciBJoN/4Etp1sGIS9+V/fMssfMuZoWPIEK35\nVnjwh67fJoletArIcitEcDCczrZewEGK7ghnXAlCZGLBm/H8NREBsdnhsuzd\nRhvhDQZoL4bi6cNOgEyM+dcoLXieFv+oRr7x1MZ5GDUnXfjn7ZUxSwN29KJe\nThmsSrvovgZG2J/EnX4kfsl7yK3MUNdyvU+4XJbGoqxS7tbnaTnxLZ09LmbU\nZQDClPBl2LF5uP/N/E9DF4O3+AwDbXrfGF3FIf1vYPfYztQvq905jz1njJvy\ns7u5QlmYPFrifREYWlQSzN0zXtdP1vUvRlW9Rvz9nmeJGmfU3VbGM4v8nEBn\nU46UnpwO8mQv5gtMTrwjciBwCPJ1brJwbiWjUuUlKpqZemBKNBBGRV+QMs/S\n59P6th3k28w2eqfskQgaLVbAJQaqOB3G1T7zFK8rQnjgjdhYbFryKZIaeYxt\nRA2eFZveTGugoMJcGPOhvKaiD5QQaPaECccIMV7XU4j4EJNzUxM034NEMz0M\n6YdWS+aBXcuSRlxy6TzzZJD5zV+B5w8F6MfjczTmyuvSuvlY/8I8GZLN4UC+\nl0nOREXf12OzMN0Ue3WazQ0YKtSLrM5T288b9dZaCpQZdwv5Hv1uWKhZG8Tg\n2Z/5\r\n=rRGT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFMXutdlmaVHEge+OATAluu6w4RiQAWWVI9d22ek1wPBAiAxFa1sW53/tsqvH2UXngWOIKJgtfT9W7HDGpXxmg+VeA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.0-rc.0_1583378321837_0.4603425915255617"},"_hasShrinkwrap":false},"1.3.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/dotenv":"^8.2.0","@types/express":"^4.17.2","@types/figures":"^3.0.1","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.11","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"85004a258f5d92695474942e65d91bba90152b40","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-wVRuoBeNMW4xyEH/hTTO/GsH/T2wmWGXE2Z5D8dgDVfu47zWtU3HfCrpvz4UNZtqlq306Xx22LXixWu5hC45mA==","shasum":"00bf45f35e7245b360d01732139460c39b814cd3","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.0.tgz","fileCount":386,"unpackedSize":814867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYcIGCRA9TVsSAnZWagAAYukQAKL1p13VNf+ittHmQak9\n9vdJn1A3zO7848sVJK9S5/cvbDr48DctqJMg6SN7+Kh6qrkUdMEKidE/y518\nJm09TWFLAmy7tMj3mxIYFllFU+Ghh5RjTfWUi3hWWaEA6UMn3Gu2Q7HZf8wv\nmGyNGFbl/iVTc/tjcoh3eJ/CW3MdQrfQZpptJzfjwfRW3YEVVFq13qNO7aqX\nZ2wZ+I9O2y8eicOZqowcU4RLRyVr44HYW9M7r7JeJCw46Yox0zCS35ao4lBD\nTbfVRbgSKAOH22bpp3/M3+emhKgv/Li11Bu+vTJhAitJI+ScMvoXL8cfq7BE\nAxi2ZARpAxkKbWXJDDmeibWFiHD4lnxJDmH9OtzN95qV3hn5J2k/q105bH3F\nKvjos2T6BY5BxE4bg0CRxkReERV6COBdlyBzuJjGgecSFCiWM1Qq42ZmEFQV\nqvHA83kcEO+6EFrePFIGP0aKpM54exzji3Bbb+ZEMQ1lMQcPOSImokIbYxC1\n4F15S3jqhiGP/lS+/cc3SZCDeE5mjH6BwAzasN/NFDHa/JywbPCPrjs7ygCS\na2C3b0cNLUJK+2BZWV25jijBaQR+PByn8e3mQIjkaZiWqQ5zNsQcQS7KRABW\nzyAEXPa1B+vN5SXkt+p+iNL8TehT64Ry/pCxv/tnTNWIm1sc2sBRKtzPKEDS\ndN65\r\n=iePU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlm3lTf912LgFgzM8ZOpkY8SfZtMS1CDSYJ1n1IQs3vAiEA2nkQCL2mdFmObTF2sN612WY90mbfNA7tgUYFJZf/0G4="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.0_1583464965935_0.2595272491155498"},"_hasShrinkwrap":false},"1.3.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.13","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"6bf3009d53582da6b88bea9f27608c1adc637eb3","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.2","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-JaUvfqVxXvfmkGN/U7z2zWgqRB2qqZD0C9rLpqXMQjH8elrvpUIzg0aNVgG48GtvcBE3rsP71E49IjwX2QiIDg==","shasum":"cf2d8f10fa74d372a4dad373ace451ae0bb4bd4d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.2.tgz","fileCount":386,"unpackedSize":815834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegdFgCRA9TVsSAnZWagAA7foP/R+hiXm1lkNuz8uuUi8f\n+PozUKyrygCepfGNZfLRzrmyo2bdsB42dQuHAWhRiRDeZs+kXuabgW7xGZyr\nbVM71zOuSJtgArRoa1BIVQCEUtMvlHNvOFG7pdv8z+NcjP4HCqtf5GAu8z1m\nihVHTd1/4UnA5gWaupl1Jjmn60j86Gz63zp3JY1LkWJio5V9JruDTRrMiKLq\nNnYgy68/cZKUqlrmU5jw7wYSv6YZHdz0bL57n9vKQxh93gy9dG8oJkX5Yi4X\n6HMRK1ppskEeGGy5hVdUnd5CTWvBEdLc+6Zs3faISrXjvf8sBSDXULEspZhU\nWlS7guJE1RYmfnPn9KQ2z4ZME3IZ10dVIv8arYu8rkL40zx1v4z/LyChi6FJ\n8QlIhieoR8ajIopW7Htz54Hg7C79YOxliXJu4HzCo4sfvjGlEE6cpiXO68Wc\nVO38QEObmXSU4Ff7yrtyUftpo9NvnMOu7ud5BCjEg0qY7ZXNlp/kQKq4c04U\nMspLQ0Qmy1+bmcJZkzYmML44m3nVQzfgLLREKEjAuHTDCgtV0bliBQM2fmBF\neaKr5sTWeRGV5j282Ock/XeaZQK9I12fJjjc/ufvB8JtjfEUry2DfQvf5ELH\npIwIzaYP2+U2sKs20r5DceKYfZxRFMruqPhpcciWo99o5kU3mFZzr12eU91n\nQXqQ\r\n=5Wnn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaHys57jpW+fODG6w/RoAWgSBP+LjLYLtNnymZphZwkAIhAJbGL6OGL9OShFsSI2uwO9dgp7XBL6RuM2dpy7seX4kV"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.2_1585566047578_0.4968012869689822"},"_hasShrinkwrap":false},"1.3.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.14","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"16108d1ef7893f9fe5f73a2c5c290fcbfd842f9c","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.3","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-luFQZ+10y7S5YixQJwIrz2fRbX/gKZQjmGJ5b4fu5epom63xvfBQHoSM3fYIcFYofmWiq7CZeWlydG3xqiySHg==","shasum":"a5c356566d3cd245c5494c57c10451ab0633d38d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.3.tgz","fileCount":386,"unpackedSize":815834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehEbpCRA9TVsSAnZWagAAmR4P/3zVFzq/pc5skVO/p/XO\nc02NEpDaDIy/k101kXlURj9AVfnDtGrowH+WcUCl6ruAX+qgneXyKlT6izMU\n06MAL8K/ksNqZjoX/tPOnXnzPox3DupaSVs14DZxKOB27knzVGoQp/MbeGJi\nuAWfleXUvC4U4ZAb9JFsxh3zf5jSyQvsP+hV16sPqisPS0hdPgBgZaI0QFXD\n2xxU1F4lR+L0+UyW/nkefp2+cg7wH8+Uhw4TQnobxhKORE57KzcNG+9kGAqa\n8PZ+19E5zgudTRGcY+rNwnZlkFtjfxVLNLjFyvNuY9zpLANbpOkQdztEyNgY\nEt81BbnAax0V0IshFa2amLrao8wDqgQkVzhPrMuT3x4A8TaBZheWiasksqTO\ns3gQiSIbTafP4ENs5VKJG8AAyGZWQKu4ha7AmNQ6SZJ/glGJSpoaBW+yfp23\nygsuanzq709Q+Wu5o3JdmlASguqnzhEzg0Pv6Hk03LrgP2htPo/og19eKWEJ\nVQN7RNAqnZJogkkyfU1o0/kP9C6OpG80YAKIzAbrgttf63bkYxIWQ/dQQnNP\nWGuBzjbEVrXLuvNM15OU3o1ggLhxP3qI4BoAZVPSvOE+d0W6IjadtHA7yXk9\nRjdBx/m4j5zczU888S4lGHLYzrKzbz5RUz24AqTbPq+0ODsHrZ35sIHV2RaD\n/QZB\r\n=R2/V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD86WoAaTFkxN4iLzImMVVXFvSZImj8Wanmn2lGkGTmYAIgP1SspqCrSYMSDy6it91re4QLiqLLYWAzhFCT4WL1BTk="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.3_1585727209433_0.6561947950273737"},"_hasShrinkwrap":false},"1.3.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.14","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"dc02fbfa8cfe724e65e56ec3eab67806f9c803b1","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.4","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-p2LZLRBZMR4TUbsOUgIC5XeinuBeZ2QmSjZopGm8FlmN42dZWFF+9Yc7RjiruOHam0ZAbT2ZwQsM7Wi2x3nSuw==","shasum":"dd3c391dfd5af6ab33e30a69626d071cac68911b","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.4.tgz","fileCount":386,"unpackedSize":815941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiFzGCRA9TVsSAnZWagAAZAMP/AvZ6e2yh1rKjwNYf3B/\n+TfkRKzM2iha/MHxOj+7vpWzKmGF5qjjUqcfGhp2Im9/3LCXFv0uYii3qz4t\nNQjQjORmLvMqizuC4U3YfzhXanCnzEs6NP6pKmoSrirN88KTZphM+kanolp6\n8WjgvJZ280ey9y67uo69xWc+hTtFO83iJNtgpLLWK0u+vnkxRLAZhF+P6eno\n5FTdT1Z1ko69qgrSoUxgy9k06D2zgOqxjXuokCwgrk4p+qAdHL7p/yV0Ai5C\nhuWIy3abAiHG4RewZItjsurIMLMa/4YlbhXMVq0cB2T0+pRib6RQajewwrjZ\nj+imxHCrHYlGZ95fUs/2/0d3VITXgyT2roMCCNUXInA9azpXlzVewzo3nQAj\nbGiVpJPJplTjGO0jE2Du4/vwQDxvykZS1AwhagAyMdsEVwHAhUuCIQlVu6JY\nEeQCZyL3zUl9pidGzLmDdmF+7sw/ipkgFFnx5jM0EXEoDzKJtwwDVmfRuMA0\nbHglY9xwEVxHn5bIOlt2MSGmxfx+erA6/S8ZyzTX+nvP8O0IqQ4qrii8oW39\nAmhFVAXxNMqggKAdHay+fGCXjAtPa3clM4VkB+j95ZKEVNvkeAFNhvoH/jPg\nFOo3o4IsF70ZOtepHKn+frEUk4HUCEBv0gE2J39WgD+TIqxU26WBqLejgKws\ngmAK\r\n=Q9O4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+HWm5/vJtDrxAdW2PAjgJGAZ5tvxJ8fQ85F1tFQ0QaAIgHIFVyMTNpI9mj01dqiWx8/e8i+egJYq0YE6PM0M3Emk="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.4_1585994950050_0.1678682909367335"},"_hasShrinkwrap":false},"1.3.5":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.3.5","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.14","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"c8cf4cf414ab392662cf9b885bbc868483d4cb7d","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.3.5","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-yJr2aCIgepuIa6vNZZQNiskU0wW7BtIvVnfl3pab2jwN0+pj97VYLpx9XGsTKi/FrPkI944uC4ADty6gWcBPHQ==","shasum":"e2e8c95704e091894a58b5b36a704ea6de53b56d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.3.5.tgz","fileCount":387,"unpackedSize":815991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiGcwCRA9TVsSAnZWagAA9usQAIMpGYLJbj2KoKqJ7L1+\nisIK9OEHJUJFcT4PtsN4ipCTV5gP+I/TxWVWJ8GSoCglpcidFupTXc7v+8JA\nliwtTpDuECW1DGbZr39ZHp8SXsRMn2bwT4FsB7yeO4U2L9mrHpdIyG87f6bh\nCjQlAjAvjjq1iYjiDiwTas0VthYtF6pQSw5ajlahnkrH6mycDxmhHHn73eYy\nH0wgZgY+XgpiMbrlzZAQjh+p/XhOAtBszMNNQ9ONN/kc+qAcuP5910ge4Aq8\nc3TQSePJLTgzHSqEUI928hho8Hg5e27MxlOPiWr2Dt1ZqL0gtHT9sDb8iTAH\nmNRuRbLzu9YRDKBd9jB84sY4N+ZIN0QSRLdPLnDdKumJNjk++1vvDKv3fx/1\nfD2ERZywKcklEuSjLSKqq7u2UN1G/EU7Bgh3Tp4srTklVblft1o92wfHdK/X\nE5ohxzSawcxe5Gam5ypGiEgkUMvmPttLk9RwJ5HHhZP1t8auS4z18H4QWUCt\nnl1TISKJwqnMVJs0I+iJ5pIMOqTUGnbxpZ/oo4Kry1/CMu6B31fgpejbUQsv\nkDIcGXgmglM+cPDqV7OMZcoAuxtrtvKcFOgTrPrCZesyxBqcg+02jNmX4rTc\niaVl0Kqz4jsJaTN8+/5lzr4Tjc61zonIOr5lcNxAnJUwJBHWxKh76GaNAQGh\njFcX\r\n=8icD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYTGiVaXQWoDTxKzfGdCgRKMCpi31V17YtGed7t/gOggIgORiXUK0HrQegi9GCA8x2wziySj6gPlfcRlrLTuZDcGM="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.3.5_1585997615958_0.548206435990374"},"_hasShrinkwrap":false},"1.4.0-alpha.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-alpha.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.14","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"239adbfa882d31a985c6d70070b49dfd451fcc62","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-alpha.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-S2U1FDTgcNAY8fv5IckarpfTDzdGEDs295mJUgCbnSsiYkclwPBCvu+ejLvH90aps8xIbcD43I3KORvyyj3+uQ==","shasum":"413221d4c50620289ea90ad9dbed000e876790f3","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-alpha.0.tgz","fileCount":387,"unpackedSize":816448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiKRrCRA9TVsSAnZWagAAwSEP/1s//6mpqRDvsbgZ+ZAn\niNQlHAmQH/SypKhKO/0LndLG5sYFqycWFKgDvcwcbq9xPm1VLR4gyXKuX7zc\nDoOy/MYKEuGhVHH2/5c51DOcSJu+7bqe0cFS7BzfbfaIOsJ1Ij2uQMIqj9gX\nSNdxsEjkG/Ph/0hsJMKisuspMpT8juZHv4+cKpjOYXknQh7C82gvoO1nATFG\n3KBi+seb/0Z+1TaxX6RmP0ugPrJx/vdPm+2u0Af7cYL3X8JtmudaE3hsEIVK\nSg7YqX68+UxQ/49SSB7ckcBG12md++I/TdFU+IzKmcQF5OWm0ABXs8dfR3Uq\nvFZ9GcqA+ng+//E1GfJl4LKA4n0F+0p4qCa/+pXaYwD88z0A0F6hJszu8g2O\nJvOuIICOILaunFBPkFRksMrJ6E4YFBSUsDez75WiRKeRQQ/j0BNAjUKasUhr\n0NHkv1uDvzQC9LuDJnpmWzJNB3cCjvW5nWA5YOUXU6w80aspkjnF6dFjMjfo\n3GTxpWAt9Z75+twbbCkW0S/ghiV+0fUazyLJ0/W9kqPGv4v4E6MDZ7Nw+wH/\n/eOOvFwWSa8qaJcxR6rarv3WYb65xGvrcJSdF4l73R+WjV2oM5WPlJvinvkE\nOn4dd5Wkbcya4u5LtzICzLue8xLcei0B9Mtbwx5RDZF36A+LMuksv6VGOJS8\nD/G/\r\n=4GSu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkiCFEhO7afr/WJNcbUL91XkejeISSFgENxMshMTMqKAiEA/oBk98SPaeZBv0rH+/KWFW3QFwFgLDhdAXMVk28YVYU="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-alpha.0_1586013290861_0.7749080383159079"},"_hasShrinkwrap":false},"1.4.0-beta.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-beta.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.0","axios-error":"^1.0.0-beta.5","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.5","messaging-api-line":"^1.0.0-beta.15","messaging-api-messenger":"^1.0.0-beta.10","messaging-api-slack":"^1.0.0-beta.10","messaging-api-telegram":"^1.0.0-beta.5","messaging-api-viber":"^1.0.0-beta.2","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^2.0.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"093eecd992addf4091bcf3d44009316a7e1e38ed","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-beta.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-nR3G5s1iOE6f5ekuNuzEeCTLovwA8KoTyHoZnv+6LLC5QLK+WG1mLiRGpHQlU19HX0U7z9RsjOLEdT9L6PA/xg==","shasum":"194f158ebf5d90d8da2ecfa2722a8f2d78472d75","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-beta.0.tgz","fileCount":387,"unpackedSize":819851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiuYsCRA9TVsSAnZWagAA2o8P+QA//IWMb5VdIpDqJN4l\n+ooH33oYmS5xNndiZmbkCbkCeb+7to6pnbp0PNOgSfhjM/kGSutuFh7HqTHg\nLNihHQU9/uuQoDkGzvPINyoy8sbkv5EE1aLOMBDK3VQi/ROR0pzek2djNrgS\nrWSAHjQaY29aFcrB2mwoIkaSnh+tDQ6pKYQF+OFP1+1mhDGYHK2L3R7SoNoQ\nHyAeN3wnzlcGtr48XeRNnFiTqLC3WHxLH8HLzxpRf72AegHTDElm41pmEIMU\ncmzqG2U64vMz0fgKM8MQ+yr2k8W6GxAysU3hTcZbhdH04Z7LPIpyq6Od5wsK\n2HFTN8kZPZg8XeTWN0Zl1DYc2Uw1yMwF/hl/AtXvdNctNcHsfvQf6GVz4CcS\nDipmLHerjX4VKUvnBYFvaUfrVIszSU1ZM21E8bb0cHg6SQX7NqasLj+Ccldp\nPAx7Ho4jawmU6Q9w5tpHCgeNnBFGr6s9G0cCjk+88cm4PpH/QfPJcgKiis4m\npPTVzOq9FNFJ99kBFuw0/NHsAg/2qZmE1KmBYxYyJAayCZe6bzGMO/CR2ZUb\n72boYAqTXgmlwibMF0nUYEiXfvJneY9q02ElOCD92ms0YwIk7HhHTcdSqa4+\np96hj9LpCoWmzLqAjJhKBaBj5O4D67klnFRRrk08qt88JPlzgV1+Zxvf2D5d\n1z8e\r\n=TMSV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8H3CCv3jJjzB+/uxgZbSklJaKXdzQ3TJhco4yMW3gsQIgMyrU/mjdWHhe0YQVYemGiR3Y0ttWAEiT/XhPLhfEaY0="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-beta.0_1586161195944_0.45794841068952263"},"_hasShrinkwrap":false},"1.4.0-beta.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-beta.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.16","messaging-api-messenger":"^1.0.0-beta.16","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"da2644300e11510405ec2105aa31f331de466e63","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-beta.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-7T+JHAjRiSMxl1mvpU5gAC44zyMtS3n6KF+r/8EyFARx95rW0foezMkcZ/BrrosKQkiytwKvoaBtgKqscKaZSw==","shasum":"ec561c66a11622615f881212d955b90eca168bd5","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-beta.1.tgz","fileCount":387,"unpackedSize":819772,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJei1VHCRA9TVsSAnZWagAAv7kP/1whK+eC9hd/P8KLEO8l\nnKfkD/gPCvRMzj4VN3EKBYgpsZYdnIPHcWebkzPfqNRPwti0R3auE0vK94+h\nve1AibZyPeOing2AN0Vp/Vl3sAFWzxpFgNj96zq7dGxLlSz3PZTWDKFWsWjT\nH1MO7ckzSrzAR2yGBI1nTu0ChU1WyM+M3yv0cK0ATkFzoGP8SdbGOgFpgmZn\nI+dGtpYeyXE3nnyBaITELAQQ6jsq/wBb16zySme0yD0Li8IpRVPCd71BHp1r\nB48txcEgpQsyD5jVdM+sKH7vJiKbw27NJjTxnpHdxX6N5oDPqsHOe7suaS5x\netlu+qojXOjjjshtwf7YesPzvXXaxgB2O2aSIoRx566Dv2e98DgJltnicGf1\n3PwY4m4jS0Cdlck14lZ8cLhvaU7fNOXs+rkHzrWet3qRujJ9vVGXAwrJD3qt\nQ7Z1NRuaJUM3+y8dnD8PtcGvlU/y9zaQVZa6VsSc2fldqBzT9Pkc8/lK18p1\nDnzhwCm1Xsdzx62um6THrq20ZEfivCCWo6yBwXth9rO0ZFcaJ8NTtHMAin2T\ntqVmMKcM3p0SoPbmnbPHZROjHkrU8lIxIpAM1rc9Hrrgs1d38PULj+Oiihj1\nB3hRiwKqGxQtUDBYVZtAHhoirq6LQOrGo46qbmuTHA0Ueab7thlX4qd8YtQv\n/bMh\r\n=VWdv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDEguuwAprc39lpZhOtS0aIACRx+IEsgO+JNXoUGY7lAIgYz7EtJ/nwGwLfBdu+yZ4ySckLLLjMxlfnZgeXu90Ru4="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-beta.1_1586189639022_0.7682499821998832"},"_hasShrinkwrap":false},"0.15.18":{"name":"bottender","description":"Make Bots Your Way, Fast and Flexible","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"0.15.18","main":"lib/index.js","browser":"lib/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"scripts":{"build":"npm run clean && cross-env NODE_ENV=production babel src -d lib --copy-files","check":"flow check","clean":"rimraf lib","lint":"eslint .","lint:fix":"npm run lint -- --fix","lint:staged":"lint-staged","prepublishOnly":"npm run build","test":"npm run lint && npm run check && npm run testonly","testonly":"jest --detectOpenHandles","testonly:cov":"jest --coverage --runInBand --detectOpenHandles --forceExit","testonly:watch":"jest --watch","preversion":"npm test"},"dependencies":{"@slack/client":"^4.8.0","arg":"^2.0.0","axios":"^0.19.0","body-parser":"^1.18.3","camel-case":"^3.0.0","chalk":"~2.4.1","child_process":"^1.0.2","cli-table3":"^0.5.1","cross-spawn":"^6.0.5","date-fns":"^1.29.0","debug":"^4.1.0","deep-object-diff":"^1.1.0","delay":"^4.1.0","express":"^4.16.4","figures":"^2.0.0","file-type":"^10.4.0","fs-extra":"^7.0.1","hasha":"^3.0.0","import-fresh":"^2.0.0","inquirer":"^6.2.0","invariant":"^2.2.4","ioredis":"^4.2.0","jfs":"^0.3.0","joi":"11.4.0","jsonfile":"^5.0.0","koa":"^2.6.2","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","lodash":"^4.17.11","lru-cache":"^4.1.3","messaging-api-line":"^0.7.18","messaging-api-messenger":"^0.7.16","messaging-api-slack":"^0.7.11","messaging-api-telegram":"^0.7.11","messaging-api-viber":"^0.7.11","messenger-batch":"^0.3.0","micro":"^9.3.3","minimist":"^1.2.0","mongodb":"^2.2.33","p-map":"^2.0.0","p-props":"^1.2.0","pascal-case":"^2.0.1","pkg-dir":"^3.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.0.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","restify":"^7.2.2","shortid":"^2.2.14","stringify-object":"^3.3.0","thenify":"^3.3.0","update-notifier":"^2.5.0","urlencoded-body-parser":"^2.0.1","validate-npm-package-name":"^3.0.0","warning":"^4.0.2"},"devDependencies":{"@babel/cli":"^7.1.5","@babel/core":"^7.1.5","@babel/plugin-proposal-class-properties":"^7.1.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/preset-env":"^7.1.5","@babel/preset-flow":"^7.0.0","axios-mock-adapter":"^1.15.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.0.1","babel-jest":"^23.6.0","babel-plugin-lodash":"^3.3.4","cross-env":"^5.2.0","eslint":"^5.9.0","eslint-config-prettier":"^3.3.0","eslint-config-react-app":"^3.0.5","eslint-config-yoctol-base":"^0.18.0","eslint-plugin-flowtype":"^3.2.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-prettier":"^3.0.0","eslint-plugin-react":"^7.11.1","eslint-plugin-sort-imports-es6-autofix":"^0.3.0","flow-bin":"^0.86.0","husky":"^1.1.3","jest":"^23.6.0","jest-create-mock-instance":"^1.1.0","jest-junit":"^5.2.0","lint-staged":"^8.0.4","ngrok":"^3.1.0","once":"^1.4.0","prettier":"^1.15.2","prettier-package-json":"^2.0.1","rimraf":"^2.6.2","supertest":"^3.3.0"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=7.6"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"jest":{"collectCoverageFrom":["src/**/*.js"],"coveragePathIgnorePatterns":["/node_modules/","/__tests__/"],"coverageThreshold":{"global":{"branches":80,"functions":80,"lines":80,"statements":80}},"setupFiles":["./test/setupJest.js"],"testPathIgnorePatterns":["/node_modules/","/examples/","/lib/","src/cli/providers/sh/test.js"],"reporters":["default","jest-junit"],"transformIgnorePatterns":["/node_modules/"],"testEnvironment":"node","timers":"fake","resetModules":true,"resetMocks":true},"lint-staged":{"*.js":["eslint --fix","git add"],"package.json":["prettier-package-json --write","git add"]},"readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![npm@next](https://img.shields.io/npm/v/bottender/next.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n![](https://user-images.githubusercontent.com/662387/38478130-5ceff16c-3be9-11e8-9b2b-d9fc2e0925c0.png)\n\n* **Flexible** - Declare handlers as any JavaScript function.\n\n* **Modern** - Source written with ES6/ES7 syntax and great async await\n  supports.\n\n* **Modular** - Use session stores, server framework adapters and platform\n  connectors with same interface.\n\n* **Learn Once, Write Anywhere** - Handle multiple platforms with consistent\n  development experience.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can install Bottender globally to use the cli tools:\n\n```sh\nnpm install -g bottender\n```\n\nOr install it locally to use it programmatically:\n\n```sh\nnpm install bottender\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation on the website.\n\n* [Getting Started](https://bottender.js.org/docs/GettingStarted)\n* [Platforms](https://bottender.js.org/docs/Platforms-Messenger)\n  * [Console](https://bottender.js.org/docs/Platforms-Console)\n  * [Messenger](https://bottender.js.org/docs/Platforms-Messenger)\n  * [LINE](https://bottender.js.org/docs/Platforms-LINE)\n  * [Slack](https://bottender.js.org/docs/Platforms-Slack)\n  * [Telegram](https://bottender.js.org/docs/Platforms-Telegram)\n  * [Viber](https://bottender.js.org/docs/Platforms-Viber)\n* [Guides](https://bottender.js.org/docs/Guides-Commands)\n  * [CLI commands](https://bottender.js.org/docs/Guides-Commands)\n  * [Server](https://bottender.js.org/docs/Guides-Server)\n  * [Session](https://bottender.js.org/docs/Guides-Session)\n* [API Reference](https://bottender.js.org/docs/APIReference-Context)\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\nconst { ConsoleBot } = require('bottender');\n\nconst bot = new ConsoleBot();\n\nbot.onEvent(async context => {\n  await context.sendText('Hello World');\n});\n\nbot.createRuntime();\n```\n\nThis will create and run a bot which always reply \"Hello World\" in the console.\n\nYou'll notice that there is an async function to be passed to the `onEvent`\nmethod, we call it handler. You can put your bot logic in there.\n\n## Notable Features\n\n### Messenger\n\n* Messenger Profile Sync\n* Attachment Upload\n* Handover Protocol\n* Targeting Broadcast Messages\n* Built-in NLP\n* Multiple Pages\n\n### LINE\n\n* Reply, Push, Multicast\n* Imagemap\n* Rich Menu\n* Room, Group Chat\n* Beacon\n\n### Slack\n\n* Channel Chat\n* Interactive Message\n\n### Telegram\n\n* Webhook, Long Polling\n* Update, Delete Messages\n* Keyboard\n* Group Chat\n* Inline Query\n* Message Live Location\n* Payment\n\n### Viber\n\n* Subscribed, Unsubscribed Event\n* Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Introduction Video\n\n[![](https://user-images.githubusercontent.com/3382565/33467982-cc8a0e42-d693-11e7-9134-2d42ec135e19.png)](https://www.youtube.com/watch?v=C_OBHmbXCsE)\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to\nsubmit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including eslint, flow checks and jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","gitHead":"8ffdfcfcda437aa788ff4ad090c7b0cd94f96713","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@0.15.18","_nodeVersion":"13.8.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-f+3JDTnuKtTQVdRFFdhNwMi+uuxmNFs0fSjrb1cL3C+O65fPQvVEAwEA+nrXm+HvZ0XRZ3hYaPn670XUFAokOQ==","shasum":"bce3c01363467d6f0ec3a8e3d909c08ce9fdb61c","tarball":"https://registry.npmjs.org/bottender/-/bottender-0.15.18.tgz","fileCount":292,"unpackedSize":1243926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejW8GCRA9TVsSAnZWagAA4QkP/3flg5sB8ZLWJ6hAvztU\n3otvWKbpdkJISi3ukUXw5rBh7LOqz/dal97i1Soo33aOIIzDcyDP1+5pSN0c\nDPgmsy9ekPk7IdnON7Y7UQAjfWifgkvxQxuYwlpJJbee2EL/Fp0Qc5QpDmGK\nAQfQbzGEUIGkghpMjRr5z4gPWeq1BkKBFG+T7AEKJj9ZRQS6jYgi2asv31+4\nXA90FkJlDE05Wbe/fA9B8Pc4g8JTVV5r8wsBuxy1tY4dKO+SguYo1xRHivQs\nrYNj+X1tceNEM/7sple1+8dCSG27eAg3uETIwfclkpqqWAKIOx/xUvEbBxqM\nZnHdhTP1BZStx4LxSqVuWUFyi9gHesy/9r/iqPhD8VtlW64gyV5stfMNyX/v\nJ1SDyE9gvvdO7s0LrheW7ZN2S2bndc8ISVVkmSgHBXyUvGq7dqMIP/jmYvC1\nL0mAslBG1jz8W1Bszc9LPsQFPZ7qm63r4OPxIUqG3Zs3khs4gy2JcNVGFOkL\nXnPMk6P8Qdz2kHbfCc73s+ApefJBe1s/OkXVLdT7eozr7oB6bOOuY2SyVzb3\nPi6gl3+TWOcKGFa3ozlhNxp0z8q48MPfxmwAfd463ZW8OO9E/O7bg9HvKQpH\nltMREEC/5bed2RalNfLzS8dmGM62bIJaCEZ5jdu9NbAA7JPQN8FHagcggX07\njGKg\r\n=HqI2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCz67u4xtTOlLuMtq/nflOnB0MnQWOyiouMuLLeD5zGGwIhAMVq5XCbjqrtff+QkQo/md0LqpnwoHehhRFbXfMhxKTA"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_0.15.18_1586327302306_0.09884115522592252"},"_hasShrinkwrap":false},"1.4.0-beta.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-beta.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.16","messaging-api-messenger":"^1.0.0-beta.16","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"4b7e9e1c0eeecc10f83155918444116bb8ba2f2b","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich Menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-beta.2","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-WXKoPAsmjMLUfiH+2BzTLr9FVrc/8dn5F2/2muedc7/LJloRrjwDoCQiE6I3yR92JWf/bvpiMfXN6RJX728Cdw==","shasum":"96d4452ec899d28e5a78b534769e06407fe0e77d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-beta.2.tgz","fileCount":387,"unpackedSize":820650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejskUCRA9TVsSAnZWagAA3hgP/iEn2qSRKlCLZp5K3Km0\nv89uzq5Zljy0L9VcQ79UbJsiPncop8ZgCA2ZQjW8U3VNQuVFxfx0/Ef7FUR6\nPUaQ0saj2RdUM0Kua6EBMzrLTH7rKHPgHrnaBGMSSWbdZDFS6wSbHCy9rCYe\nSFOg+68C0WbXzc0h8stntljAd5UL2OC/LV14MBBNZ2GIr4Ed0GPnoN/xoIWA\nvV0FsU00IlrAkmicx2NX0q0LexGP7agEPt29A/ZxpFogM7Q0HJCxkLd4gzqw\nHjpIwVt/wFZJBDVlbqCvE418A4wRmSGkJaZadvPCiJ7RL4bG2r6ihq08lmHg\nslc5VQuvbPwYT4AiZRRuUHFfQ8+Yi3gFC4qTjxx7ztgJeZGT84F4d/Oskyv+\nty/f2gljGSAKU2sgb7sjO25sytZ2ZsvP1MqXSMgcW4kLlq4k1n8XVjay84Kt\nV5HJpFOs3smDHj0TAUX2ZTFkHHUXAPs1qw3SCOZ6nuu6FK0ck402nQO4irP5\nl9a8gHlOLGJ1XkOeiHPV606w+Ns/g/LwMbv0AvZf318NAYs7n3IzLEmrHIUG\nxKegvArbzRkgkEgY+TXog2mSos+QYmX+a5zmUcGW11yJdRjP5eHS4YIRl/ca\nd1ZpVS4xPPEb/+o8mBWSzIvdOOH0U++4/vt6JaO81TvtvZn5A/hO2Q14x77V\nswXm\r\n=h4s1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEsLOU7frYpuuikdzvbt7zT65qrryWzMGCDxhUsgBEAlAiEAj/+7Lq4qr0MkJGMNCx5O8rkYIKs57Wu6BsArNg93Cfo="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-beta.2_1586415891706_0.03094051990301039"},"_hasShrinkwrap":false},"1.4.0-beta.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-beta.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.16","messaging-api-messenger":"^1.0.0-beta.16","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"5b080af4a87ac274782c9187252a6854bcf89b54","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-beta.3","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-lqe9TsQ/7RshI7DM1WmRBOtPb2oHFIoos4GL616P2lVk0Zht5uORdLtYAl7KM4oCZtHAokbcoHw9P702389aTw==","shasum":"cce1e72bc31ae668387ed4ebbd2215b7f8641762","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-beta.3.tgz","fileCount":387,"unpackedSize":843225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJej+z9CRA9TVsSAnZWagAAWxQP/jNxddhsTUubONdFsMGL\nJq2SCA2bKYmG70/iPv9+DKM6/1f/bI0ZJMSYW3EBcednkSzt6v8l4yIj/aD2\nir5f2m5dkQkjIVCZ728w9VWrwE2n9KC0Ymd1uRIAKhbi1JP21R8u0zdKVcK8\ni6onUrE8+BHebDDb3/7bH68pzPmkYMiH/XrL8WiPLz9XFbL8tOK6cpAe72Ys\nbxKMMJqvrLbxLiUw9mmksJiQbTRzwkaa0qA+uefYkRMoodhq6NtmPt0YKeZN\nAIYwGi+0Du7FeMKs8q9EIMHLWItGGgX6HgdqbRmaws1qbxCDWYgoipWZvh+m\nb/vU3Vezv+A7VuYw4aK8SbXP7yf4OcfUy3PfrD7AEl1i24e2/LojCMePM9Ga\nD7ndnNLENeZQ7PGC/BZ3TwRlYd4LuQLZyzLvPSVYHnngPkohcsHv1WOjnJUe\nqmyowCfx0QpxR6xUXtQNgnoJi8tsGAOzbKHUPMg6du+f1eCG4ps/+2IYQ7yZ\n1PFuiuy6uCFRsD7RBG6s5GelkWU04tlPEpzLXJGQFMgyrWiX4LDSKJw8qdNy\nOXzdsGi+1JPEznfaBoUs4vUEGq4drJ4ai0AaV4fnWupC5LXVdl6RUUUlvszF\ndSlHv4dlyWBn3vdYLIPW6fbjUiGWreSSvzIXuA02GXB5yG/MWUQHuPdMorql\nlg3a\r\n=bTD8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID7NVBDf7joqCizPbNqDb3m++fddVs+0TRCoRSuHHvfxAiB8o2aPRGT+iUcg763vPCRNsBNK65EhRt5k0wIR+pncEQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-beta.3_1586490621076_0.9521062054563794"},"_hasShrinkwrap":false},"1.4.0-beta.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-beta.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.17","messaging-api-messenger":"^1.0.0-beta.16","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"291ea1371c7634bab4a1d078209e71971697dd40","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-beta.4","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-p+t0GG2/hPc/WxVFtF8nANtB6xWBUndN4KbBCY3brdKiu08ykKNKmBNBnxe4y810rO//GKHLHIwGXmIHfXn5Lw==","shasum":"d37305fe131d5a26c8a61cce205472ad7fc09825","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-beta.4.tgz","fileCount":387,"unpackedSize":843225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekCpACRA9TVsSAnZWagAA62gP/Rg+DSEHuwy2ES9FH1vu\n068AGIOnkhyxw8EJsBHXTlGGq8bzr1ROg4mUuEf/U0hfc5I2T9cn0tKtnUv+\nnS6DpkGwnVyzFmUN9h8w0qUDuOZ5pk5dy9mZVjspfTlP0ud2ZOGtOFu6Y+LF\nodUjIpwcQdxU0koFji2I0ThtOrmakj4WZDN8bMM5kTMREHeK1zf7y99PNR05\ncYkIZBUkOtGAL4TOJyBT49cYnqn2pxDwKajlBmgrrkxNCm1QfCuHSDT7P5ep\nT2v0BxB1XU0LTb/CxjN8FjMsVEzhZ+2FissrYlJ6yx3CcG4yL6WMPE6N2x0y\nDSKZqDxsC6cVG9SqSAZHJ9yXBKCFxrakY/TXvF2RQo/D43UEZlPIkRM9AgLp\nmAtTR4lMBTj1mn7RZzL4erx+Nk4Cq7aB0N5x7O+3nPYUnr/tG9NV52YiNCvu\nNM7t6DxqT8Ttqgt2GxeC/ZPC0KEbzZhMBaATXBq3XY9Mjux8G7s5cGlZFiCg\nt+C5koef4hH6zJzsuP6dfZ2UniBnQqkKiXMx5xlcvhSNTNHzz8bLR3ZI2hEf\nXWaXIafVcl1RLdqeEVRGN13053ayIcZDEQHX2onj/MSk32gYAQpHBjQqU3MA\n0Nb+kQBaspMISl3rUa6LHRO3F7v4lXh4ZjsSh+RwkH16Cs1zNRXibyA82ku/\nGt1/\r\n=hVbl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpicPPYiP+FtuhYAIsvaPyfdNxirMoBrgS1wi1HPS0LgIhANQloiRZGA4rDigSZZ+JC5gdBZgSIpIKYgGvQINPEfyb"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-beta.4_1586506303718_0.5520157524611784"},"_hasShrinkwrap":false},"1.4.0-beta.5":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-beta.5","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.18","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"8752ce992e7e2734ff566dc81ed621399abb01d7","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-beta.5","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-GsG3llR6mjFkPO+Ikf/2bm8S7195ICR4fMmjMOMQOw9HxRuGiseYUnTNl7NEY0Yms+yTtMhf4i7ctdmeoBftmQ==","shasum":"f9a4c30780651b9c500ed303aea490a2c8b7efa0","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-beta.5.tgz","fileCount":387,"unpackedSize":843976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelIXdCRA9TVsSAnZWagAA55gP/inECPCNuqEtA7gZAZdM\nKb3eqtTEzNz4Dz7IVG2qDeBEnk0geISPjT3GgKhPvkwKskMU/C7hWDuOFJOi\nvQhl6+mmA+N4YByVsYmjriLFBpkPo72GhKLfDx7V2NwcZ72Npf2jdUhiVrCN\ncU7AEyiX6XtXyKPKCDpnHJAQMPxMxt6tM65pHSEZTANbBM3QlDxRiEyUqqT8\nq4alSxDg/occi2MYuwVNxXvPSu3Be+BcVSU8tzJ35FMrP/7hwqikqRWB/6Vs\nb2KQtP3KPQRnfxY5zGiUGUD8QFYNFxP4eKE5kNB8a/WD60NIhpIc69xM/nCj\nSkuWtYeqJkMh6o1MfdyVV3jbuohV02SGnjdw2GYcwEFVnkLkIfV9DiiZL2P5\nlw+A9hddQ+F0ZqdVinSS1gMdfF/XJF+aO4Uf6JyNLdfZYf62qW7XF78+Og3y\n5OBrGvozJFEFS7iV1ugYEmVbnzkDDn5GCr+lMe/LPm6H8cXU7bcma/PV4faP\nMyp3JOL4YfEAxkwlxrL0iP1wur5e3oESsXLJIKKR+UQ266BTPwGIUkRfJL6W\nlkWoefSF+GxsU4JTN0cpQqkrcfgoBk2fbMhaatrO95Fsw50aCidgcc237qal\nm+kPsJX7eQXQkkzrK+v5YA5UVMIyu7F2U8GkIs/MtjM2Bwi7Ny6jPOpRJ1O1\nzpg4\r\n=P0wk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIHqXfKMbJR4/r8ed4xVdat33ePLErFhWdYQDoBrX/vQIgHABKYx9D2AqM9cUZ9hfiwEFC352LLWtraryAv5+j2bs="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-beta.5_1586791901353_0.9634132488663765"},"_hasShrinkwrap":false},"1.4.0-rc.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-rc.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.19","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f66333a672d9842c7f58c22a02049f2955a25a27","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-rc.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-tPNHwlr9kdl++xr9RnteRzKJjdxPXQ9lpCJ7WEqF18MwLN7IuDBNpdJkoO9sUJrjRemBcpdwPqaDDLKlPUNDPg==","shasum":"7a2bcd993298572b072973e4be870e8fbcde4a9f","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-rc.0.tgz","fileCount":387,"unpackedSize":842874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelphZCRA9TVsSAnZWagAAXKQP/3icQfdDGHgfn6mZGbBu\nlZtBLivXnw1H9hJ7DvZTXZ5zSkTyjYxkRiZeA40Z2lidpzMPSa5oEhyMx8+w\nsLK4lGROtRPGc8RAtJ0OhIoFfOFh8lh++F6/Epvwk4CZBj335hSoW3VYhe6a\nUJVV6Fg4yl8rZTnfbegNRkUzPQcUh45mL0mXdFrvmlbY5pXtWBzpPg+V6RDp\npSVE1lPEpMqx5I07ECCz7u/kQqZkma/49d8cs6nTr+L/7sj64jfnqEUC5Tr7\naOGSS+DlLNpPMByS5Bw6Oo/GIS6IbnhEo9jLGALGCIy+2jDp85Y063/N2AKf\nqDUibja00EZVGPvWwHIq6saFTo8L0ZUngkZLXz4YxZKL2kUyF+SubB19uLbQ\n5ajF5Q1pRiaHYqF9GiHZwByP03H2zceSEn3RlPi2fNsbwwR/og6Q5Wn31Izc\nC75QbCLGfguFPBtfZxOsYHCg4HnizjX/7wheSmvht+JIJowGBVfd2cEyHUsd\nGpO1Ei5aeAhF//pSTqUc+yadSnsltNQMwtioze7KPJubS0z4msr539JSxpqu\nMmmDUsUalAe09u7ziOhADIX/TOQLs7Hil4oulEP0neKF8wE540y71biLN1n3\nn9swcuiKyqCB4hl2q+tuotiZdUd16uS6A77zBf/zEmCm2UbakgQll4b/4C6G\njkUc\r\n=GHgl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkXwYE5esic/TfycGx0N1yAZfpBVPzCQN/jHN71TucmAiEAyicjBdXI2mfch7fjQHtDH/7At5azRbCk+i2t848WfwU="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-rc.0_1586927705257_0.13442216741982915"},"_hasShrinkwrap":false},"1.4.0-rc.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0-rc.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.3.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.19","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"2de683a6b866a069e2757dfcf86460c688b39283","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nmodule.export = async function App(context) {\n  await context.sendText('Hello World');\n};\n```\n\n```sh\nnpx bottender start --console\n```\n\nIt creates and runs a bot that always replies with \"Hello World\" in the console.\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0-rc.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-h2jBRC+w7qgUh1l+8c3DjifOTi79ZdCOYpEHS0zyNuqf1imJ/KeQ4RkVIq43cjzQLzkmdsP82wQ0zYcbavrp8Q==","shasum":"57e4daed91556ff1228a1551d1a9e898821aec60","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0-rc.1.tgz","fileCount":387,"unpackedSize":843058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelqgBCRA9TVsSAnZWagAAlasP/11OiHtJMWcwq2ssTuJv\n+hieP+2UyPYvrg7PwgIa1jVj0MtPBH+sTxln9zGzZPL9LK8ZDNYJw0sGW+SM\nDXHzp3t/BTCjxXKww1Q7tQfGxdujW9VtPqcatwMhjFCst3rD3gJBkP/1+c3R\n7EdHwo/DKQJSfsxjJbdNKW/+ePF8+5/RzJSoaPF5fg2veMWQHRo5GACBiN1g\nvLnrvSonfYRq9IztE4YT9znyy44uf+gpFg7grY7nRI8KvdcLVSI7D9NA//Ee\nflfTnDTOn/GlIoSLA8GbjgrS2svARiRb7+z177LRzw4kEMvH5AFrK8o/R6s5\nhzLXGf0kzYnD8HpOYTx7xKy/EhC3OCBoZXUxnO30md1pyOr2x1ZFZYSDA3U0\n/hExcrTpm0X9UgT2MP/Cec0ZfFNdPdgh5NnMb6c/XdyXnlC6ovFkHStFJjg3\nCIsH/jyy+rTo8zNej1finJCSxI856BrLn4BNIbEiSYZ/b4TDfg/HufyZseOL\nJAOfOpX6Vjvgj0ItFKRm2AXcdiSiAHJ3kbTjkrigXh/qZmMFkYbEWMXxJLr5\nGRhVXQKQfT+H6T2ewkh+TwR+AGuasaYN5THM5c9+sG2JpJcRzPPg7sc54MvA\n8e0xTyaJkPbX8uWoC+7D20fammKHtrau7fqIjP9ri8Y19gZU7cRs8RokUM55\nafT9\r\n=svb2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZUc1ypRAi+D8wlpwnFcRRzLGrRihSD10ThojqOiUObAiBaHLVgud9gRJ4pNtkDzytS7JlvHZAI9P84dtbaaiiUvA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0-rc.1_1586931712530_0.6847172248810853"},"_hasShrinkwrap":false},"1.4.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.19","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"198619377fb2d5be38f0dffff7199abfbd2bff92","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-tICIjWP3W31mG+mSnzJ7Pp9Ff+1HR4gNa6KEh1q8QvYbcEXrwKiFDUq5AGn5gDvNHxQdFTxXFcuzutUXcUt1Xw==","shasum":"591cbb2f992fcd0f2f2d704c76cedd69ea3ed26f","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.0.tgz","fileCount":387,"unpackedSize":843234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeluT2CRA9TVsSAnZWagAAEEcQAKJ0N0G1ehkHh7YPSSfl\nlkJaBxUo6XFMtP//bzPDGcNHKITJTGq97KZMU/N52cNIRW5MJWHRtCwke3Eu\nH46JnNLDHQ+IwiCPXhGfRe79AB6Ttbgk7Tz/XB0PtlIleuyrL+BJmt2vF/QR\nOO2VqjOc0t2IRzydYsCKROp8ghirfg0xBUp+9OW34xaEjfzT9GBJVfggmbuS\ng7uXYuONsARh4xQQBWagT7BpIfXuwylHSt7Ruw457TRRrZqD9jnjYK2iYaBD\nWC88xuw98b7ER3Ao5dGRnu3dNv7OjxZUJ9hDm2TDPn8oKbjtrubEVYwd0r9h\nVmWpofqc+IzKGDNPs1kqLplcJAYh+PIK5tZlqnu3DYKIlo8xREENoPx70mKu\nennFAIEHDXaGOsAPOWIahxSxmzBw1vgrOEK2ZrEu82RVJ70vEkNsZouVtj/H\n9/JaVK1nAB5JZ2A8HTTgnq+APcbVEmc5SMV38A7oBAm+ezKcY+p41WHgHMxJ\nqwE5IwzIUTmezNIc/tBleKBB/IoWSSsWZVdQzkNo/09u0ObHJeQW3c9c8WHb\nzAHKfi+gfufxUG6pbF4R4fjnuNTNJrTVZidWbfwaSfUqYC6ndLHmlFRk3xuV\n+uhvRk9sWnlUQw1mkWhuCkutDYXcjGCe7OrQWIWaNCvDjdBJpmPRt7UBm+Rc\nz/Fu\r\n=QKN9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYzE7QjL4OeooFCNND3w/djG5DuLVZ4cMZvppQh82uyAIhANoO+bCyp8T9pi3CkX4chE8sl1XOEmYHjU/GKpxHPVDC"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.0_1586947317396_0.9662682863198406"},"_hasShrinkwrap":false},"1.4.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"f4151490e7ff29a67e6843a38a032f95181ad33c","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-XEHr2aRiCbjNewr3cJGHCXkmfp3saVLJ1uXAOzkiGi/WIrQf6EVdyf/9ptPU5tHO9rwz2+YM1jkFhZCI4P72uw==","shasum":"3a9886f616676126df73ab2a4fe295ae69ad67bb","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.1.tgz","fileCount":387,"unpackedSize":843537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemVmjCRA9TVsSAnZWagAAXOIP/jUc4VXEBdLTUL6PZKF/\n1r2CN/s9mcl/d+ghzv7Hw4I0fWegTOpdiRyd6CMfi1xWyGI/VabgPse4TLE7\n3Nw+9IhB7qgFDDwxg3iFpNgXDR7p4VYQ0EkqPmPGVkGquEbtryqpzBh/iooU\n+K+Btv6sf053Uf//Q25AvB04O2hQZStxqc58jB0QYcz4Hzsg4vBXtH+zYm8D\niwedkCYfAyQjPY6WYxqB8L1B3tlpODbfXDt6Dz0UO6Ev6WiGpik2sIEvPsDi\nEhTuc3OLl4m19FyVWAgVzcPXQ/peIpi+/VEaAG8fBUNIMTbzkKM3rYS9/L9u\nskXd4Qib0RuFwspSeQM9mZjr4zqfaSey3mO7tTlotOf+vF9gGrXtXByh3oKL\nWIrACHVypK2gt1gVmtlJB94jnHNm+ngEVYaOe7V2hoJA0HMsdCzUem2gk99U\nN3qXvk0BNmSlgkrJJz9fjI7gMW0g9CAmDXJFPrWQVFGBofk4dELJ1n4kEr9g\nrR6Sjg75j+oFHy7A2iDexpECsJULPHM8zJZFcrzG6rnLMCFSwAcvuUsPW9Ef\nZiGBpm+7AG+KdIsIQcVlZGty2qDUNgv9zAtQRS+B5Tr/dddFqafPdzt+A3Qa\n/EOARVWSjRSK1sDZ8ZcAJDL5JelOuWl1EDhdrgI6Z0tmnIL3ZNJ7OiZQyiCp\n/wzk\r\n=1FRb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1uSUGB3ZEK+RefMqm46xQHj4dnfyevBxKhDI1GWTeBgIgOMlMockRbDTAsJyTxm9moYNCnG3rPdg+Zj8By/sGOKY="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.1_1587108258774_0.4326787602518105"},"_hasShrinkwrap":false},"1.4.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"9d9305369711ba6987840c3535d5681421aba542","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.2","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-JziMjk5JbA+mUlSTxUSuEdeL8lR3D9Jw9XzhWCNzrpUIYjHjHsGKdF5ZC+CbqbIP6ftDmulVLIhYzeWBnNoqfQ==","shasum":"366ac0efd727946535bda96a7b9d93e1b7199bc8","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.2.tgz","fileCount":387,"unpackedSize":844488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoo23CRA9TVsSAnZWagAARSEP/jWTpBdpqPTNUovdqiR+\npg9VOG61Zrqnjelzarto0TJTWEf6XyOB3LFOlmdSfzaPBZgFAuk5NLj1Fv98\nKUgUGBcHylBnMJZ3pQNeJIdETHH1olsF5X8qLe6OCtnaWlbm/PZl5is9q6zl\nLAEsiA7P+62oKWFIMZ0GLStR8anHfCNhdS9fmIBDt1dP669hCGduEpkbL+yS\n/9bH37HnU6xrxbfUXOHZPWHkF9YcwT7+FIbpXcKamm5VWQWhu+MWAE3Nrz25\ntyCinr0AyshHMddV91zhtHroQbWXJiPWnEpUiZ581OQ+8W/Z59hQSaADl90z\nuhcDIN5RTRd+U0KCA2GCNkPBOwbDR6gw8SyRBSI9Oag64M/M0G6dfzf7bHqO\nQ+ul3iKlq/ReMg9q+uJ+dSbW7ra5A6hrr7OvKErey7MHN/se085dmXDO61F0\nxEpL6pFKa9U1yqfiycqHxFYRq2d2r9qN4HND0sVsZWR73SdhCdojpIXIh3Zj\n4PrL/6VFTxXu9Hgh3/MOTtDSvceWuNs0IkYUjtUgqJMxVZYwaXMERIssAtYv\nEqC2xnBILRwOSihNKRffZ19/Li19pL3JoYUJ0L8oyTwcWiK0yjY2Ct+z8A2f\nL/P8jJp4UmLWGKLZoprFDIJcNTwYkDoWSGyGobWjXC7XhmPbFsJoQI67Od6C\nrsjq\r\n=eaRD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeGo9rx6nnmIAgYLrxVRbOXry35XQUESW7Mo4k6xfHdwIgJCTvYGWLZ2KD6SUsRZcNodqERoce6hpaO6/dkmIQRVE="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.2_1587711414429_0.8730392828724909"},"_hasShrinkwrap":false},"1.4.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"3799ec761d33fe45f093f734179d21729f40e873","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.3","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-kBjUDqZIK3UlViUZqZiB8juCOPA+xxzC/xa9lQeMHvhe49uWrmegCntXxZFUx/oZQJUrQrPpDlEkjB2+gViCUg==","shasum":"a9e8e59bbaae8c17e799bd0f5f7d87fa44799629","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.3.tgz","fileCount":387,"unpackedSize":844317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqOkBCRA9TVsSAnZWagAAqHwP/RQvzdTmLuJCmwFxK5CK\nkdB70DgCoawXHRwanTzVlUKFfWzFPMknIGC/kbGq8sYOhNAFrKDmr70pLIuN\ndJEO3jeIsYyaEfdoHoZjrbcLSknAFYZ1WB9tvJHqT2ua8SJMYcLrAUpdVqzs\nRjempayFz41+mCMA1iafH3zvh6FCyXeO0FbjWx140j9Uf8k3lRwcuNHfvdfX\nmJ9vbFLRZy7NHKQeUKcwxyHDv9/3vKf0myPIaT1JGKuVa2ECkgCY1glJ3/jz\nVylLbugSQ6LqGPMVHtc9D1AyHGb+RglKmVZPZniDvRXo2vYptlDlI5FU5i/Q\nbFe0O4R4na8Mbv7lnV4ZOEIArguLYFPsnsGsx9XKbgBbts4iHHbP7iEngtze\nwbx/andn5Rgcbavme0gzpFb4clJmhj4dkgzVvDNBqdKy1cBCbCu3TMRVOMAz\nPWV8VGZV6YcV+lQRwuYIlV/ga4Zp9RnQWBkJJ0eLX4P/dJj9zWRlHMA2Y/mL\nKZh2ycUhoCEbajGi8DFS5BUvn4tEThGufs2HbKSjT7mRwmjV1wglKbjTqu5n\nnD8+hF4vrMsk/E34dOAnXfCm7NFMJN7KSo7pHtoMrjsnZLLmkpl+OOqyM3m2\nM/wAhxSf3o0SnJALiaG3b/9fMzM5CwR//3Mqhw9chmJ1rFgKA3YM4nDh/Sq8\nLlHr\r\n=lGtE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIxFaEIRLqj2bcbLx7DfPUnL9x+pASmhOee3Xfz3vMtAiBe3OM+Pe4z3a/4ncNMhz/2J1JevqR0YUbz3eY84b6Yug=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.3_1588128000442_0.6976654863409866"},"_hasShrinkwrap":false},"1.4.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"db6d2d7da27339bbaf722d7a00cb3d561656ec8b","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.4","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-d94eJCp0/uQd/DntIfI8geHkYMAiVAK0OdaVDMMpTB5EqC1oiew2DGQCJCIj6vSPh0PF1lxm4egedFLTqaWxTQ==","shasum":"1a80d9e57c0710b79ac235202d75fe36592c3f7f","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.4.tgz","fileCount":387,"unpackedSize":844579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeskzRCRA9TVsSAnZWagAAHRMP/2aP81EbcCIHN+EHRecz\nF95NUpuc6APd98eF2sg098q/w91QmB0B8hEdHtrqb0LuyEP/m0jrFdA7XcZi\nhgZ9/zrVzd+rgh2foGK5SDSHhjbgaz+CAo9YTUdNMv8s0UewPYPHQnGkxSvt\nvG13WkrKxTYOvGdxmdlhvM6bU20VOHNCtiNusZqPdKhkJ35OArB9LgL338EA\nFC3DXbkt97+FQZMo7o5hFzluvvbiXdkrKnhhUel4MEjIis2W4Sq3WM8Q5xjY\nktgd+ohr94xSATLBGLpgpUSyjZRotnaqjy+aEOxJhxXahaxe3aUABccZ7mmo\nNwRNrKpOno92KO8zq2eL0qvrgfkxFtoLGj1gS9TLkNmmmGvIhrIQgUaJq69f\n7ymd7ArV2NqjDfy04nPlxno/DlxxgnmvpJXyLk3gRQtRQjMRWeyMoXoCFBJF\nrvi25kifnvR8/svql5Xr8A87im/XiGfObzXvimMsvJKuqLgkQg8Ehf5cRga6\njrYB5bb8kzoPPCXAsV6uMY8MC3MvJuYl7tABWKK29A1/oELh1OubDPBYhZdg\nSrS+2okNhdvFt1dCKhkJRsZZWbZkJC0SynuaawM/vwP8s4sXS4Aga4VLt/h3\nGkOnT6nK6oUmpMUKF8zTgqgvJv2CeYUXTQ++xWLFNI+kT9zHlJ+vZQVLdNol\nLEya\r\n=Ss/2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIES5b46BaWpRoeMmKzp11zdiNnjRG3xRlSHNGPe+lTszAiEAn3hX6KSBJtZLQfsc5P+EnASXLqoRXdU9DcKjHWCZdik="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.4_1588743376484_0.21381347162880315"},"_hasShrinkwrap":false},"1.5.0-alpha.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.21","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"1c291061472a6961f72eb1fceef9029d52addbae","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-bclcUa+J8TdWMIH3867ApD0eKHqbLcHlLBGwadMg+EuxoMGjbJlcprA2FmYdvDTRqty0h9LhEcJLkn99cFhS2Q==","shasum":"77253ff61f1f251803454c9bc046b510b9a7d596","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.0.tgz","fileCount":387,"unpackedSize":841044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes7N2CRA9TVsSAnZWagAAzRMP/R5rgAFMr5jJ+vGSULur\n/AoOYvUsRI562hiVJdnDYmtit7tf2r5obgni2X6mjImeoViA7k+IZsnUvodv\nT5hsS1zAoXslKX1Ddg7IxB5Yta+uXGsVFlr+aO1eIucjjmrsvp6VGi8zVKEf\nX/9GJjN7CND4SngTWC3tV235IPKy2TDjMdktZcF6N8/Uq/k1/fnUWKOZrXEk\nbXysqfTg9D6TxK9rSaq5YUWBJcsfbB+Lw6WkR/BC4Xggrmc5q4HqqG37RrQd\nAPCDTjmmduPl4PUtVC43CiWIFsMyg2JLiTGd7KAC50fXvfqes4pfmsOUd5E3\n9T1trMUZBWEsgG+5BJGOp/c8CYxRvAm+CqAxMbX5IRJQX7p5wPEgYKvK1XDj\nEUZIRHz72FV325RPzeQq7eMhxBjQbkr5jygd6kxKjH/Fcdo3pXADArWEVTEX\n3pMsLL5b/skcW40rMryhCN0HUxJPYSH+YrFSJa3sIKJ2E/QlYupTH3l1qw6w\nv48sIHxlhxP1+v4gXNVRJv/azviO2CgUZI9lf5Njsyt3wCTafHaUaP51ibdx\ndiSWgdQI8nW3+/oVKUBrz4GMUn3RY2mTEy07qHFwXF6vFKWLFyic2wpSi/Zs\nQVAWtDx+idnpE6u1Jz79KACiF2+ImJt74F4ZiCh3RBpuYSlljN7t/J2omD8e\n20Z/\r\n=ogTd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCi7fZ6u8dbXosF5Cvt/rvaRsUk5UqGWMBaZyeAfSXnuQIgBrkf3fZWZghEsFA+y8tnfruR8X3UzdDFGf4oLMhoErg="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.0_1588835189584_0.5512732633118738"},"_hasShrinkwrap":false},"1.5.0-alpha.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.22","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.21","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"554285875c3a8a0a39dd3cfac34302e4f1f81de3","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-sr+0Kzev0zBYXKsiQN8JaMnT3FyX3bewv8jysvB0vzTw4JG5JXb7JQEQ+7iofLLPnhFPpO/HqPUqgqTjxJo6Gw==","shasum":"d52d841e61684d0d372ede25431668cf651f3e44","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.1.tgz","fileCount":387,"unpackedSize":853734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuNQ4CRA9TVsSAnZWagAA6bIP/1PwCnAGDCWAMKdlvlUn\nj1rXYg3oFyvTok+l1BhDTlGVME90VXiqEHmA3bZSCmZJJEVfZewvYLpA+cqk\n7Jbc+wav7/untzogsevds1hSZav0kKkrjgnIe1j66B5IcGqQwdi6Xfn+8Sy0\nXm9PG1hUXCKaGOFqpafQap0bDtKyqkHSt2fhClyxo1qFTWD+ERD/5aRmSrzx\nXC+evzF0MG3ops7p/aMHQErF1m1im7qWlRfM+ylgd9pEuZ+d3ALsbUcY9tGY\ncV06Jb/npw3LBg95GDzty/0IlCy50dSSj2gWx+EvdsDjbL8JGRXSRhcpOxZs\noK6x+F1yXx2FfDCrvNp9AWsvONrYktGGRbuF8TUYmP2uoT2ekqNVGL2DG1Nz\ng3/6YITd5oWdxEJv9LYmi4cYfIKU+rnyT2eQ2r6rONDb7gjj+IuztfbUDIaR\nCibYeNhRIgINQ1SWxPyOqpFqT39P/8H8TH2K8rI5Z8jU89ESBchfOKZ0FECl\ns6OmHjc55RtYO48sW+VlcjXQwAl5kzVdD3Aujn1g2P6+BTUVfXzKMK3JFvhD\nRFL+dwIUUHAbe1FdG4FtrbOyPg1SGWi8saZG6nj6Vjjd0XH3EipcRmLllx2i\nWOycqswnBWBEAslhWYarcZQZtKugMSM40FHDjkhOcgbcRZeGwPYfrAX76V6e\nvavx\r\n=4a3E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDkwR0wXXkHI2kDdgOWDVcaJri/FhbPJO8ZuM86o16hRAiBDmt4DGwe6lkD7lhpheuem9844ElcR5yAytESKSLL85Q=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.1_1589171255535_0.0922489027242801"},"_hasShrinkwrap":false},"1.4.5":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.5","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"30adef9d1cc689c3d7cb1a7657dcb5e878c7b1b5","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.5","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-wcATwUpyOUt+ZvYzcdoJd2eOj4UHCj9MoYhaUsg0YYNG05rx5J2C8SLu1oNQqw5UTmLpkbkliCwnzHquFMpSOg==","shasum":"4adabca8e0ae0cadb02d3e729247181c6abef0e6","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.5.tgz","fileCount":387,"unpackedSize":844859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuPTsCRA9TVsSAnZWagAAsxEP+wVhgtHeWVftgCjX7Vny\np6uzjO0hLt667ctKKLzIFEckufH/lspiqxpR8auZ4/UnopZkAYNUhBV05k8d\n4Dh6ZKfjgbapjfG22UQ1O4Gy3saPf/40T1Uv4ayl9OLKWnrQ79ePFTQD4Z2S\njTxX56WL6cbPTkepnoZ2WE838HwWI/lk5iTlol708WPYBKbNes6cuwA3oa++\n5/n9TQtjOd2iSVT4mAD6o708YXpzKXLBs7Y8mmNzVocCzmTY5wF5wE1YPNzl\nlMla0L+OtOE68v5/Unm6XF/bOpzBQC6CUIrp4pu6fKWxzE5yklVSF2jajRjb\n26CjOuGjnPBI2poiTTmwetheSwQAveel7uwMXpNudEw5YT1pKJEBcjFFEeXl\nOEqCk6Ef5PySPkJFnOh8EH+UqM9PD0PxbmJp7pPh3f4Ykq8HPNMyw0h6LnnT\nLKm5ATuuJguI/3pEs3aNxj64yv4xtPMBVeKIzl6YjqlaEJ4LoV5r4b6nxxJw\n/re+B7Gb8k09jrGr/7EU1TIcQhoM8CUG8j7rrPqZM/1rl7Fd5m7dT+GPO05Z\nHAkqlGbbJWSp9msLZQpJnKqyblfQ+7BWKAH/JbyQw2Nhh3Y55hfNmWMUxNXE\nIp/gVUivEcoT1rVpEqzLwLlwK6jMOd/C52NWrmBLe0k6peuOw1vDs0V9zkrJ\n8tVp\r\n=RiOw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmsV9PED7Frsnm+4zMVq6Uq/sHleCDvJ5P1cVPZzJ47QIhAODAEB0f74fZrjfzb8sLywH3u/WlTuw/egMhKJSS0K8C"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.5_1589179627944_0.8498924047869882"},"_hasShrinkwrap":false},"1.5.0-alpha.2":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.2","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.22","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.21","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"b978c698ecbbc11e4ed883df871c56db345ff2be","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.2","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-575Nzf+biDGOrGmjI3mvWbuKTyxqhyHHC/fL2P4UfmUKYb9NdVGZD2gWqU8chslnpIBoLNfJsyqXRp1KrWPftw==","shasum":"3da4b68c5921e73ad8f5713872e5a9dd032bacbc","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.2.tgz","fileCount":387,"unpackedSize":850559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevganCRA9TVsSAnZWagAAtpYQAJXeIbIhe5Itby6OP1ol\nCDuCISg6TYF3U81ts4zHcqAp9U4B6VHwdaTc3qSYbnM2MXBtIg+wLyqPLoKW\n5weeHwPmtMalPqq42kyhooqGwIl5EztC6bmtTAjuCVRnBS94eE0TAUDVqON/\nR4KKYjhX2+8nGJk4LsXmnSP7blugR8icOJw4c++CeIjS0vhz80ATm+7t2sBS\nFAqExFF5YFc/YWXTwVXC19GXAJYeH6K46FYKbbMUmXrAdtKWWBUzAxHj5OYN\nRrRWHpfr+OABAzKCcMjJkeZJt2+rTw8aetZwWDNW+FkeDfAxjmldMy2A/DJc\n77BwC6BeEPfVnfIv32bwsK0H04LxgYq04jPAYYTaARC0I5pJsETKoFY9xO4u\nMWMk8YSfR9pyCfPy7pG88wqXwJ2JPTKly7rMHpIrEcVltMcqhE6EdeG8NOVd\nS8I/zzt7KwZfRLpMw6B1fk5BhRy6PBdgH3EiUZt0RvqwGuP8KDFpL9unHkBz\nQzTPbRFYoeHAoF8mffdJ/2St6VBO4cITgCsVT5manfGocUqeHRjSLzbXMcf7\n9LUOuB3uwRhMBP8S9KJiXamokQlW3Y8lhoABRXBdbbcZlsbFMClL/Aq/1ooz\n/g7nAatu1ulHpZA2ugw/muOM3KwnsD7hAHmSUuvXyYXEqicRLi8s3bhwlNZc\nnd+G\r\n=ObuF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDXFZVvkMXvv47kJfAMHgSroLAsvfCUjtn+Wdq700jUUAiEAzJSAzy20EiNPPcQwo/kI4LUsfMfTDkgUxkpr20ZAsRc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.2_1589511846741_0.6401129340225822"},"_hasShrinkwrap":false},"1.5.0-y.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-y.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.22","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.21","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"82e124be34ecce11669250193f4fd717ed9265ee","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-y.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-GGMoV4IxWFZL8wt3EIA0kFnHJqO9J5+UMqsUXwRVJiW/9tqEKJFnaE4p6vaF88kY2qN2eCfzDSU5gxfE3kmcmg==","shasum":"2ea70a57cffbea1273a976fb79664d72911b4580","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-y.0.tgz","fileCount":387,"unpackedSize":850566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevme1CRA9TVsSAnZWagAAdzEP/2nhV9JN4uD59iNJMKQB\nwbLOLSOnLtt13dHS0zx5npOuo5up7FS9f7VGjayKelnUN9X1ngVtG1uEg39K\nR1r8jJrdUqiq4Ro7HFAF58euS6IDv73P0fUQ01Z5+74DUqFkeLo7WMyFrbl/\n9z4vPUMFbRUL7ym13Hd2/YmQeGgEkogm2zb2C8fvg1xSyWmuadvUy/uqS+6H\nv0EauZD7JqKIFOxTJYTrHNAqvoHFkCi3ckMyiJlLKWL4m9EMZ0pjL+pLnK5p\n6LwoZ6RUAuVWFQupDJGVojmVKrBe7NNKRrCcCCil2EwzNOBCRObjHkfCFy5c\nxOBPSn5z1u6DdidF1HFiwzqHL42/JkQAD9HEeFdgz2ItvtHaLGhZtO+3w1+S\nYFs37OCorzXP++JO2BRwxdFHZvxsVVzK2hNx2DuPgQuXvLOn3vaEXzVYkZGe\nouaLVvorZCe/VWjJ8P/ZdK1jDF6nAh27wm6j4XnLk79YJwSKO17bUZMIIzSD\nAcWH7sYNdroESDOwLlxxUDF6dnIPfkI+5+HGoEk71CAflNKuqwkyanDtmD4e\nEPXRT0zGcx2G8NjQsFMcEYexa6F/LyBidgbI7vvznEoDcSXSY6sL+rEsEwDF\nzdNL/tddLY214A3dw6E8K2tD0TV+5ibWcutDSFNHpuiMJgSAeuLKdGznmJPJ\nGM3y\r\n=vQY5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6tD9onVi1s+khRGttTfEsZHE19TeZWZ9XlIswZwN43gIhALCDdrASMFBuAtDn57cjBKpbVquu/GtffW7LiSCyjF7A"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-y.0_1589536693436_0.23770046330428585"},"_hasShrinkwrap":false},"1.5.0-alpha.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.22","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.21","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"8688a16e616cc34d6ec359c6e69119a8b4c568e8","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.3","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-cQ5kwouUmaSW8dncc6hPQRsdZl8EK31pvfP83PmlFQ+aQqpq5+zves+s5qIPqyWUz0Z4qNF80BE+MALwpExYjw==","shasum":"0a4a8b69049430852c4f67255faefe20d4812f9b","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.3.tgz","fileCount":387,"unpackedSize":850570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevmo5CRA9TVsSAnZWagAAnfgP/2WhsHt7WDa1jsBYxcDq\nbDOmJH0txFN38SIlKbTABhFQmddCFR57yOVNqkuUoPcU+r5OO1iUKw75NSdC\nLw+Ebex860gbMW2rKR9nLH4RbLCEcq6LL+S4sCZiIFfejdlObNvdwbHxpUgn\nZfyWHEsa4oWj7vashLH6PqNze1I1D0jqk7q2/TzYIMoZ7TJAEEiCP6CCfQd1\njdQyWZ+CLBL9SdVdxgoYDX6XCipgMcO0bAE+EwL/i+4sU6oUxBu594lyINva\nRDTl7PYy8rq5BAjWkb6GxzknQm5UPQcQN7Fs4tUDXNcmJXue/tCDDfb/WuqI\neA3CKumbQ4MAQ0WJeTflzwho7e/PmKAyyPMXQFw8bczUMo2/4dxW639TlMUq\niLavDnBh7XmT1BH0LFaDLBPMNTh93xvd+TKUluI4yn3PpvKcff0eQfUXr5Hc\nAmsl3CTaFde+Zy6yGrc/u+uy/Ajrc4gjkh0stGxlCOU/3s2eUf8eAL60nAHQ\nOPZ0/Vk3ZDg5oBWl7rYFpvkm5bdm46MPfFBfYtcz4cRGMVIJpT8N+FD6K8x6\nFGlaNLyKAZ7tsh+/5FN/f0iJtHViktGVQvPcpPkgNKkrDU4PnPOA6b6jV6so\njsPj910J+SAQkB2GTp1RWTgbadC98pG9EXI/mtbavicTNDu+rciPih+q84jN\n3rz+\r\n=RtLh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBmHw9LC0iYELOOg9GCU12VaecBn3w8KIqthSUmIzoQnAiA2+q0IgtUZp+7jcQgPsZfKFK9yI4nUvp0JgAcMaWZM1Q=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.3_1589537336550_0.067716318163487"},"_hasShrinkwrap":false},"1.5.0-alpha.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.23","messaging-api-line":"^1.0.0-beta.23","messaging-api-messenger":"^1.0.0-beta.23","messaging-api-slack":"^1.0.0-beta.23","messaging-api-telegram":"^1.0.0-beta.23","messaging-api-viber":"^1.0.0-beta.23","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"b5d0e174d06e6861a4201a2845dde4e059358790","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.4","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-+BFR6qSjzNdA7/6mq+Kw77SNz5uWPfEgsg7KiJ9ra2Bs2tpDrpnfDTCcodV3oUV7MGhXhDcnvrDPr3dAHT5iLw==","shasum":"ccf8653f8d937eb8627946212c30f391f69f387d","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.4.tgz","fileCount":387,"unpackedSize":850570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewljZCRA9TVsSAnZWagAAcjkP/3Y6NRGfa+9hkdBHVWSW\nvVMZ6dS2JLM6XghJay1/QmkxYcSm3RskF5KEefi9yv5JMt3IAyb96KkINI8+\nJaej5AMncu6Fxj5LFEKTrptAJs8n0KW3nepn7Cnvc4xiclTh09Me0PHd6W5C\nXDIIB1u6YtpbhwJeUHqOm14vVLG7rboKQZ/GQmsIIa6mE0x4LO3vwqljbzAt\nt86iW+ViSrf+4PDeJkcFhBhH5hYbV7CLwcnO4BaqNF75reYSA2A265caGjk+\nyXb2mn6srea0hkobDvVnNYIrddDVjcWTK1FAKrKS7A3S9ZZIHvhCIARJgEeu\nfaxXdHslWQHA77dZlaccuIVs+kerZeKI+YZxOfAOmeLyXD+CZsP5lF0iNxjd\nVCzzCgKXKA6WvVmyziigkZBFXuruBVHDvu7OmC7hvS5sEt7EsGswIYOmo57f\nd2B+j2iwcOvUnyP/IZTqTCEEerbV1roz5Byoz+GuLLrJ59gmZRSVoj4zJq1G\nkdLM6rf2gjNcmJ84ahIAvymARMS9CQRY+/8UcbdRb9ngZaRkgyNYVc8IgPup\nE3TfWe5TbpxvEzLqhXZ3D+2Y0sjZrLwFwmDs2MhZaLDaSiy/sOCrFR5XnUHu\ntPHH698tJnh7DuRQ2TYwyMr8U0wo0BdfEiOCjZ34YVQjAIzEYUpx9734U8Sd\n7tjZ\r\n=2U4D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+l+ShRa6mcCMngoURv08+F7thFjmfe+bc3soJEpt3jwIhAKb5Zr1QDnWp6WocX4Pocta+dq6FoXkAQ28h9i+7CN0E"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.4_1589795033326_0.6958855919328606"},"_hasShrinkwrap":false},"1.5.0-alpha.5":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.5","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.23","messaging-api-line":"^1.0.0-beta.23","messaging-api-messenger":"^1.0.0-beta.23","messaging-api-slack":"^1.0.0-beta.23","messaging-api-telegram":"^1.0.0-beta.23","messaging-api-viber":"^1.0.0-beta.23","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"cfb66889728d5428f58cd3004eaf7e347199599b","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.5","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-LP7jwCJqU3nVEW3MdJskK5iniKNJNgc/532TXB6J9B+nNgbdXlyV34Bpxgng0G2ArAKajWJbvqKjTZ6LUH+zUw==","shasum":"be5bdbb8147cdb39cf691950c3ccc6db1095979b","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.5.tgz","fileCount":387,"unpackedSize":853909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexRZbCRA9TVsSAnZWagAAIs0P/24wXeHY14dJs4gnpe1q\nBhx8xiN6+aVMYW6QPuNjbaoaq7zp1ihgEJmceGcKcR2VJDDnQLWS9kpEGXLm\nyfFDB/HqTBtoNXYxQUvg8PIg0Qn8/hfzDMr5wXfcNovPibBsDeYhNxUTddWc\n4PrA1Rs/DosiAvtiwj8pDy4trciIrnNRLM08FbnYxVgtmiD7cxoY/m8SimXx\nI42zzjNAIqAGE+oOhFd6dUe5Y52XGmkEKA+HHQQeWLbzOdqSkwPWR5H4rOc+\nRVtvAx1+W/rR/ISJM1OrSvEc1NvXSYxqe7Pxgt41URlelwKVBCc3PuGRIXcM\nonEPVjkPTelccZ+nC7Xo22BmGWiq6sXWFBsCsyZiGT0Q+mHOUTWBumJYsOrW\ncSD6UtTqAdGsLhbyxp+421KGMB1WXeCd1f+XzWzBnGXA0mesnfpMopWcFKPy\nQrFLZxMz3QafJDmRBQ/+6SC2sd794jdHLxgXG9US8xYQ8SWe0dZRNj8kNrUz\nYjXNfcuXUY3Fxy6G4WvopVeeUjQdiN6fq7b0k5IKyY7DLH31P9GiEvxVb48z\nZj5L1W9s8FNqFuewOw/ujqIURupZ/0yIVnlJe9eYSvyi/SkvnsnlevjxTaqQ\nVf4jdqOw6VOIG8Yr7f48MsutXUh5UD9KvECyMhlUQylK1OcJ1KP4BDYEZ1/V\n3bPS\r\n=Uw2Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+4uUPzvKgsMCstM8LzZyOryjUG5HmU7ux149Ujey4owIgd0wjjNaXu98ODwKFzC6EVLFM43c5UdNy2j7qVHW1P4k="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.5_1589974619230_0.2106428786793335"},"_hasShrinkwrap":false},"1.4.6":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.6","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"ca3ba5de8be03fd8944e04703cde29ba372778f3","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.6","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-MxalkwX39kOhxefwzF6e1U4KHcgX6ouku2VpE9FBm960kdqf1kZJnc0QS15gLjrf6hGGDIeSaOWtuX8AZAR30w==","shasum":"d93079f87f66609dfd39361d42a2ef01c727c021","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.6.tgz","fileCount":387,"unpackedSize":844760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJex+prCRA9TVsSAnZWagAA2AAP/1Cr5KOF4gIn5bJ2zio6\nATp8M8BziOLUj2HboKHpqNxSq/OsLoj5ofrbjwc3iDmY1x+F98Hq5EU+Deol\n0Gg3RnhSqWJ4qa3KgWOWF4IVhuh9MZNX+E6IIiKM7pLTMKBKZw7KtdR01wOo\n+Uu8ELwOC3p0e7YabfLrkWyCvqZK6o+tw4XkkRekoPYDRp8g6l5KZrZObl7U\npAzK0MJO6ees8Ffwi/DgGDGqgPr/dtn09t6qY7dU/q9KTn+tHpZ/czmgkV1+\nZ0YinhslQ9QD/Utf0lKsbp+QISrB3i9C8tYaTrORn/fzlrKWRYuEVuD7rB35\ngzY7cueXaGkKl+Nhe/TT0Mtzp5ubNQohoiwCeyAggtDSm8EBkFbQrYYR2VN/\nboihElOLIWWlJbUdeKpsyTlib82ZVa+ijv3ULHZo18eYcG6dkBbq9doEMcCI\nZ9YcMzdDFFmFAGIlkB/pCbbZD8BP8A7V12gNhsMODn5jNk/BwdxGxolRe+d7\nFjT5GJQ6O85N6a6Qk44vYoc50UBxkxmPPNodqq994KN86KFVa04+Zd7kIL4Q\nzkVVUoyiDFpYuOhunqz5Eec47zYNUuoREUL20YGyFJnTuCs4QC3U03ju3J7G\nd060AnMR5QKqMXsZjMambLR9Upd+XXZ+AG1BqgwGlUFyDOZ+WwSed4pUUzN/\nfK4m\r\n=KLXx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu56ZHwd2Elj6dx2jR5A9UxEFq+qqXr9Kmsn1zj1YUdgIhAMFCd00IVW5igHcQRHxrAfvfqff6vuiYWr6rtP50c6I1"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.6_1590159978799_0.04862514329318257"},"_hasShrinkwrap":false},"1.5.0-alpha.6":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.6","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.23","messaging-api-line":"^1.0.0-beta.23","messaging-api-messenger":"^1.0.0-beta.23","messaging-api-slack":"^1.0.0-beta.23","messaging-api-telegram":"^1.0.0-beta.23","messaging-api-viber":"^1.0.0-beta.23","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"cc19d1961be03d188df53b39aa18278cd5e6769b","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender.svg?style=shield)](https://circleci.com/gh/Yoctol/bottender)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.6","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-GcmkrmceZL4Y+AYza0Ghm6mJESyjc4rN0uYGI4CFZzys/9BhB9W0fFDwrskB56EmeIpOFuGJQvx01kGJ2hzvSA==","shasum":"db05cc3e9ac1055bbd27acbed67cafd24e3af6b1","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.6.tgz","fileCount":387,"unpackedSize":855372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey3prCRA9TVsSAnZWagAAW/wP/1xaGjX8Ifmh9A4hBa7N\nUJybpmX9DTRxa+suKP/Pv5YE2hjGrkPxZGdaMcKXN76U/xW6XGppzAKr2RR3\ncszt7PUaKEyQXJa/NnlE2GcDqpovpKsVuSsNK30PtvkC667/3NiUvm59nflf\nj3jl6bkrxvaHtqJYY7T4mxZInXjujvd+HB56VxwtPn56qCFKBc89HmO9zsT9\ntLS5QKrLTbvyOguEbk2QPxkxgX3yKtSOS8F80i8hzWD9+qlgxbJSoW81VH61\n0hL78Yklk7utHJHK7MpBmwRC/RLeuRkFOkkJ3L2s5UWRlNKyJE/Yeho/rTlX\nyj7FDN+eFoEskg1jFbrMNZX71CjVqkNHERl9JMX6+M+tYSS4/yEtf7sMLJXa\nEmcdslU13XeHKCvfwQX4ZnN+mk8JTHoc6jRhDtIkqmsP+NOtajOe1QEb3kD6\n02VnAs9NPT+yMAsbZFUnlQlRBsAagnP3iiYcaoNavg3DZFssIiGeocgJLMiS\ngqMn5MPLKfhGtyQzXLvVWMa2kq1qWRNWyrPhgTbP+pVnBQrdJGE7AduN8Eil\nmUaosh1kDQe9OhG9StH+VtsjaLuF+3Z+mqRcWxwUzgx3cGdijD1tGdmEVkrt\nCUI1MzjqCs8pQbWj2ZTXY448ur0iZzkNtCwDaKoRrTpAmnB3I4j4ptgD5xtQ\newGg\r\n=Y6Z3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICVI5FjV6tbaPiRcSxfFoR7vNjyauNalUvZizCCq4zSzAiBnLuZR59HJObM4tIFfLDagTnv2uIz5W2zRjJSzalMrIg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.6_1590393451010_0.7221632199073391"},"_hasShrinkwrap":false},"1.5.0-alpha.7":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.7","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.23","messaging-api-line":"^1.0.0-beta.23","messaging-api-messenger":"^1.0.0-beta.23","messaging-api-slack":"^1.0.0-beta.23","messaging-api-telegram":"^1.0.0-beta.23","messaging-api-viber":"^1.0.0-beta.23","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"e3022a4ce2c578f062ffaa00cdaa98b46b9da003","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.7","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-TIKgiWlAtIpEwx2lQYdC6zHHlP6yzI8cuSP/MBZ0PA20hRG92wz+8wUXklbBdcFuDUeL+AYYKuvRIn7lkQcuuw==","shasum":"7ab0e3973350aa43175813a31dd9faa00f1c66e0","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.7.tgz","fileCount":391,"unpackedSize":858876,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezfPOCRA9TVsSAnZWagAAfvAQAI5Fb2NHNH41htP3sKA1\nutPCsRAyd3Y8FgeMLjddLMfso8R6hj7fwRiHWmOeQEUYps5lAWFKcm7RDKJ/\nR8KNNXWZqRNUitnf4cNV/s0rT169gJnRQlMEDSIIIsfXLuOxF1UVlz8b4p4Z\npdzz9UK4lSn0Mn8zdkZ9UDA+SGdKgtMmJR3/YfE36mojrZnUMlq3loBUdxJy\nwxCExIEfY1XqmzP9OBKtcYFbt0eoVdfFpOQS32Ec/Rs6wt9FqRA8wghaYDmT\nhLZYx1i9uZo9fhu88/QPWleczasHeMBWzEhzv8bVQLJyv/FqrmZLn743aNaC\nlqNsY26PSlTj3M6wAYps8RKomU2XKgjMQMclQuIFyHIPdbxwnRMCBO3NU77S\nbMEo8fdn1H5GmTuuJcmgT8yYl+eFjdHGU9gHZ2a4RhMYc36O4S6mvgokWzwY\nOg4Ri6OqUAieeJpZnyxdHeEMHUY7QWpF61YqSZVZlF1bYv04vy2a7TsEVF40\nx3u5z0wJla5gLUYQQQD+1fIdZCKAuXC6jd2pMijeP/0LMG0ClrlVte7ktU43\nRfi0A49MxA2Q7u4WA9mqlsDSfYEZWnbFdg8rZJcNkWXFFZJAAnkPkUas+awL\n7aK0kZ6FfZIrOBnDy7UfWInZptUqYuvUiapUP5AYTZuMPgkhMTNQqPxMs5WA\nzbBK\r\n=ez7o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCE8Dc8g/0L7zGuUVBq0oJOzDOe/r5DqK5q4VfZFEUuHQIgEhRiktbBdOrsHjvDC4y6wA9J96+kKpa4/V5pxlfEGOY="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.7_1590555598371_0.052699227319261244"},"_hasShrinkwrap":false},"1.5.0-alpha.8":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.8","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.2","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.23","messaging-api-line":"^1.0.0-beta.23","messaging-api-messenger":"^1.0.0-beta.23","messaging-api-slack":"^1.0.0-beta.23","messaging-api-telegram":"^1.0.0-beta.23","messaging-api-viber":"^1.0.0-beta.23","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"a142b6adcf327584016eecb294fe67348efd6a6f","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.8","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-vCGT+UlxlpA66/Wn7kFVzPTGorEZ2RICycey0Uh402VVQQAdrk7y1Y3geGrP/oMGEP5Ricy/a4x9YjDGHSzVAA==","shasum":"49b68920f991018226d6567d807f196807c15256","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.8.tgz","fileCount":391,"unpackedSize":857672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezkB+CRA9TVsSAnZWagAAbeAP/3KZU/ZvMQgFxXeX/EJ8\nHAL8VOYP2Hee2ibcpx42XnjFtb6voye6sR081HTicvhhidoHSaGwtnhwXJPG\nVr8PHd0BWmoOckfT/nncvFqUcYd5dQ18O3gcjOSFXHkwNTWNWP58T6aHmx+d\ncT9SwNpDtK6dGURTurO7FWrT2YQE8u0JquEvu5XOMAF9Qy3L91iFIanEm6Yy\ns5T32o2R/4DAFta1Zp2SC/hyaqbZy29711PhwyAs9GQIY1uiGV6x7Vz8kgLg\nOfvIViVk4iH13b3l1IC2xoG3wY28/PqnKeeh28rReJf1WSBt/oq2W0zCjVi5\nRkPXJ2TNCwwQfJhrBgca3R7pI4/vqGUKdocZsj0KjH26xNvze2V3b2CyKnLx\niYjHvvAw/14Mw1P7QIFYC6QEqu0nOEA5fb2Sv4s6sSp7DeySfeA/Qz6r3b5N\nLPKMmxDbQ8+cCn+dqrIFZs7OTLCaPp7NNKhxlMJd/HUmtXi93avB9sHH297y\nRy4JrqBsLSIpKOzfNzcGXBWHs/CjMqpGgJGwY/UHZvW7nVos5FskOimiZYcJ\na7qbxzXyqq2O2k7x6Sm4HpcpZAi+x9942RgO/CPX+WHnTv1DG+ZvMiFNILnS\nEd05oVIuzJeCCciu1lD6HZcQjMVFHQPpgVLXy77ra10Us3uJRqVFkpE0Yppu\noOTi\r\n=eUlh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7Ex9+ePS/JgbfCYJHt/qq0wbHjSL2V/DSjDC4Ti557gIhAMlob0ipL3xRgyjyweBDmUBkSEhpcxojUMzKABpUYNXy"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.8_1590575229790_0.72929640436147"},"_hasShrinkwrap":false},"1.5.0-alpha.10":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.10","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.9","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.23","messaging-api-line":"^1.0.0-beta.23","messaging-api-messenger":"^1.0.0-beta.23","messaging-api-slack":"^1.0.0-beta.23","messaging-api-telegram":"^1.0.0-beta.23","messaging-api-viber":"^1.0.0-beta.23","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"70dcd75217223e5095c77aff0e6713b1a50aa8a5","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.10","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-tN0e/r6wut7wPrchymA5OwKiHSFhjCRU1xTwY6GAqBgkV8aqlpAKpkRMsW68UVTZNiqDUAjtm00y7J0H31dbXQ==","shasum":"e874a72a38f40e625b8ce5cc31ecc1e3faa200ab","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.10.tgz","fileCount":391,"unpackedSize":857936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez2UzCRA9TVsSAnZWagAAukoP/3RtbDJ6RtlXufniUPpV\ndQ5VDh6HalPBP8tm2nlb9Oii6cTGeymSVRN8dNpZj/69EJadKKBBfB74Y23f\nxB+AVbXqy0TbDEFpzQNmPV5OU6Izsb75Gcqjyc01xSyrOVeg26FF+5jGshV+\nHOeA1na2IrCAx6USrbzLfLkBx1mem/kgVYmkntBDykg1b6ljSMzu7GN4Eu3x\n32a5DzyfOY8PXzruv/6Isoy/wAG8TglcDG0ThuM0iBsPZ8inMBEe9cjmUnWA\npsVKy2Qvnu6F1L0cmtA11Mkq1xmk0HTc+a9DD2OQ1CorjLGX9dP0srdLCUaQ\nkkAwrhyZs2xoUE8uUkOIMbbausYJGAPDNtTSlOmtxg4jrODwgrqYC0tAb6yo\niaAVzobIKSLLZzZ8ej7cGOLEjxcthK68K43B6dRkFsskXEXw8W8zjsQGhGlR\nsSWWi81wtHGRMkdnshCuwAI3cYOeVMn18lqvIfIz+9N5HTBKhnW1lpqyaZjI\nb0hyj1eqD4xaE45DTIThiASWWC0QpFBSspmqNUqoUIS5h6T24LO/+LWZDsjv\nxU/qnOzN5404wVtGnCH5vXCWdBQno0wNs2BMQ2M1I8VQOeQSaER+HfM8leK2\n3ldg8KI/6oK3cax8MCq25ZsKSlVng9cIrChaus1Y2UbmJy10JbemNcYiD4V+\ngo4c\r\n=n5+F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6LOCOJ+J4UF/QE8cbxL72SjZ62RoZG3R1W7Lnq+TCjAIhAKH2o6yeAO5kpYo6JaW6ctpod9gqzsepYzivMvBYvpZh"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.10_1590650162587_0.47149496843861494"},"_hasShrinkwrap":false},"1.5.0-alpha.11":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.11","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.11","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.23","messaging-api-line":"^1.0.0-beta.23","messaging-api-messenger":"^1.0.0-beta.23","messaging-api-slack":"^1.0.0-beta.23","messaging-api-telegram":"^1.0.0-beta.23","messaging-api-viber":"^1.0.0-beta.23","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"718e61fe4af397cbdb6f439fa7f0959b409b0fe0","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.11","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-ndEfubHIm7GnBBccr5n9F3wLCV8LIwFE9J9llZW+2yn8usgOG9OkHtIeElyWkZ4Q48s5J3X8huYToUj7tCQQbw==","shasum":"1d5c9357a16e93d34bebe930b3d85ae66e8178e2","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.11.tgz","fileCount":391,"unpackedSize":858111,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez5lXCRA9TVsSAnZWagAAa7EP/1V4mgnDd/9OK7fEskli\nce2aEAbCWpVztvQFf+JkQLAawc00VhH3NWpgDnSFznt0HYimzYg1ZyFOJinA\nJU9mQoPUJRSJSAzYE1HZUtvJreS4trPU220f7p2Su1bPIQzLd15WtWbRVzQ9\nz86pdsbNp0XW2irnvq3GpeN8sURPThlCK2afaNd3QtWysFTmeGxKfFL6m+fU\n07zr17A9C760k/Zi63v+nNmBa9bv2F6veqvf4xZnfi/KiL7T0XdgU6I8oUaY\n06+6KtTq4ih11ZjD8CsMlE6aEE34qj2SlljIZskfmwQBSPZNEmD7WU+X78co\ndkgX27w2WT+LTZZhEqv8bGcoRyGpgMVoRW08NayFNyXsigsXX8XqyGt8ls93\nqsbCrrH8VTNk/Y2NZ4qtx8s664qOQMwSAkCyy1My/XvF9uDMy1IhZlx97v2p\no42uE+4HFMQMwk3LBZxPuAyDFLUxj5dBrVlPG/PP2pnacgQSfmaGZC1h7MK5\nYlInL8TUNtzqbwCsiOPuCiP8WrowyDZ8DetmziokM40IM+zqESIt9d4GGgwt\nu1KScrdreRPtR+3Ja3BeDsiIltybNnYPW/vAu6B635lhFiKs2JFvBQGqHrdk\nsA1ZmNQREFbTGYh2GgNPaTsLjl9hY39FwbA4SgrNuYFIANs4f2aXO29KIBeG\nyGgQ\r\n=tVkt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhkh6n+kdC6c+53DJmavf+ZB8xrQWpWYYNv4KcOOcPdAiEA/eS3h1t/hWqIYBrSkCM8/o+7yKt77CsG8p2jQESixso="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.11_1590663511149_0.27960519311057874"},"_hasShrinkwrap":false},"1.5.0-alpha.14":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.0-alpha.14","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.0-alpha.14","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.26","messaging-api-line":"^1.0.0-beta.26","messaging-api-messenger":"^1.0.0-beta.26","messaging-api-slack":"^1.0.0-beta.26","messaging-api-telegram":"^1.0.0-beta.26","messaging-api-viber":"^1.0.0-beta.26","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"7a892830cbeed5884674a3bbaf36cf560f8a5709","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.0-alpha.14","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-tiJ8N2iSie2PXTJ5NuY/fawGvSeh3jdTWXFzG7pcqghtMU5Dr3l34f4zHToi4kHKjxaQrzPXsjkx3F/U6/3VxA==","shasum":"66dcfa35881b02aeb7327fa3de63771d5b935f33","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.0-alpha.14.tgz","fileCount":391,"unpackedSize":863905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6JoXCRA9TVsSAnZWagAADTgP/3cLxpqPd6Gq05cby0x7\n+/hsE0hwY+IS6VZGU+kSHfduMP+zMLWqGzRgNz8nfuZqji7D8Ey1TEpXcGpK\nbfjFC4hlHKsiV2o5ERR7MEyxQ3VXSQAmI9QDvQ/3vQdNakjaWTu473oh7nyJ\nyhKOIkBzIPN5kq6kYXx1a01oNBdlxxd51kw5uFv5G2/8zCxp9lv15dsJ6noM\ni1Kort0VC+I3o/M4fx/Eq261H232nlZ1/nI3aZqbNVw80uU1L8tPKTU6qEfr\nUut7sPLSsg6ZxoJSvBoFaujKWou2VHp4lZF8S8x9diTMzBVW1gfGabxwQU56\nQ4hRJu6aHaWPQ/b/hfDDE2OY6dS6yPH8CaAicZMFwyu2/5QbDsWWl/im3cYc\nSeBub9rWLYP92HJU+T7t4Z09HE0KZOneNgW9SPlq4HEckxWnVmW79kAPUiVf\n8csJf+VzEtKr2Mb4pbNzf2ECYEC1+B/7l7jt/GTvuKzcVEbNY8Eqqzs4BSaD\nTeRjZPlCOL/0t28/B7BiFYvlVHdQZm1eNPwPXHsEbQwFDaZbmBlQZKD7Fb4v\nt5InvQqTLPYV195d/g9lG9NAXdKsTSZAUcsWxNy4+oLxM2EoDrQHsfd8MrOz\nJRylw6kgB6Bt//FXPRC4L30PbyTuz6CZYzX6DPH91SWRMOrdz5wMYYWOdvaJ\nX6nV\r\n=mUUo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHCcph9gGYkN+Z2V0M0Zw2bikL/5AT3xb9+yXMbohUVvAiAj2Hsb436nNrIk1ylJQQzs49fDNZeOwNZWNzjjU5jqyw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.0-alpha.14_1592302102733_0.35875681098049195"},"_hasShrinkwrap":false},"1.5.1-alpha.0":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.1-alpha.0","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1-alpha.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.26","messaging-api-line":"^1.0.0-beta.26","messaging-api-messenger":"^1.0.0-beta.26","messaging-api-slack":"^1.0.0-beta.26","messaging-api-telegram":"^1.0.0-beta.26","messaging-api-viber":"^1.0.0-beta.26","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"3589b085aa939b7bf66c3b5b8107e86e683f0475","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1-alpha.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-d71XCIz+2uZqnZaHm91gvjGjT1K/ml8kuXDV32BUir2i3bn9ihSNVZccL4NRSNG1bvYyWNNEuHg0gQpWIvDiMQ==","shasum":"0549b9a6626770c20c3ab0430b13972345daa674","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1-alpha.0.tgz","fileCount":411,"unpackedSize":879617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6ahJCRA9TVsSAnZWagAA3ZMP/1g82eaCgj525nrBliml\nGsPjdhXiq25dO7xWDtBnOb4zLPDmP/HofWIclPWgQXqmd0OxqphnOkIjCt3n\nAWdbe6+aKxQbKggj6QiuwUeQLLVUxRCq6nTnzzIfqtqUMCrCfrCKLXfJhtJ+\nZ1Aq4ASU0nhF1YFKxExpHYRO9Hc4LtA12qWdnXjPjQVFiCkNEQI1PGrkDyj2\n7jzkjWZVIdb1xE7NfjoPWg6/CnWWy2BXN3JEaIkJcb/M0mh3c/BuYX48HgT1\nPotCSus2NiFD0+At++/XACTlnwu0Ls2PGxcrwaSbwfagITYso4BuY4fewe7U\njQuRSOEGZ/RKWEpd/WQfXgOBs4AHKu6P5BOKzxMsqu4wMqBpn6o8qFSewAXG\nflarzIG4UTTwNYd5UADoH4m3yqwxs7Etm39RgoMFLa4HLbckMpG5hEPLlpU0\nqdChuawwsH8GalwFz2hKiL3NbjiUn/lup0gDh6lZeJS8ZedXT9Xn3yrVEKzi\n6biEtXYbj7IZ6eeDOAPMq0SdAQEb2gxTMDA97TB2gmynuPWwqRqX1VEEHMas\n4qU/BsmLG1T5qXIyy/NYTcaCeJXEmUdfaRWmAMBjMgKhJP7rAbufedUADfxS\nkbga4JAtwVZOGnw6FoPzjs1OIoBPTv5RLWvBFGSododw1EEC4YwcQi8N8t9u\nmMVT\r\n=q4xg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZeBpbFK1W7TFTA5ab9/PhtwKlYNCx4mpaUHQo0rWkpwIgG6Ps1UCPBu47Hry6a4KE8vf0AXrJG0EJSO9tvs2zTzo="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1-alpha.0_1592371272871_0.6300130435539155"},"_hasShrinkwrap":false},"1.5.1-alpha.1":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.1-alpha.1","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1-alpha.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.26","messaging-api-line":"^1.0.0-beta.26","messaging-api-messenger":"^1.0.0-beta.26","messaging-api-slack":"^1.0.0-beta.26","messaging-api-telegram":"^1.0.0-beta.26","messaging-api-viber":"^1.0.0-beta.26","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"611534b94c62ceda0529eb2be3c5d7e8e2dd0432","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1-alpha.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-eHDWreosaasYcVNiNRrEFhXpWfHmN14GAwqQS+DQaRiz5r86Ft4dANCjRvc4OxSNWYmhDOHzpyxFWL4yKTdI+w==","shasum":"5598ca1aa0b83a594bf6dd1f93edf6817bd2df14","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1-alpha.1.tgz","fileCount":411,"unpackedSize":882003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6clwCRA9TVsSAnZWagAA7ygP/1vjNatJXD7pfeei+MoC\n53RQxD8DjHyT9fLl3Rdv4KrVELe3LP8eTD+QEQVkIsW6HApjWSOn3v4+j9gT\nnSq3pC5m0joCNiNaCe20W0ICB1ob0fGnad7LaSUZsR+yPs18VID/TL8Zb2oA\nra6HBi3jGfjAwepwHVF7DjcahNO+4ap+je47gBoeC2Mi4tj2Kp7pkHkZRU/s\npr0pOmsEiJTFdbfrL8zj8mZHOnpyDu8k825GDH/WUToQYEQalKV7lg7g2p2I\n0sD1DudeG76REO0nE+gYO11AL6ZqAns5dHbWkYD03inzSn63jLDLQRUVtrx+\nK9w0zHvpOKz7GHnj7vBmvZ8aHeCauqzLP1ALG/XqljMXKiFOZs8YZR9OxHUq\nbPE4WB7tEflrP48P8x5FrGBA2unC4j8fu/r2khlmqmu5+1q7tGMVeKxrTmnL\nNSwaRcO4ELbjqAJuHYak5rRMnyYsioSbly8KzcMZCHbrNExDlCPg9bBJLMYO\nfN+KgAi93f39lYw+G9D1CCgY1cA4YJjNA0OnU0dEWERyylDHxfW75DKZdsko\nh1ME4bB0mciXGE3GZjXW9K1DOWmwsiuXknwPlYpnykmyub1poqkGA6ebmvOk\n7ro3kAdGJTeuiMPBZ8J+n0aEPSBZktb6Xo9e9SYM01HpOtU5KGWmvTqdluo3\nGq3c\r\n=fYYb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6J17KlZnKY+fkhkwHwVNvf1lt1T5ZhyK4aPnHT4AIKQIgO/B5xXkcRh8sX4DKudhaYr7nInsg4ORaA7/N3uO28rE="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1-alpha.1_1592379760094_0.08709139834613477"},"_hasShrinkwrap":false},"1.4.7":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.7","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.16","messaging-api-line":"^1.0.0-beta.20","messaging-api-messenger":"^1.0.0-beta.18","messaging-api-slack":"^1.0.0-beta.16","messaging-api-telegram":"^1.0.0-beta.16","messaging-api-viber":"^1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"b5061110827c48ac7ee1f2b692917f0c4a3715d7","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.7","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-HNy8ZPe7xQASf93DRdratSfdgsQP/Wi7kp5ZH1ayU7h3BnIjmf1uhfTz5wmhjcPV5+VC8q1D9vBJ8LkWk0eQ+A==","shasum":"114720172c51d320645783d5f0374d02ea6715b6","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.7.tgz","fileCount":387,"unpackedSize":845044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8Xt3CRA9TVsSAnZWagAAR6MP/1YN1NGYmSCuV4YKqC1L\nRmsA3ps7jU5vUY3GgSfpqroNpzH5L+rDE6jFuuFmLR+EszXV8ppE3qY8BbhE\nKf4SgUuPydBD+E2cZqbf4ll4YQbpbnNhqMkLCCAA+9VdHr7urQezjhmMoDI+\nPvNpkynmTZC/UmsvlbCpFM8zicrmZKqpHT/HFILc1HLIUz5D1EunO1I4v33U\nJmF0s6XgVnWGvMcvz3SOzQzK9ZpgxAAKMVQIEjjNYkajEI4SgQOP+fw43eFX\nUJQgtuUzkKngHBFB5JtFcOYuotMEWf0APR77nj+A25090u5lkdbvWJPgYJ2h\nwOjC1JJq2BN38KLribA5sNkefs4r1GhAtE90zX2zBgaUphCIzpyb93N65IX0\ntniAAP2MZ/32VGGecrJDkkIlLbeb4LYSASa6hvaonOBOcYyW2fDJfRCxdcu5\nc1lNj4AJqPIN+rSs22JnKPBdUUF1UZNVZwOr/JNqbZqJBkviVr0s7k924Cf0\npSBesPM88s//Kt+lthiFbjhO7G/G7x2PQ77PyA6TBqz663T4klS4SLtccXfT\n1EZH17IbArMQRF5a0uSvcr38iJV/ctI5S2l8H1k3PmwJN3053CJrE9s0PRpk\nSh8zW/qpDSGWgL2FEyfJ8TcCWMh1uNSzJoErr7rZfuoOo5am2YnQWp81/C4j\n+4IH\r\n=Q9DH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEtVAZMaWSJx/IBpzC6KuEIMO5T3oARTFknehQ3e8AtQIhAIIvIfoSpw4IaWzsoQXhF9PWh2EAMoHt7Z8TOhi8hhGd"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.7_1592884086708_0.4506027342048946"},"_hasShrinkwrap":false},"1.5.1-alpha.3":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.1-alpha.3","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1-alpha.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"^1.0.0-beta.26","messaging-api-line":"^1.0.0-beta.26","messaging-api-messenger":"^1.0.0-beta.26","messaging-api-slack":"^1.0.0-beta.26","messaging-api-telegram":"^1.0.0-beta.26","messaging-api-viber":"^1.0.0-beta.26","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"6a033de6460c8fbc9db3c95bf84d1453201c6f5a","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1-alpha.3","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-irToCVc49ZEE7wsLd7vGD8F53txoi5CoOgR400LvPxq75Fxidq/WFA9ujOQviXm8RRtxs9UWpuL1+kG6Xpwssw==","shasum":"c9902a476028d9bf72a76a8741a8f0f1678d8d37","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1-alpha.3.tgz","fileCount":411,"unpackedSize":882440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+WMBCRA9TVsSAnZWagAAYc8P/2wFkmK3Gro9ZfkQ4LGG\nnxIiK3mtXh+P3KqfUwp3fU4xoYuQfcTs40mKQjd5O83t18RH27qBHRhL0Te/\nDuzUR7HhCGfvWz5aWejPzU8hWS496ziACLhrd6zGO9rlIbpjarqp0Mey68iN\nQ3CNUGisfRzCEXvFYx7l7C7gvQDyTMrmdEw/IuvPTHJ2A4O7xE4D6qaCm32Z\nNIEtXqwICFm/qjTuS00HsIfZDFgEYXQLRpkX+w1DcLEy4fsjffXFtIUegzC7\nSxZQvVYw0hl2jhR43oYZ89Ghm+uzjdDIMp2d8Jt6hP980ONoJXg793d9WAY2\nBlRF2cnCXUqN3iTabr/ETISCNXH+r9j+33XJ2f2EPGkxVPAURB4oZ6lnebAi\neut5P3FfdsN/3ILKfmTl/jyhvUKZLGEM1P5x/jCPDwyw315ZU0WrKvxnqyrz\nK+Wnne7M7qqaXncXG8NCqQjJobpX1V07Ee6eLFbDtvIqOj230xZhC6wVUVh+\nb4ue+Pad1uPsGn82bE8eMsoODTLiMbdZPx5XQ9BkhMFOSL+idvZUynzHiMVA\n2PYuRR4IwQZySiwA7ghuejI3guyBtIHRRNzkjMynsz/HTPL+9QcAdILYdFgV\nkrHN0C6gs50LBRRcJvIYDzzDzDiuNS9VlZICknMhIGW5OQuoTUdURMlOfVcC\nD7Eo\r\n=+F37\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrOYC9AyKMhp5Al03ep5M29T07NXOMMQ5vNf6NpOooUAIgNCA3txo4Gr3PAELWvpo6rwgZBQ5Fbe+u+xg55ZMb/dw="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1-alpha.3_1593402112860_0.4979828419776171"},"_hasShrinkwrap":false},"1.4.8":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.8","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.0-beta.16","messaging-api-line":"1.0.0-beta.20","messaging-api-messenger":"1.0.0-beta.18","messaging-api-slack":"1.0.0-beta.16","messaging-api-telegram":"1.0.0-beta.16","messaging-api-viber":"1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"994961c31ad31029ef8c3642a9e6decf1b287b49","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.8","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-lMhcNgSmRZWqiSt/CI8xxWPmFXM76FS711UgievOUaVVkwMYfDfQVISVjctWwNJEnrV8VWHdNxAwnDcQ9CXfGQ==","shasum":"1146d3c026153612b68fdbf4e7723543bfd7b060","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.8.tgz","fileCount":387,"unpackedSize":845038,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+qqLCRA9TVsSAnZWagAA2ZIQAJ/cjzD5l90rAWsUZXnM\nKhaFI3pz+MxmINzonb0i+nCD4cWba9BfFAXvcKWFSyLYph+LArOl7MDjEVgy\nrfy2ua2IgTZ1gNlWYeJ5PVA3UlbfsYKLhqJtcJFAE2ednYNXTLXBV6i0BIv3\nB9QQdk0iMnf1Fx8YV55IPgneHM6unhpdl8fg3y3Iyo0HLWp+4JqRkZZcANYQ\nJRJcjb/qrFbNDH37miKhsqHL7Z/0HIGgSaREu/73DDfAobd/Ky7HYkcdS3WZ\nn6ZwV4dM9+ip+M6LZrhRyQqhtetCgbytM64Z42aNd9BqfspOeu//hOGhLsyD\nUoWomvBlxUAILuMoqThfFVY8gvv3hCNR/KW2anzN/F+GAAvFhB7EQHFV2Vk9\npkSV804iz9b/tKQ25Evvx25Vh7szD6RQBL0yDH0UeM5uiPbWuphX+2z9h9fI\nMMb6cFkVsd1MqIphtsVH2WfRSLicPvKmSC8I+m1XM2/Q7jOhevWHN8Du922Q\n++v53LMmWr4kIrpk/4abxDKJBZ9k0O/yf3s/Wn4TS6LONKQFidy3T8M+8Eyz\nV/j/tIpxBJUNhC2bFZLJq8gHPl62+QdF+oHAApCg/3BKbbp+6Yhmw/HwRPq7\nY3OTwFg2OGmWaYZj4/yr6PFsnaaiFPNKjd4M3EB0l9vwCX+nohP4bbU2+gTm\ntW+s\r\n=Y6zw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLxF+RFKGVcmpIoLjXENgOtFe/fxJyCmGWAeUPwxD7VAiEAvtatuQXJYvwtrLmgD0WabmF9s3AjGFPMGdpxUv6eGKs="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.8_1593485962372_0.6763628865529183"},"_hasShrinkwrap":false},"1.5.1-alpha.4":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.1-alpha.4","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1-alpha.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.0-beta.26","messaging-api-line":"1.0.0-beta.26","messaging-api-messenger":"1.0.0-beta.26","messaging-api-slack":"1.0.0-beta.26","messaging-api-telegram":"1.0.0-beta.26","messaging-api-viber":"1.0.0-beta.26","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"5777440a5660a78e817683d892f65b1df6b69269","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1-alpha.4","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-GgVnPXvQKmdulPU+S/tyvjTHuNnQ0P20OxZkQMX2CvWwR3B1aKQRBapJeheXa0kKx84pLpPnNtgWav/b/9mDwA==","shasum":"f65652646900f64ac9d7f072129a30f55e0a4235","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1-alpha.4.tgz","fileCount":411,"unpackedSize":886518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+q34CRA9TVsSAnZWagAAqLoP/jYA327EJtpieykQkbtS\nW+dsuEG2oqEbVL5O7ZfVOeD3YuFO+Dn3EjdT+1v/SylY9LIkbfGfdmWBNaeo\n3igqQIRXD2AWjUH32GzUvjfJJiwbs66hhRBGgzif6E3qhFoO1Z8ROy15SeI5\n2iHcpqt7jamX6t7SA8rUh6bE6YoX5NVAEDrTeiinDrTZeSmymnXHQEXadlAF\nCMCBSnrlkNR5HNYqDXqmWk9NlfmCWGcjIZTf/62YqBDgZGA0TREeXvzi0tmw\nyp8uLzPiXpKuLbZUqGLTHxzm6KY06kh9ayw7PFCzpm4qyfaCsZFuVgr8EDHA\nE4mR/zz5O6sfY5Q0/AnCdVd1roo4WD9fkrGeYZ//oD3OvnfUlQO35yGHk94/\n3+dZvZe5VszBE3mU0/rxAftvkqukP32HmB0gNBEL88JpZ4QwtSE0VrkbWdFt\nzMbLjY6IvQrBp9mtcGzMkyBpMoarJc+gbpCuudDoXESst0u5lYGBCKnq5c5q\nZwmcnTe2mcC4k4XUzmd3OLyqgl2mhykRSwl+uUyEJ/vvnB2E8EH3VKcKktAf\nS20PGy6A019Z2csMCA9autlARkfSwiAy3u5jYOUXY8MB15tTE6YasteEnWNn\nXQGNxhcbcUylNpc5q6Hpth6xyhEXRq8At4fg/2o59eXpuVc6JLii6BjirsUd\nAoCH\r\n=ulXZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEvHs2wqIHlKfreIREgNgkTbq3YMaSqQhCYYd4MY6mzyAiEAibJIh37LYGaDqA2L175ztaGW+slScsLlCZlGAikRJSM="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1-alpha.4_1593486839557_0.19425447723767597"},"_hasShrinkwrap":false},"1.4.9":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.9","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.0-beta.16","messaging-api-line":"1.0.0-beta.20","messaging-api-messenger":"1.0.0-beta.18","messaging-api-slack":"1.0.0-beta.16","messaging-api-telegram":"1.0.0-beta.16","messaging-api-viber":"1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"55cfa9aca87f9971e9f298991e4bda888864686b","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.9","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-LwTwDIWbTo0v9j9/IE4fzkea44y57yB+NOXhmCrmRYG/CoaBJ4UeOguSY8W0wHFntxgBxK3zcxWwqLlbYdsQ6g==","shasum":"6303eaf43d1df7ba7591dc007573ce4c7535dba2","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.9.tgz","fileCount":387,"unpackedSize":845101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBBeBCRA9TVsSAnZWagAAwC0P/3XHo/Dyfke5Q/vVbhlV\na1CuOjbUNWa1PgMMEI8Or27xT/aolh/N6s2UbeGVu72J3IRFXhLJ/I4LgD4z\nHNRt7hlt3dXZH56EOM/ovTwei9PORXxIHZcBiJvd3N7GdZXV3cCYzuRwYTfe\naArwqEvbj+L1Xo6exoE2JLo2qHH2MMK73ycxMLQLUxEOxz36aXdRg54uLZhw\nmLD1i2fusdmE4PzrNPz8D9lZql9slaRSFo+Cgc20RaYj3oUGpjW9ePlmrU7R\nk4lSUehig9nfiMmRFYlaZxa71f0LgaHvs8SB3rUgjQSKYU3gAmWgIrOs6HgO\ngJbtISo4VOk9D2KDykpXoRRARoqoOZmnfoGNfc/Qb3AxybmTI8nXG6a3qteU\nW+3Q+fzzVSeFSoKgapf5GExGFlRexH8jYON9l4UndptTcLhWgDCBHUc1twj7\nln17m5RWiNKux8+RPm4yyaxKiPnqPrOXtTPrxaYclUWBrklPXTAsqx3jLzgY\nSdwfmbpcqdLethVtPEIL4IrS9peShKcSla1kSO/yTi2gpdWeqm1ijdVwx85R\njsYNWU7THnfqhfO1An+D04wNIDdqX/4GQ+sU+SqrNPkW30LgOcH9WPSX7m7E\nPZjfbRhamZB/hK07vbha36VAnv4zMCouTRi4yKSTBLpoBgq2DeI0/yDCJTE/\nnJTZ\r\n=zQeD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvTzOORkjvUaJiSQ246PhJOtzNHvmECXIRCoPUaHc6CAiBHusKKbRj4Q2vPPS5fzejLDfZ+xakT2Bx/TFUPYB1awQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.9_1594103680981_0.8539171733060336"},"_hasShrinkwrap":false},"1.5.1-alpha.5":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.1-alpha.5","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1-alpha.5","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.27","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","facebook-batch":"1.0.0-beta.32","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.0-beta.29","messaging-api-line":"1.0.0-beta.30","messaging-api-messenger":"1.0.0-beta.31","messaging-api-slack":"1.0.0-beta.29","messaging-api-telegram":"1.0.0-beta.29","messaging-api-viber":"1.0.0-beta.29","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"cd5bc7a933f5bb94af89250e2456cda6fb1088ba","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1-alpha.5","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-Hv2P+0sNLXOw5e1gLwJLShSv0xfDMpRBQONLXaGzip63HRBBQJPwniHzQL4jIzuLcDeTzqkAPUoLLBYHttyq5w==","shasum":"802164349473288c20c1cc7be6f0a1f0a46eea36","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1-alpha.5.tgz","fileCount":411,"unpackedSize":887875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBugyCRA9TVsSAnZWagAArdEQAI1W9XlsshGJ92OPD/xX\n+WG7WCVv/kTbLC7j9NLa5bcucI6S+5Ell0tyRMoXc4sD8c6Kndvk10cQwVwa\nbL0jrnPX82G6VHjivu6EeIgUpxUCoFj8UH/ZUgCDIBYWGestlh3xAYqvjnGu\n7QVR9lQHzjR4Mg337xRrcPTon9TG5zYQwShV2FCuPELqEDi+A3jfgYNh1eyi\n9dVxWc0BY322aJd8DrcHMK0guTaWAB38T3nGLNoJKYZyfjKHFk+pCXk2MPTm\nCBZVaIEL3kdRKsgcWxgZcQ6kviHCG/Gsvw9SP34qF9KtkK/zrxDMQhDZ17pg\nziSCTnrDMHdjKYwGT1SRVuJD+i5t4YPp7LnTq6ey4ZNR2SZmvLS/RN/UAqnH\n84pwGd4LJYdqXerShA7fL21HnNbQHcP1njhnKdaEtrtOsHMM7Otu1hhqmqyf\nyYHD+8JWYt83N3f/X+yl8L+8aZ2FSv3NuCfRLGkqFAO1o8QMxF3diLZtyqNn\nevcNfZHZo4gdKeyozZMXGkaWjd7zsjPIdiuq5m9mYtI5AXmnlrD/WJJ7DYwZ\nCLueaJrvok3ceE7dvGTKoefHLhrmi2UDGhfuslry+ShXgYP+ZQ0106zvgeck\nu3Kd02Vdd20RWrwn+yOcDueAH0Vq3wvKFadS4ZTphijr/OUUE14DJGEMKN9x\n6W2B\r\n=jeJ1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUGrNu0aEjz0w5Ao/VHUn6vC6VBw/lktDiq68axAALEAIgHJ1WF4atx+WregoweuyLAwoNqJi/r3OtYEGRRDRoUI8="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1-alpha.5_1594288177198_0.5386313777883769"},"_hasShrinkwrap":false},"1.5.1-alpha.7":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.1-alpha.7","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1-alpha.5","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.27","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","facebook-batch":"1.0.0-beta.32","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.0-beta.29","messaging-api-line":"1.0.0-beta.33","messaging-api-messenger":"1.0.0-beta.33","messaging-api-slack":"1.0.0-beta.33","messaging-api-telegram":"1.0.0-beta.33","messaging-api-viber":"1.0.0-beta.33","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"b2b1e3abfbaab2ea44457bbc0adf1db1f7d26979","readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1-alpha.7","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-q2YIPZPQ4Q5U6zO7iGJ3rwBdhkFBnhYQh3xXsk2RpH+xpSgD7zHu7wE6Tjg9pEqmIBiTYp0htOtQ364Z9P7/Ag==","shasum":"1f5843b61233a227a0e8db6082e6a7b8bc545862","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1-alpha.7.tgz","fileCount":411,"unpackedSize":887857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF+fOCRA9TVsSAnZWagAAaboP/0Wrqw4gQ1slXhvMoCmb\npEHntCN9LnKpnsvVCX9n6EIOKM3wn3Lt9obBye5SPUlKRWow1kWWjZuikymX\ncLQNRnV4RmMSZk8S1QdfYKAUedk0WF/uvUpaXgRCypnpDUKXsKeAFD1CvhMj\nqMinmmeHeQMp4TGImbhXale5d9Ae9bhGal6lQbBN2EzVpS3GFmomvZ3SiNA0\nHzcg/Sdmn8PtGDOgUpTZRQEC6vurKbGVr392VpIPCwKVhsbATDGSLVUQwZIf\n68zHVLM2S1q1qzwodrqsLGceH/8mmWaZfAFZr3QYv5V1sofZ8/Z91fkg3o5I\nu/3GsyEclePMnAE04sNRV/g9q51dGG2qc+5lDKlqjB40k6eOrJx2gvKEjg6h\nAzlKoGpASPck2r9XEueVdKW6VcrUQvslnW49LD3zqaQwLUSO4ihYoiXnj8D1\n50vSsLBXjoQqN1Bxsz6TOeBv8o4cOGK0L2VwP9Tfrvvw0oST+avFoQqVRCqj\nFRuiKv83MzaceKHsmC6+vyKm4siYZ4oPlBCrMh44X6cbI3WkcClQJfqFcU8w\nOI8gXNEGbU3eFW1HdfW1RK0j9M1dVdclf8tNzjV2mRX2BSKn0mpsfYWey05j\nE0UKafo8ekmIZQn34rcsU3s4ZzpPaYuJvo3lO014t+gSGfR7bmWhwgM2fX3e\nNeqf\r\n=nITd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWtPcxlMm+FqOBNgrCSmB81fc/PQxMaa/8p+te3cxfcAiEA9LNFFJkTfUHSAkGXrPvbiAeBUuOnIf7zW9mQsi4OfO8="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1-alpha.7_1595402189935_0.06626256811390707"},"_hasShrinkwrap":false},"1.4.10":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.4.10","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.4.0","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.16","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","figures":"^3.2.0","file-type":"^14.1.3","fromentries":"^1.2.0","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.0-beta.16","messaging-api-line":"1.0.0-beta.20","messaging-api-messenger":"1.0.0-beta.18","messaging-api-slack":"1.0.0-beta.16","messaging-api-telegram":"1.0.0-beta.16","messaging-api-viber":"1.0.0-beta.16","messenger-batch":"^0.3.1","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"5371c14ca75a11bb3aa09b73f08139a7873d91a6","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.4.10","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-LC/HVdK8+dZXeEh1/seBheOAfDPwDLYH/7yvc0vamw1BxP80vPPOIG+RWS1zWU7U1kT56k4cD1KpBNzfuoH9YQ==","shasum":"b76d0decf0cbef37b976b4e97a0660c19063ddb1","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.4.10.tgz","fileCount":387,"unpackedSize":845405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGsJFCRA9TVsSAnZWagAAP6sP/15+EtcU49JafpndPTQX\ncaS/kPOz0KPRO6kFSP9yzsjoecPKZJ8z8c8V9dBfq3UYKulQKydMeeTl8qwN\nUJP21DFOJ85U2lBnhy29HHOdUoHjTOPBPQxRiAwKvpeRyCCPMOg79IWp7O4y\nUqRWkd2GdGX5qa8hqLkmimMumit897boIkGUVRCi1y+FonUG99L77VzsMliZ\nGwIA2g3KQg0WIYmrXTJo41ATO3k+AdOQADiXtNMQG1S3lXs0HKkoJhJouoUI\nXj5+bzzLSS6j54qCP3C4UVFoI+jJi7P5jbckIDqyzRQSvsXyMHN6I0HF0ZuJ\n6KD8r1BENbrxXGWkN2V8sEN9P7qIlKBh1VAKzoiO+H/MnKZBOy15fwJ09871\nQvmEmkN+iA3Ox5gK5h+DiTP2IHF/WU4R9LGZqbmUDebKflrQaVXExhFIndsQ\n97RIf1qnBKftpI1t+BnD2SwhZU640nOGxaVfJXt1s2gNnEw9p3sIz2v+hzGk\n6zrs70ORepaWcEgebYyJVWiu7t5cIs6PKv/tGQRJXcW3JmdhFQmpFnZV7Ea0\nX7jlr9kLy3X3CMt29a0JwDr6p1e7ZUwDlt5t5MQDTOmD4UVajkc/RvDfOuTB\nZ5ZjIWsO9c9P65Emc949oUOOQe5desM9Hid6q2udY1AlP5i3kuaXEeuib6FQ\nShMb\r\n=a9RG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH2WMbTfYYJWem3mVIpRh25S/GK2cfqn1S6JZeQP8eVTAiBDG3/DzUGk9+fWQKI1fdI/vxbJ2GsGOValGuhhV2HqbQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"f46284628@gmail.com","name":"little.white"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.4.10_1595589189111_0.03437767403308212"},"_hasShrinkwrap":false},"1.5.1-alpha.8":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.1-alpha.8","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1-alpha.5","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.27","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","facebook-batch":"1.0.0-beta.32","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.0-beta.29","messaging-api-line":"1.0.0-beta.33","messaging-api-messenger":"1.0.0-beta.33","messaging-api-slack":"1.0.0-beta.33","messaging-api-telegram":"1.0.0-beta.33","messaging-api-viber":"1.0.0-beta.33","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.2.5","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"762fb634202673bf808abd0472bd8b0c547dcab4","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1-alpha.8","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-mBgVFo+Y2koXH7i2FpkyggCU+w/uunlSlE9gBawU7nKDDCQ03KL3bQZ9kw0bPm8UJibxMH0eT1zY0dGux+Xe5A==","shasum":"0246df9202c1dc17d050c14e1c749c78473ab7b1","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1-alpha.8.tgz","fileCount":423,"unpackedSize":894304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9Y75CRA9TVsSAnZWagAAIrEQAI7I7he9YhL4R0itQT/2\nq1ihjFdU2zRM3ClYhhK22bxZhxW4qda5M1lWXeNkDr83lrh90XH9a/9+Rvl9\n9wR6HEA6dU+KS2F8LEWjJKyN7Gw74viLXn8mK6NLU4Cz1iy/DNqkSjUYZ19n\nAUZEKjzdJmXZYR+8mnh/UHUFpzgnlwg5BRuAtEMPn8wTslE2F8ZsF1SenI/Y\nWD0XWW8jR/ZKrN+ZGsP5RegK6D/rVl3X9RXyrWFdwj47/ZYrFGKunnFMgbAY\nwWCrHVr6hysMwNONnMVpDufFDg/DSX8ht5+ATvQX9ET2kJyYand1d9L0MC5/\nUeXPmurCcZii3eSchmWljigLsZCEgBfLl1NtYc/wRZEDQC7KzMEIL8bxZnfU\nSxomf/mnkS1Jj4fII2r/pSy8zXp1syjAi4bcCFfFQlFGKwfv1qAOwWmCyRlW\n0rlDKGOz55U1LmZOXwSs7mVAL3EIi1bzsCLpTJeFPEHsLuev43ZQR6Z9hwtQ\npeJcvUAOep7R78BIUzzbj4j8TjNJPr/lMeREbUaFgsvSO5kTKxakMtDNsirw\n34Zwd6AvZ4XBOW4WxBDHXVhVfsd3hsEaFpXHkcCpobeKckwes3l/F2Os/pdx\nDU4ytbp74bGot/e0XB+39+hRjkMp0DxneGJRq+SIqzvuv58ECYEXjBK3MWfy\neLRD\r\n=DXYF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFJhG6DeowxRwDW//n+pyYd1POKZM7PH6VDTklX76IcAIgEA+u/C/p4e2d8HdT6asqcsQi0fm7SXhEtxze5N1ow6g="}]},"_npmUser":{"name":"link515","email":"wtflink515@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"},{"name":"little.white","email":"f46284628@gmail.com"},{"name":"link515","email":"wtflink515@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1-alpha.8_1609928441176_0.6458737434436277"},"_hasShrinkwrap":false},"1.5.1-alpha.9":{"name":"bottender","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"version":"1.5.1-alpha.9","main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1-alpha.5","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.19.2","axios-error":"^1.0.0-beta.27","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","facebook-batch":"1.0.0-beta.32","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.0-beta.29","messaging-api-line":"1.0.0-beta.33","messaging-api-messenger":"1.0.0-beta.33","messaging-api-slack":"1.0.0-beta.33","messaging-api-telegram":"1.0.0-beta.33","messaging-api-viber":"1.0.0-beta.33","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.4.1","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"c9c15468b8ec80bc492d739cbc2933bdbd18af7e","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1-alpha.9","_nodeVersion":"12.14.0","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","dist":{"integrity":"sha512-4IKWbwTpUocbF9lp4nABCGCeco8sYOVj7A3gOCuZ1xEGvg0l+nFpqcn8yk+ibItRaBEJux8C0n7Su81l/qcSww==","shasum":"f54d6d238f4829199c6c00a3ac5484d8bf1926c4","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1-alpha.9.tgz","fileCount":423,"unpackedSize":894304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVEnGCRA9TVsSAnZWagAAqsUP/illrEggypXS9H1fCCr9\nclRE0anKQkRwgE+i4IyLQO/yMx6CB26gC30XLekj77HZD5W4T7n94KD/bozW\nwSLMpJ0lB7D7YsIlxpF5aBQ1lc3dLbfYQqTBnJq1l+tqCFnMvUB8sltSqoc5\nvhI4NoWbEju40INZtme3gtZuweNYBQSCcW1yS/1kT+G0klGN8PH/oyhQZBp+\ngoVOl22Y3KMkvlsKW3DK+TRQ5jkJBkN+9relV7IIahE3jiwP95RjY7wmOqrH\nuwIC6t8jBAnXNnBQC45DO4575JBD6IKwWNYSBGo47F+g3fs8pAjvP0pw4rqe\nIAxXJgFjtAY6kR39aayys28MuDU9sfrpLQxbimS6T3mohEOY+3m04CByMvnV\ngIcdhGxs37Ys5tCrBXwPl3VPpq/yxwJAZyhIyLegDJf4dxnNJpMXcFvE/tBS\nQknIzs1S9H7jTIifpPtyaJtu3a7qT4sh5JLZiPBDj6icnNY2aXg7BwVMRYpB\nsPu2+iDCv3R0NfZ1yt/fRf0cc7IwQ81DyN5MhbqyB3E2qjug4ceIiTTe3L3M\nGFKZ7mOQtIz3naU/Q85rrIXji+bM9rCVOwr4P/x6LNjAYXDhaBqVOMXk/1Vi\nfm6VZoBHasfcIzTeA+ZHTV3N0q50kLiBVX9vmD7coGfXvTjv06F6VwOYCVQG\ndLr7\r\n=uiQO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzy16mVV2Bptk8TzqlKjBjPm8lQIJklKw7p76P8UOO0AIgD3/D4P1Fypf/JuNqxAxrDkSk85p1+HUZ3bdqUn0+O6s="}]},"_npmUser":{"name":"link515","email":"wtflink515@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"},{"name":"little.white","email":"f46284628@gmail.com"},{"name":"link515","email":"wtflink515@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1-alpha.9_1616136645733_0.17038781885154197"},"_hasShrinkwrap":false},"1.5.1":{"name":"bottender","version":"1.5.1","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.5","@types/express":"^4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/inquirer":"^6.5.0","@types/invariant":"^2.2.31","@types/ioredis":"^4.14.8","@types/jfs":"^0.2.3","@types/jsonfile":"^5.0.0","@types/lodash":"^4.14.149","@types/lru-cache":"^5.1.0","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.0","@types/shortid":"^0.0.29","@types/update-notifier":"^4.1.0","@types/warning":"^3.0.0","arg":"^4.1.3","axios":"^0.21.4","axios-error":"^1.0.0-beta.27","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.5.1","date-fns":"^2.10.0","debug":"^4.1.1","deep-object-diff":"^1.1.0","delay":"^4.3.0","dotenv":"^8.2.0","express":"^4.17.1","facebook-batch":"1.0.6","figures":"^3.2.0","file-type":"^14.1.3","fs-extra":"^8.1.0","hasha":"^5.2.0","import-fresh":"^3.2.1","inquirer":"^7.0.5","invariant":"^2.2.4","ioredis":"^4.16.0","jfs":"^0.3.0","jsonfile":"^6.0.0","lodash":"^4.17.15","lru-cache":"^5.1.1","messaging-api-common":"1.0.4","messaging-api-line":"1.0.6","messaging-api-messenger":"1.0.6","messaging-api-slack":"1.0.6","messaging-api-telegram":"1.0.6","messaging-api-viber":"1.0.6","minimist":"^1.2.0","mongodb":"^3.5.4","ngrok":"^3.4.1","nodemon":"^2.0.2","object.fromentries":"^2.0.2","p-map":"^3.0.0","p-props":"^3.1.0","pascal-case":"^3.1.1","path-to-regexp":"^6.1.0","pkg-dir":"^4.2.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.15","type-fest":"^0.13.1","update-notifier":"^4.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"7c400c77d829552d99073b6fb29b2318d2927248","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.1","_nodeVersion":"14.17.5","_npmVersion":"lerna/3.22.1/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-g7TqeMwSzFNA5dZMfE33Cq9EK8ps428Zpf7b/1fgN+EzQvQXVGTk5dP6swcFFLFWx5hWGknnr8vnRK0diZVvpQ==","shasum":"50d249e59b0cbf667bbb426c0f1d130777ebe34c","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.1.tgz","fileCount":423,"unpackedSize":894985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP5PKCRA9TVsSAnZWagAA5OgP/R9H0LiNnyS+8BC0agXZ\nYAQsoIGd+Cjii5aW/6P5cVUcysfP4EOcaVoYeKwgjbQkmVfzgmU8icAo8sns\nT7ZmMTVt8IvZ7ggVKZOASNFFGv0F/8COj4kbg9dmqcdm+EBcj+UO77sTWHEU\nQeqrY3wgqZQUIHY/9QoXa6wVxUN9tHaQ2LgSCGEUteInZKg/Fuy5p7EOy7Ie\ngx+UpH1gXn5BrpYGerrROw+IwwcrcLin28mjMcI0QhCe9Eg2Ogh4+D8H/s7v\nknzqmuhyZ4WU6K3DfeGv7TN/7ZzlnfNZc5Djg92vEEaY+9XPHnH1Kyx2E8ba\nrhxzixMK8oRJukb6S4f4JZe2VkcmtCCthZ+Wy6E/SActa8P227QhUUOquLIy\n2VJGOdBjT7a5zHQ4wnsZ+8ZhhvtC6dKikNwrZvRPCObNxJ3YZ753fA8JWikq\nxX0jaG+/C+r8wBZrIwo5/YqQDQLKEdLtwRg4KPPw7dxnduLFnXlqr9eSpE6s\nXK+uAh1leadkhTspTpfhn4N7xHNlslTShE3x+RF6S3uDb56xlqy+wWMIF2E+\n84+LBBJ50przursTsL314IkfMkEFfF9E4y0UubJ6VNCBS1eRCVEqOWsYFKyN\n5gXJcdgXFxFKPPV5GiX/j7OLyTZBCB0pTcZIouxEvD6ZtK12I2UQTgHiC2qP\nRBX/\r\n=GNzh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJhQVzO1jXFO25UMcBYAtuCF41R8d/hRg/IOkRqMgytwIgfxBbg6K9U0idUHZGMmR7/K9yamlxAiy7NVlxW0XUeIE="}]},"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"},{"name":"little.white","email":"f46284628@gmail.com"},{"name":"link515","email":"wtflink515@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.1_1631556554600_0.20114228677726143"},"_hasShrinkwrap":false},"1.5.2":{"name":"bottender","version":"1.5.2","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.7","@types/express":"4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/invariant":"^2.2.35","@types/ioredis":"^4.27.5","@types/jfs":"^0.2.4","@types/jsonfile":"^6.0.1","@types/lodash":"^4.14.175","@types/lru-cache":"^5.1.1","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.1","@types/shortid":"^0.0.29","@types/update-notifier":"^5.1.0","@types/warning":"^3.0.0","arg":"^5.0.1","axios":"^0.21.4","axios-error":"^1.0.4","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.6.0","date-fns":"^2.24.0","debug":"^4.3.2","deep-object-diff":"^1.1.0","delay":"^5.0.0","dotenv":"^10.0.0","enquirer":"^2.3.6","express":"^4.17.1","facebook-batch":"1.0.6","figures":"^3.2.0","file-type":"^16.5.3","fs-extra":"^8.1.0","hasha":"^5.2.2","import-fresh":"^3.3.0","invariant":"^2.2.4","ioredis":"^4.27.9","jfs":"^0.3.0","jsonfile":"^6.1.0","lodash":"^4.17.21","lru-cache":"^6.0.0","messaging-api-common":"1.0.4","messaging-api-line":"1.0.6","messaging-api-messenger":"1.0.6","messaging-api-slack":"1.0.6","messaging-api-telegram":"1.0.6","messaging-api-viber":"1.0.6","minimist":"^1.2.5","mongodb":"^3.7.0","ngrok":"^3.4.1","nodemon":"^2.0.13","object.fromentries":"^2.0.4","p-map":"^4.0.0","p-props":"^4.0.0","pascal-case":"^3.1.2","path-to-regexp":"^6.2.0","pkg-dir":"^5.0.0","prompt-confirm":"^2.0.4","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.16","type-fest":"^1.4.0","update-notifier":"^5.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"0b3842a8633e1ad06a504f6fde1deaf6d7d01600","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.2","_nodeVersion":"14.17.5","_npmVersion":"lerna/3.22.1/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-rlAEqXHtQ62KF6le8fqasOVN2Raf1icG+pe004FTn8YP9QG0HkkasUnd3y8sZsDACjgpn+Nuj7WsjCKd9s/gIQ==","shasum":"bd83edec2f7214ef20c6610b91f8da85e9a5fabf","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.2.tgz","fileCount":423,"unpackedSize":895229,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFAQPWF+IA3jLrOJ5EFYg3EbqMlnJSrulenOQXQ8dTxzAiEAs8ozx8ZfGZZ+TuBSFF7bHac1i9ioQbi6JGDZ5nuWCVQ="}]},"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"},{"name":"little.white","email":"f46284628@gmail.com"},{"name":"link515","email":"wtflink515@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.2_1633016171451_0.22809352509794545"},"_hasShrinkwrap":false},"1.5.3":{"name":"bottender","version":"1.5.3","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.7","@types/express":"4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/invariant":"^2.2.35","@types/ioredis":"^4.27.5","@types/jfs":"^0.2.4","@types/jsonfile":"^6.0.1","@types/lodash":"^4.14.175","@types/lru-cache":"^5.1.1","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.1","@types/shortid":"^0.0.29","@types/update-notifier":"^5.1.0","@types/warning":"^3.0.0","arg":"^5.0.1","axios":"^0.21.4","axios-error":"^1.0.4","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.6.0","date-fns":"^2.24.0","debug":"^4.3.2","deep-object-diff":"^1.1.0","delay":"^5.0.0","dotenv":"^10.0.0","enquirer":"^2.3.6","express":"^4.17.1","facebook-batch":"1.0.6","figures":"^3.2.0","file-type":"^16.5.3","fs-extra":"^8.1.0","hasha":"^5.2.2","import-fresh":"^3.3.0","invariant":"^2.2.4","ioredis":"^4.27.9","jfs":"^0.3.0","jsonfile":"^6.1.0","lodash":"^4.17.21","lru-cache":"^6.0.0","messaging-api-common":"1.0.4","messaging-api-line":"1.0.6","messaging-api-messenger":"1.0.6","messaging-api-slack":"1.0.6","messaging-api-telegram":"1.0.6","messaging-api-viber":"1.0.6","minimist":"^1.2.5","mongodb":"^3.7.0","ngrok":"^3.4.1","nodemon":"^2.0.13","object.fromentries":"^2.0.4","p-map":"^4.0.0","p-props":"^4.0.0","pascal-case":"^3.1.2","path-to-regexp":"^6.2.0","pkg-dir":"^5.0.0","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.16","type-fest":"^1.4.0","update-notifier":"^5.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"fb8e63f4c8a588d0a2ad14ead8a4d55ae652a722","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.3","_nodeVersion":"14.17.5","_npmVersion":"lerna/3.22.1/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-TdaIKxFecGNIFaj7sOcf2W/fcDsGZ1O0gxc9vimHx4d+yWHKEwEUqsfakCkhTDrMI7fJ0KJWyVkUNXR55XRZjQ==","shasum":"ff244ec16b700128770088e479bf555533ee8276","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.3.tgz","fileCount":423,"unpackedSize":895197,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAdnLtgC4QYBjdVzDHaWqgIJ4yY7JHzFJFjZIZ93jDhgIgS/g4Gk8ABkZiVAlS30cqdlMXgRnSd3y1BXxFoIi2PCw="}]},"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"},{"name":"little.white","email":"f46284628@gmail.com"},{"name":"link515","email":"wtflink515@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.3_1633432977289_0.9671048107258466"},"_hasShrinkwrap":false},"1.5.4":{"name":"bottender","version":"1.5.4","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.7","@types/express":"4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/invariant":"^2.2.35","@types/ioredis":"^4.27.5","@types/jfs":"^0.2.4","@types/jsonfile":"^6.0.1","@types/lodash":"^4.14.175","@types/lru-cache":"^5.1.1","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.1","@types/shortid":"^0.0.29","@types/update-notifier":"^5.1.0","@types/warning":"^3.0.0","arg":"^5.0.1","axios":"^0.21.4","axios-error":"^1.0.4","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.6.0","date-fns":"^2.24.0","debug":"^4.3.2","deep-object-diff":"^1.1.0","delay":"^5.0.0","dotenv":"^10.0.0","enquirer":"^2.3.6","express":"^4.17.1","facebook-batch":"1.0.6","figures":"^3.2.0","file-type":"^16.5.3","fs-extra":"^8.1.0","hasha":"^5.2.2","import-fresh":"^3.3.0","invariant":"^2.2.4","ioredis":"^4.27.9","jfs":"^0.3.0","jsonfile":"^6.1.0","lodash":"^4.17.21","lru-cache":"^6.0.0","messaging-api-common":"1.0.4","messaging-api-line":"1.0.6","messaging-api-messenger":"1.0.6","messaging-api-slack":"1.0.6","messaging-api-telegram":"1.0.6","messaging-api-viber":"1.0.6","minimist":"^1.2.5","mongodb":"^3.7.0","ngrok":"^3.4.1","nodemon":"^2.0.13","object.fromentries":"^2.0.4","p-map":"^4.0.0","p-props":"^4.0.0","pascal-case":"^3.1.2","path-to-regexp":"^6.2.0","pkg-dir":"^5.0.0","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.16","type-fest":"^1.4.0","update-notifier":"^5.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"56615d90d5ec62f12e29fa4594e4e1043b827cbc","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.4","_nodeVersion":"14.17.5","_npmVersion":"lerna/3.22.1/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-IS0ux9kP89M5kXgjWfKNdu82X/Jq4sDjn9LvTPK45BKDneK8K0ol6ZFNKIKx71+OQgYqjhVNnNpMxVz07qS3xQ==","shasum":"bffe90fed38d5653a1b96e174b776e1c19acde9a","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.4.tgz","fileCount":423,"unpackedSize":900171,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlX8tyS8+CQAWV9imwq8SX7wf83uDWu2SdsXLmHhDKeAiEAoUmUCJ/ljNu0WYbfFRvEdi9TuXmcXtGl6ot+b24/N/g="}]},"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"etrexkuo","email":"et284vu065k3@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"},{"name":"link515","email":"wtflink515@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"little.white","email":"f46284628@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.4_1633924170966_0.7538972892788909"},"_hasShrinkwrap":false},"1.5.5":{"name":"bottender","version":"1.5.5","description":"A framework for building conversational user interfaces.","license":"MIT","homepage":"https://bottender.js.org/","repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"main":"dist/index.js","browser":"dist/browser.js","bin":{"bottender":"bin/cli.js","btd":"bin/cli.js"},"types":"dist/index.d.ts","dependencies":{"@bottender/express":"^1.5.1","@bottender/jfs":"^0.4.1","@hapi/joi":"^15.1.1","@slack/rtm-api":"^5.0.3","@types/debug":"^4.1.7","@types/express":"4.17.2","@types/fs-extra":"^8.1.0","@types/hapi__joi":"^15.0.4","@types/invariant":"^2.2.35","@types/ioredis":"^4.27.5","@types/jsonfile":"^6.0.1","@types/lodash":"^4.14.175","@types/lru-cache":"^5.1.1","@types/mongodb":"^3.3.16","@types/object.fromentries":"^2.0.1","@types/shortid":"^0.0.29","@types/update-notifier":"^5.1.0","@types/warning":"^3.0.0","arg":"^5.0.1","axios":"^0.21.4","axios-error":"^1.0.4","body-parser":"^1.19.0","chalk":"~2.4.2","cli-table3":"^0.6.0","date-fns":"^2.24.0","debug":"^4.3.2","deep-object-diff":"^1.1.0","delay":"^5.0.0","dotenv":"^10.0.0","enquirer":"^2.3.6","express":"^4.17.1","facebook-batch":"1.0.6","figures":"^3.2.0","file-type":"^16.5.3","fs-extra":"^8.1.0","hasha":"^5.2.2","import-fresh":"^3.3.0","invariant":"^2.2.4","ioredis":"^4.27.9","jsonfile":"^6.1.0","lodash":"^4.17.21","lru-cache":"^6.0.0","messaging-api-common":"1.0.4","messaging-api-line":"1.0.6","messaging-api-messenger":"1.0.6","messaging-api-slack":"1.0.6","messaging-api-telegram":"1.0.6","messaging-api-viber":"1.0.6","minimist":"^1.2.5","mongodb":"^3.7.0","ngrok":"^3.4.1","nodemon":"^2.0.13","object.fromentries":"^2.0.4","p-map":"^4.0.0","p-props":"^4.0.0","pascal-case":"^3.1.2","path-to-regexp":"^6.2.0","pkg-dir":"^5.0.0","read-chunk":"^3.2.0","readline":"^1.3.0","recursive-readdir":"^2.2.2","shortid":"^2.2.16","type-fest":"^1.4.0","update-notifier":"^5.1.0","warning":"^4.0.3"},"keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"engines":{"node":">=8"},"gitHead":"8d627b7a8d5e5cb904f58dd8d9bae4c1dfc6a046","bugs":{"url":"https://github.com/Yoctol/bottender/issues"},"_id":"bottender@1.5.5","_nodeVersion":"16.11.1","_npmVersion":"lerna/3.22.1/node@v16.11.1+x64 (darwin)","dist":{"integrity":"sha512-suthULDnEVHKFaaOcAqN7zxuTe/jbs51QUNW1arWCrX0pvNNVb6TEtHCJ0ZtmqSL/HzBayZ+GpbRiLURAweLmQ==","shasum":"798defbc93e4e98ba24be9795ec67f6d8be209c9","tarball":"https://registry.npmjs.org/bottender/-/bottender-1.5.5.tgz","fileCount":423,"unpackedSize":900192,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBvbTXM8kSt9wO1lw9UowCLfZQm53CopQ1l9F5g8igmkAiEA3kd3pq7uQAKPlYQ5wR3Auf2ly47rD3FRwYXi0TC6Fmw="}]},"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"etrexkuo","email":"et284vu065k3@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"},{"name":"link515","email":"wtflink515@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"little.white","email":"f46284628@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bottender_1.5.5_1636537686947_0.7015606758989479"},"_hasShrinkwrap":false}},"readme":"# Bottender\n\n[![npm](https://img.shields.io/npm/v/bottender.svg)](https://www.npmjs.com/package/bottender)\n[![Build Status](https://github.com/Yoctol/bottender/workflows/Node.js%20CI/badge.svg)](https://github.com/Yoctol/bottender/actions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https://codecov.io/gh/Yoctol/bottender/branch/master/graph/badge.svg)](https://codecov.io/gh/Yoctol/bottender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yoctol/bottender#contributing)\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/apNsWBz)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n[![Follow @bottenderjs](https://img.shields.io/twitter/follow/bottenderjs.svg?label=Follow%20@bottenderjs)](https://twitter.com/intent/follow?screen_name=bottenderjs)\n\n![](https://user-images.githubusercontent.com/3382565/76295244-3c80c800-62ef-11ea-88dc-a6039b3918c2.png)\n\n> The readme below is the documentation for the v1 (stable) version of Bottender. To view the documentation:\n>\n> - for the latest Bottender version (v1.x), visit https://bottender.js.org/docs/en/getting-started\n> - for the legacy Bottender version (v0.15), visit https://bottender.js.org/docs/en/0.15.17/getting-started\n\n- **Declarative** - Bottender takes care of the complexity of conversational UIs for you. Design actions for each event and state in your application, and Bottender will run accordingly. This approach makes your code more predictable and easier to debug.\n\n- **Native User Experience** - Bottender lets you create apps on every channel and never compromise on your users’ experience. You can apply progressive enhancement or graceful degradation strategy on your building blocks.\n\n- **Easy Setup** - With Bottender, you only need a few configurations to make your bot work with channels, automatic server listening, webhook setup, signature verification and so much more.\n\n- **Ready for Production** - There are thousands of bots powered by Bottender. It has been optimized for real world use cases, automatic batching request and dozens of other compelling features.\n\nBottender is built on top of\n[Messaging APIs](https://github.com/Yoctol/messaging-apis).\n\n## Installation\n\nYou can create a new Bottender app using the CLI tools:\n\n```sh\nnpx create-bottender-app my-app\n```\n\nInstallation may fail on Windows during compilation of the native dependencies with `node-gyp`. To solve this problem, you can install [`windows-build-tools`](https://github.com/felixrieseberg/windows-build-tools#readme) or check [`node-gyp` documentation](https://github.com/nodejs/node-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https://bottender.js.org?new).\n\nCheck out the [Getting Started](https://bottender.js.org/docs/en/getting-started) page for a quick overview.\n\n## Community\n\n[![join chat](https://img.shields.io/badge/discord-join%20chat-green.svg)](https://discord.gg/unmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https://discordapp.com/) Server. [Join now!](https://discord.gg/unmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https://github.com/Yoctol/bottender/tree/master/examples) folder.\nHere is the first one to get you started:\n\n```js\n// index.js\nconst { router, text } = require('bottender/router');\n\nasync function SayHi(context) {\n  await context.sendText('Hi!');\n}\n\nasync function Unknown(context) {\n  await context.sendText('Sorry, I don’t know what you say.');\n}\n\nmodule.export = function App(context) {\n  return router([\n    text('hi', SayHi),\n    text('*', Unknown),\n  ]);\n};\n```\n\n## Notable Features\n\n### Messenger\n\n- Messenger Profile Sync\n- Attachment Upload\n- Handover Protocol\n- Persona\n- Built-in NLP\n- Multiple Pages\n\n### LINE\n\n- Reply, Push, Multicast, Narrowcast\n- Imagemap\n- Rich menu\n- Room, Group Chat\n- Beacon\n- Icon Switch\n- Line Notify\n- LIFF (LINE Front-end Framework)\n\n### Slack\n\n- Channel Chat\n- Interactive Message\n- Slash Command\n\n### Telegram\n\n- Webhook, Long Polling\n- Updating, Deleting Messages\n- Keyboard\n- Group Chat\n- Inline Query\n- Message Live Location\n- Payment\n\n### Viber\n\n- Subscribed, Unsubscribed Event\n- Delivered, Seen Event\n\n## Ecosystem\n\n- [bottender-compose](https://github.com/Yoctol/bottender-compose) - An utility library for Bottender and higher-order handlers.\n\n## Contributing\n\nPull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:\n\nFork, then clone the repo:\n\n```sh\ngit clone git@github.com:your-username/bottender.git\n```\n\nInstall the dependencies:\n\n```sh\ncd bottender\nyarn\n```\n\nMake sure the tests pass (including ESLint, TypeScript checks and Jest tests):\n\n```sh\nyarn test\n```\n\nMake your changes and tests, and make sure the tests pass.\n\n### Contribute using the online one-click setup\n\nYou can use Gitpod(a free online VS Code-like) for contributing. With a single click it will launch a workspace and automatically:\n\n- clone the bottender repo.\n- install the dependencies.\n- run `yarn run start`.\n\nSo that you can start straight away.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yoctol/bottender)\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender)\n","maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"etrexkuo","email":"et284vu065k3@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"},{"name":"link515","email":"wtflink515@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"little.white","email":"f46284628@gmail.com"}],"time":{"modified":"2022-06-13T05:00:07.980Z","created":"2017-08-04T15:06:18.794Z","0.0.1":"2017-08-04T15:06:18.794Z","0.13.13":"2017-10-19T02:45:28.582Z","0.14.0-beta.1":"2017-10-20T08:34:35.265Z","0.14.0-beta.2":"2017-10-24T05:13:06.288Z","0.14.0-beta.3":"2017-10-26T11:05:02.276Z","0.14.0-rc.1":"2017-10-27T09:56:04.521Z","0.14.0-rc.2":"2017-11-01T06:33:15.028Z","0.14.0-beta.2.1":"2017-11-01T06:47:20.280Z","0.13.14":"2017-11-01T06:53:25.551Z","0.14.0":"2017-11-02T02:43:33.967Z","0.14.1":"2017-11-07T11:00:18.995Z","0.14.2":"2017-11-07T11:05:04.824Z","0.14.3":"2017-11-14T03:28:43.775Z","0.14.4":"2017-11-15T06:44:02.744Z","0.14.5":"2017-11-21T10:11:19.072Z","0.14.6":"2017-11-27T10:16:30.768Z","0.14.7":"2017-11-30T08:25:36.176Z","0.14.8":"2017-12-05T09:27:20.063Z","0.14.9":"2017-12-06T10:13:27.852Z","0.14.10":"2017-12-14T10:41:59.603Z","0.14.11":"2017-12-20T08:12:00.446Z","0.14.12":"2017-12-25T09:42:34.283Z","0.14.13":"2018-01-03T11:07:27.895Z","0.14.14":"2018-01-08T04:45:06.761Z","0.14.15":"2018-01-12T10:38:56.286Z","0.14.16":"2018-01-16T08:06:17.314Z","0.14.17":"2018-01-17T11:41:33.518Z","0.14.18":"2018-01-18T10:58:24.205Z","0.14.19":"2018-01-25T06:41:00.353Z","0.14.20":"2018-01-30T11:58:57.203Z","0.14.21":"2018-02-05T15:40:19.329Z","0.14.22":"2018-02-12T08:45:59.687Z","0.14.23":"2018-02-27T04:13:22.382Z","0.14.24":"2018-03-10T16:20:54.807Z","0.14.25":"2018-03-13T04:44:27.993Z","0.14.26":"2018-03-17T07:01:17.549Z","0.14.27":"2018-03-19T10:17:45.830Z","0.14.28":"2018-03-19T16:56:08.576Z","0.14.29":"2018-03-21T10:50:17.601Z","0.14.30":"2018-03-22T07:57:49.934Z","0.14.31":"2018-03-26T07:25:39.594Z","0.15.0-alpha.1":"2018-03-27T08:16:49.958Z","0.15.0-alpha.2":"2018-04-02T07:48:22.693Z","0.15.0-beta.1":"2018-04-03T08:12:58.078Z","0.15.0-beta.2":"2018-04-03T09:53:39.213Z","0.15.0-beta.3":"2018-04-09T12:46:45.669Z","0.14.32":"2018-04-12T08:57:20.018Z","0.15.0-beta.4":"2018-04-12T09:21:18.446Z","0.15.0-beta.5":"2018-04-13T11:01:51.786Z","0.14.33":"2018-04-13T11:38:10.717Z","0.15.0-beta.6":"2018-04-17T07:52:52.885Z","0.14.34":"2018-04-23T07:34:11.668Z","0.15.0-beta.7":"2018-04-25T15:06:06.833Z","0.15.0-beta.8":"2018-04-28T15:12:39.956Z","0.15.0-beta.9":"2018-05-10T02:02:53.294Z","0.15.0-beta.10":"2018-05-16T15:17:26.056Z","0.15.0-beta.11":"2018-06-01T08:54:48.773Z","0.15.0-beta.12":"2018-06-08T06:06:06.854Z","0.15.0-beta.13":"2018-06-19T03:22:07.857Z","0.15.0-rc.1":"2018-06-22T06:49:54.466Z","0.15.0-rc.2":"2018-07-02T04:15:28.502Z","0.15.0-rc.3":"2018-07-09T11:06:04.577Z","0.15.0-rc.4":"2018-07-13T06:27:58.820Z","0.15.0":"2018-07-18T02:48:43.847Z","0.15.1":"2018-07-20T06:23:14.459Z","0.15.2":"2018-08-16T03:07:53.687Z","0.15.3":"2018-08-21T08:17:57.420Z","0.15.4":"2018-08-22T06:16:08.424Z","0.15.5":"2018-08-27T09:24:43.287Z","0.15.6":"2018-08-28T11:22:27.061Z","0.15.7":"2018-09-19T06:33:42.444Z","0.15.8":"2018-10-18T06:41:37.389Z","0.15.9":"2018-10-26T11:17:35.288Z","0.15.10":"2018-11-02T15:03:39.387Z","0.15.11":"2018-11-07T11:32:42.674Z","0.15.12":"2018-11-09T06:11:41.033Z","0.15.13":"2018-11-12T03:15:44.029Z","0.15.14":"2018-11-14T00:37:06.900Z","0.15.15":"2018-12-06T12:59:34.231Z","0.16.0-alpha.0":"2018-12-26T10:27:55.966Z","0.16.0-alpha.1":"2018-12-28T03:34:12.048Z","0.15.16":"2019-01-29T05:56:51.105Z","0.16.0-alpha.2":"2019-01-30T12:41:37.611Z","0.16.0-alpha.3":"2019-02-01T09:41:35.795Z","0.15.17":"2019-02-01T09:48:16.327Z","0.16.0-alpha.4":"2019-02-14T11:04:53.012Z","0.16.0-alpha.5":"2019-02-15T08:51:14.817Z","0.16.0-alpha.6":"2019-02-22T09:26:40.560Z","0.16.0-alpha.7":"2019-03-06T11:26:22.460Z","0.16.0-alpha.8":"2019-03-07T01:49:01.531Z","0.16.0-alpha.9":"2019-03-07T04:37:51.711Z","0.16.0-alpha.10":"2019-03-07T11:37:31.048Z","0.16.0-alpha.11":"2019-03-08T04:31:36.969Z","0.16.0-rc.1":"2019-08-27T07:56:45.759Z","1.0.0-alpha.1":"2019-09-03T07:50:51.481Z","1.0.0-alpha.2":"2019-09-04T07:08:57.474Z","1.0.0-alpha.3":"2019-09-05T08:01:37.230Z","1.0.0-alpha.4":"2019-09-05T08:27:50.201Z","1.0.0-alpha.5":"2019-09-05T09:37:00.795Z","1.0.0-alpha.6":"2019-09-06T07:44:57.615Z","1.0.0-alpha.7":"2019-09-26T08:34:08.058Z","1.0.0-alpha.9":"2019-09-26T12:37:16.732Z","1.0.0-alpha.11":"2019-09-27T15:50:46.586Z","1.0.0-alpha.12":"2019-10-04T08:13:26.259Z","1.0.0-alpha.13":"2019-10-05T10:29:39.803Z","1.0.0-alpha.14":"2019-10-09T08:37:53.149Z","1.0.0-alpha.15":"2019-10-11T09:04:27.734Z","1.0.0-alpha.16":"2019-10-11T15:01:39.458Z","1.0.0-alpha.17":"2019-10-12T10:04:50.601Z","1.0.0-alpha.18":"2019-10-12T12:25:27.778Z","1.0.0-alpha.19":"2019-10-13T12:36:44.847Z","1.0.0-alpha.20":"2019-10-14T15:43:23.060Z","1.0.0-alpha.21":"2019-10-16T08:17:57.871Z","1.0.0-alpha.22":"2019-10-21T03:54:42.830Z","1.0.0-alpha.23":"2019-10-24T16:55:33.710Z","1.0.0-alpha.24":"2019-10-30T14:57:16.857Z","1.0.0-alpha.25":"2019-11-07T15:30:52.409Z","0.16.0-rc.2":"2019-11-08T04:09:37.039Z","1.0.0-alpha.26":"2019-11-11T11:54:02.684Z","1.0.0-alpha.27":"2019-11-12T03:21:25.032Z","1.0.0-alpha.28":"2019-11-12T09:00:06.626Z","1.0.0-beta.0":"2019-11-14T09:28:05.534Z","1.0.0-beta.1":"2019-11-14T09:48:05.273Z","1.0.0-beta.2":"2019-11-19T06:07:52.320Z","1.0.0-beta.3":"2019-11-22T14:17:15.649Z","1.0.0-beta.4":"2019-12-01T15:27:05.398Z","1.0.0-beta.5":"2019-12-03T17:15:42.043Z","1.0.0-beta.6":"2019-12-05T03:58:02.473Z","1.0.0":"2019-12-05T08:10:56.067Z","1.0.1":"2019-12-10T07:53:37.115Z","1.0.2":"2019-12-12T06:16:28.625Z","1.0.3":"2019-12-12T08:40:11.580Z","1.0.4":"2019-12-17T10:37:55.903Z","1.1.0-alpha.0":"2019-12-18T03:18:37.220Z","1.0.5":"2019-12-19T15:28:50.640Z","1.0.6":"2019-12-24T03:28:04.626Z","1.1.0-beta.0":"2019-12-25T03:24:41.048Z","1.1.0-beta.1":"2019-12-26T11:30:30.086Z","1.1.0":"2019-12-27T07:32:16.495Z","1.2.0-alpha.0":"2020-01-02T03:27:18.370Z","1.1.1":"2020-01-02T09:39:05.377Z","1.2.0-alpha.1":"2020-01-02T09:42:31.252Z","1.0.7":"2020-01-03T03:52:00.251Z","1.1.2":"2020-01-03T04:04:28.997Z","1.2.0-alpha.2":"2020-01-03T04:10:28.215Z","1.2.0-alpha.3":"2020-01-06T05:25:37.845Z","1.0.8":"2020-01-08T08:05:56.371Z","1.1.3":"2020-01-08T08:10:39.715Z","1.2.0-alpha.4":"2020-01-08T08:14:16.886Z","1.2.0-alpha.5":"2020-01-10T08:08:52.285Z","1.2.0-alpha.6":"2020-01-13T07:24:04.608Z","1.2.0-alpha.7":"2020-01-14T09:11:08.270Z","1.2.0-alpha.8":"2020-01-20T02:53:28.819Z","1.2.0":"2020-01-22T06:31:58.395Z","1.3.0-alpha.0":"2020-02-11T07:05:57.124Z","1.2.1":"2020-02-13T09:51:06.359Z","1.3.0-alpha.1":"2020-02-13T10:16:10.775Z","1.3.0-alpha.2":"2020-02-20T09:05:21.654Z","1.2.2":"2020-02-24T10:01:53.694Z","1.3.0-alpha.3":"2020-02-26T04:48:31.745Z","1.3.0-alpha.4":"2020-02-26T07:16:15.590Z","1.2.3":"2020-03-04T04:40:46.019Z","1.3.0-rc.0":"2020-03-05T03:18:42.107Z","1.3.0":"2020-03-06T03:22:46.097Z","1.3.2":"2020-03-30T11:00:47.783Z","1.3.3":"2020-04-01T07:46:49.697Z","1.3.4":"2020-04-04T10:09:10.221Z","1.3.5":"2020-04-04T10:53:36.246Z","1.4.0-alpha.0":"2020-04-04T15:14:51.033Z","1.4.0-beta.0":"2020-04-06T08:19:56.136Z","1.4.0-beta.1":"2020-04-06T16:13:59.218Z","0.15.18":"2020-04-08T06:28:22.486Z","1.4.0-beta.2":"2020-04-09T07:04:51.971Z","1.4.0-beta.3":"2020-04-10T03:50:21.246Z","1.4.0-beta.4":"2020-04-10T08:11:43.918Z","1.4.0-beta.5":"2020-04-13T15:31:41.581Z","1.4.0-rc.0":"2020-04-15T05:15:05.459Z","1.4.0-rc.1":"2020-04-15T06:21:52.812Z","1.4.0":"2020-04-15T10:41:57.821Z","1.4.1":"2020-04-17T07:24:19.043Z","1.4.2":"2020-04-24T06:56:54.705Z","1.4.3":"2020-04-29T02:40:00.695Z","1.4.4":"2020-05-06T05:36:16.707Z","1.5.0-alpha.0":"2020-05-07T07:06:30.025Z","1.5.0-alpha.1":"2020-05-11T04:27:35.754Z","1.4.5":"2020-05-11T06:47:08.123Z","1.5.0-alpha.2":"2020-05-15T03:04:06.945Z","1.5.0-y.0":"2020-05-15T09:58:13.554Z","1.5.0-alpha.3":"2020-05-15T10:08:56.768Z","1.5.0-alpha.4":"2020-05-18T09:43:53.529Z","1.5.0-alpha.5":"2020-05-20T11:36:59.441Z","1.4.6":"2020-05-22T15:06:19.037Z","1.5.0-alpha.6":"2020-05-25T07:57:31.252Z","1.5.0-alpha.7":"2020-05-27T04:59:58.553Z","1.5.0-alpha.8":"2020-05-27T10:27:09.980Z","1.5.0-alpha.10":"2020-05-28T07:16:02.737Z","1.5.0-alpha.11":"2020-05-28T10:58:31.452Z","1.5.0-alpha.14":"2020-06-16T10:08:23.077Z","1.5.1-alpha.0":"2020-06-17T05:21:13.143Z","1.5.1-alpha.1":"2020-06-17T07:42:40.264Z","1.4.7":"2020-06-23T03:48:07.047Z","1.5.1-alpha.3":"2020-06-29T03:41:53.032Z","1.4.8":"2020-06-30T02:59:22.734Z","1.5.1-alpha.4":"2020-06-30T03:13:59.728Z","1.4.9":"2020-07-07T06:34:41.162Z","1.5.1-alpha.5":"2020-07-09T09:49:37.719Z","1.5.1-alpha.7":"2020-07-22T07:16:30.189Z","1.4.10":"2020-07-24T11:13:09.313Z","1.5.1-alpha.8":"2021-01-06T10:20:41.512Z","1.5.1-alpha.9":"2021-03-19T06:50:45.990Z","1.5.1":"2021-09-13T18:09:14.878Z","1.5.2":"2021-09-30T15:36:11.738Z","1.5.3":"2021-10-05T11:22:57.855Z","1.5.4":"2021-10-11T03:49:31.133Z","1.5.5":"2021-11-10T09:48:07.207Z"},"license":"MIT","readmeFilename":"README.md","description":"A framework for building conversational user interfaces.","homepage":"https://bottender.js.org/","keywords":["bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber"],"repository":{"type":"git","url":"git+https://github.com/Yoctol/bottender.git"},"users":{"chentsulin":true},"bugs":{"url":"https://github.com/Yoctol/bottender/issues"}}