[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10677":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":18,"lastSyncTime":39,"discoverSource":40},10677,"bottender","Yoctol\u002Fbottender","Yoctol","⚡️ A framework for building conversational user interfaces.","https:\u002F\u002Fbottender.js.org",null,"TypeScript",4277,336,88,52,0,1,2,4,3,62.98,"MIT License",false,"master",true,[27,28,29,30,31,32,33,34,35],"bot","chatbot","framework","line","messaging","messenger","slack","telegram","viber","2026-06-12 04:00:51","# Bottender\n\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fbottender.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fbottender)\n[![Build Status](https:\u002F\u002Fgithub.com\u002FYoctol\u002Fbottender\u002Fworkflows\u002FNode.js%20CI\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FYoctol\u002Fbottender\u002Factions?query=workflow%3ANode.js%20CI+branch%3Amaster)\n[![coverage](https:\u002F\u002Fcodecov.io\u002Fgh\u002FYoctol\u002Fbottender\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FYoctol\u002Fbottender)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![PRs Welcome](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs-welcome-brightgreen.svg)](https:\u002F\u002Fgithub.com\u002FYoctol\u002Fbottender#contributing)\n[![join chat](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdiscord-join%20chat-green.svg)](https:\u002F\u002Fdiscord.gg\u002FapNsWBz)\n[![Gitpod Ready-to-Code](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitpod-Ready--to--Code-blue?logo=gitpod)](https:\u002F\u002Fgitpod.io\u002F#https:\u002F\u002Fgithub.com\u002FYoctol\u002Fbottender)\n[![Follow @bottenderjs](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fbottenderjs.svg?label=Follow%20@bottenderjs)](https:\u002F\u002Ftwitter.com\u002Fintent\u002Ffollow?screen_name=bottenderjs)\n\n![](https:\u002F\u002Fuser-images.githubusercontent.com\u002F3382565\u002F76295244-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:\u002F\u002Fbottender.js.org\u002Fdocs\u002F\n> - for the legacy Bottender version (v0.15), visit https:\u002F\u002Fbottender.js.org\u002Fdocs\u002F0.15.17\u002F\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:\u002F\u002Fgithub.com\u002Fbottenderjs\u002Fmessaging-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:\u002F\u002Fgithub.com\u002Ffelixrieseberg\u002Fwindows-build-tools#readme) or check [`node-gyp` documentation](https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fnode-gyp#on-windows).\n\n## Documentation\n\nYou can find the Bottender documentation [on the website](https:\u002F\u002Fbottender.js.org?new).\n\nCheck out the [Getting Started](https:\u002F\u002Fbottender.js.org\u002Fdocs) page for a quick overview.\n\n## Community\n\n[![join chat](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdiscord-join%20chat-green.svg)](https:\u002F\u002Fdiscord.gg\u002FunmFzmR)\n\nYou can discuss anything about Bottender or chatbot development in our [Discord](https:\u002F\u002Fdiscordapp.com\u002F) Server. [Join now!](https:\u002F\u002Fdiscord.gg\u002FunmFzmR)\n\n## Examples\n\nWe have a bunch of examples in the\n[examples](https:\u002F\u002Fgithub.com\u002FYoctol\u002Fbottender\u002Ftree\u002Fmaster\u002Fexamples) folder.\nHere is the first one to get you started:\n\n```js\n\u002F\u002F index.js\nconst { router, text } = require('bottender\u002Frouter');\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([text('hi', SayHi), text('*', Unknown)]);\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:\u002F\u002Fgithub.com\u002Fbottenderjs\u002Fbottender-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\u002Fbottender.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:\u002F\u002Fgitpod.io\u002Fbutton\u002Fopen-in-gitpod.svg)](https:\u002F\u002Fgitpod.io\u002F#https:\u002F\u002Fgithub.com\u002FYoctol\u002Fbottender)\n\n## License\n\nMIT © [Yoctol](https:\u002F\u002Fgithub.com\u002FYoctol\u002Fbottender)\n","Bottender 是一个用于构建对话用户界面的框架。它支持声明式编程，简化了复杂交互逻辑的设计与实现，使得代码更加可预测且易于调试。该框架能够提供原生用户体验，允许开发者在多个渠道上创建应用而不牺牲用户体验，并支持渐进增强或优雅降级策略。Bottender 易于设置，只需少量配置即可完成与多个消息平台（如LINE、Messenger、Slack等）的集成。此外，它还具备自动请求批处理等功能，适合于生产环境部署。适用于需要快速开发跨平台聊天机器人的场景。","2026-06-11 03:29:39","top_topic"]