NoneBot
✨ 跨平台 Python 异步机器人框架 ✨
nonebot2 is a free, open source ai interaction & interfaces project written in Python and released under MIT. It has 7,719 GitHub stars, 662 forks and 39 open issues, and was last pushed 2 days ago. On this registry it ranks #41 of 76 tracked projects in AI Interaction & Interfaces, with 5 head-to-head comparisons available.
NoneBot2 is a cross-platform, asynchronous chatbot framework written in Python, built for developers who want one codebase to serve bots across many chat platforms instead of rewriting integration glue for each one.
NoneBot2 is a modern, extensible Python framework for chat bots, built on Python's type annotations and asynchronous features. The project lives in the Python ecosystem and is distributed under the MIT licence; its registry topics include bot, chatbot, cqhttp, onebot, mirai-bot, lark-bot, dingtalk-robot and fastapi. The framework separates bot logic from platform plumbing through an adapter layer, so an application is written once while the adapter handles the protocol of the chat service the bot is talking to. Protocol support is extensible: adapters ship both inside the project and as separate repositories, and the framework allows custom communication protocols to be defined.
The concrete problem it solves is per-platform bot code. Without an abstraction layer, a developer targeting QQ, Telegram and Feishu would maintain three unrelated integrations with different authentication, event models and message formats. NoneBot2 replaces that duplication with one application surface and swappable adapters — the OneBot adapter alone covers QQ, Telegram, WeChat official accounts and KOOK, and the Satori adapter covers OneBot, Telegram, Feishu, WeChat official accounts and Koishi. The framework also removes the boilerplate around async event handling, which is where the "asynchronous first" design matters: the README states that even very large message volumes are handled comfortably.
Start from the project documentation at nonebot.dev, which includes a quickstart guide and a note on what to do when the documentation will not open. Development is scaffolded through NB-CLI, which generates the project skeleton so business logic can be written directly.
The same space contains Mirai, a QQ protocol library reachable through the dedicated Mirai adapter, OneBot as a protocol standard with its own adapter, and Koishi, which NoneBot2 can reach through the Satori adapter. NoneBot2 differs from those by being the Python asynchronous framework around the protocols rather than a single protocol implementation or a JavaScript runtime. Adapter repositories keep that protocol work separable, so a bot keeps working when one platform is swapped.
Choose NoneBot2 when the bot logic is written in Python and needs to survive across multiple chat platforms, since the adapter boundary is where the project's value sits. Self-hosters should expect to run and maintain the chosen adapter themselves, and should check adapter status first: Villa is offline because the official Bot protocol was retired, Gewechat is no longer maintained or available, and DingTalk's adapter is looking for a maintainer. The documented caveat that QQ official interfaces change frequently is the clearest ongoing risk, and community-contributed adapters carry no compatibility promise.
readme truncated — read the full docs on github
nonebot2 is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.
跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python
nonebot2 is primarily written in Python. Its source is publicly available at https://github.com/nonebot/nonebot2, and it has 7,719 GitHub stars.