English | 简体中文
Kovi
Kovi is a plugin framework for OneBot V11. If you want to develop OneBot V11 bots using Rust, Kovi is a great choice.
🎯 The goal is to create the simplest OneBot framework in Rust! Simplifying complex Rust syntax? Kovi has done its best.
🤔 Let me count, the quick start in the documentation only requires 9 lines of code to create the simplest plugin.
🥁 There’s also a CLI tool to make project development easier.
🛍️ The plugin shop provides an excellent Kovi shopping experience, allowing you to easily access packages from plugin developers 📦.
😍 The project documentation is very simple and easy to understand. Follow it and you’ll be good to go.
↓ Documentation is here
↓ The shop is here
Note ⚠️: Currently, the project only supports OneBot V11's forward WebSocket protocol.
Getting Started
It's recommended to use kovi-cli to manage your Kovi bot project.
- Create a basic Rust project and add the framework.
- You will see that a bot instance has been generated in src/main.rs.
use build_bot;
On your first run, during build_bot, you'll be prompted to enter some information to create the kovi.conf.toml file, which is required for Kovi to run.
✔ What is the type of the host of the OneBot server? · IPv4
✔ What is the IP of the OneBot server? · 127.0.0.1
(Default: 127.0.0.1)
✔ What is the port of the OneBot server? · 8081
(Default: 8081)
✔ What is the access_token of the OneBot server? (Optional) ·
(Default: empty)
✔ What is the ID of the main administrator? (Not used yet)
(Optional)
✔ Do you want to view more optional options? · No
Plugin Development
Creating a Plugin
Follow the steps below.
kovi-cli and cargo will take care of everything for you.
You will see that a new plugins/hi directory has been created. This is also the recommended way to develop plugins, as it’s always good to manage them in a directory.
Writing a Plugin
Edit your newly created plugin in plugins/hi/src/lib.rs.
Here's a minimal example:
// Import the plugin builder structure
use PluginBuilder as plugin;
// Build the plugin
async
The main function is written in lib.rs because it will be exported later to be mounted to the bot instance.
Plugins generally don't need a main.rs.
Mounting the Plugin
Alternatively, you can use cargo directly; both are the same. This will add a local dependency in the root project’s Cargo.toml.
use build_bot;
More Plugin Examples
Bot Taking Initiative to Send Messages
use PluginBuilder as plugin;
async
The main() function runs only once when plugin starts.
The closure passed to plugin::on_msg() runs every time a message is received.
Kovi has encapsulated all available OneBot standard APIs. To extend the API, you can use RuntimeBot's send_api() to send APIs yourself. You can check out the API extension plugins available for your needs at Kovi Plugin Shop.
You can find more documentation in the Kovi Doc.