finds.dev← search

// the find

koishijs/koishi

★ 6,239 · TypeScript · MIT · updated Aug 2026

Cross-platform chatbot framework made with love

Koishi is a TypeScript chatbot framework that lets you write one set of commands and plugins and run them across Discord, Telegram, QQ/OneBot, Feishu, Line, and Matrix through a shared adapter layer. It's aimed at developers who want to build a bot once and not re-architect it every time they add a platform, and especially at the Chinese-language bot-dev community where it originated and still has its deepest docs.

The adapter abstraction is real, not cosmetic — Bot/Session/Context are platform-agnostic so a command written once runs unmodified on half a dozen chat platforms. Plugin hot module reload means you save a file and the plugin reloads in the running bot, no process restart, which is unusual in this space and genuinely useful during development. Type support is thorough since the whole core is TypeScript-first, and the core packages ship with actual unit tests (command, middleware, session, database) rather than just example scripts. The plugin ecosystem is large (3000+) and the monorepo keeps official plugins cleanly separated by category.

The README here is Chinese-only with no English version in the repo itself, so English-speaking developers have to go straight to the external docs site to even evaluate the project — a real barrier for a framework trying to attract contributors outside its existing community. It's a framework you commit to: Context, middleware, and the schema system are a real abstraction layer, and migrating off Koishi later is not a small rewrite. Storage is plugin-based, so basic persistence doesn't work out of the box — you need to pick and configure a separate database plugin before anything stateful runs. With 3000+ community plugins there's no way to tell from the repo which ones are maintained versus abandoned; quality control is entirely on the user.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →