🛡️
类型化事件载荷
网关 dispatch 会解析成消息、频道、子频道、成员、表情回应、互动、音频、管理和论坛等 Rust 模型。
BotRS 是围绕 QQ 网关和核心机器人 OpenAPI 能力构建的异步 Rust QQ 机器人框架。它提供多数机器人在实时事件路径中需要的组件:网关连接管理、类型化事件载荷、共享 REST 客户端、token 处理和 intent 选择。
核心类型包括:
Client 负责启动、网关 session 和事件分发。EventHandler 是你为网关事件实现的 trait。BotApi。BotApi 负责发送消息,以及 examples 中使用的核心 REST 动作。Token 保存凭据,并支持从环境变量加载。Intents 控制 QQ 会发送哪些网关类别。BotRS 处理核心的“事件到动作”链路:
session.reply("text")、send_markdown_message、send_embed_message、send_ark_message、send_keyboard_message 回复常见内容;需要精确控制字段时再构造对应 params。BotApi 发送频道、群、C2C 和私信消息。use botrs::{ChannelReplySession, Client, EventHandler, Intents, ReadySession, Token};
struct MyBot;
#[async_trait::async_trait]
impl EventHandler for MyBot {
async fn ready(&self, session: ReadySession) {
println!("机器人已就绪:{}", session.event().user.username);
}
async fn message_create(&self, mut session: ChannelReplySession) {
let message = session.message().clone();
if message.author.bot {
return;
}
if message.content.trim() == "!ping" {
let _ = session.reply("pong").await;
}
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let token = Token::from_env()?;
let intents = Intents::new().with_public_guild_messages();
let mut client = Client::new(token, intents, MyBot, true)?;
client.start().await?;
Ok(())
}BotApi。