Skip to content

BotRSRust QQ 机器人框架

聚焦 QQ 网关事件与核心机器人 REST 动作的异步 Rust 框架

什么是 BotRS?

BotRS 是围绕 QQ 网关和核心机器人 OpenAPI 能力构建的异步 Rust QQ 机器人框架。它提供多数机器人在实时事件路径中需要的组件:网关连接管理、类型化事件载荷、共享 REST 客户端、token 处理和 intent 选择。

核心类型包括:

  • Client 负责启动、网关 session 和事件分发。
  • EventHandler 是你为网关事件实现的 trait。
  • Session 类型为每个回调提供事件数据、bot 信息和共享 BotApi
  • BotApi 负责发送消息,以及 examples 中使用的核心 REST 动作。
  • Token 保存凭据,并支持从环境变量加载。
  • Intents 控制 QQ 会发送哪些网关类别。

当前能力

BotRS 处理核心的“事件到动作”链路:

  • 接收 guild/channel/member 变化、频道消息、私信、群与 C2C 消息、表情回应、互动、审核、管理、音频和论坛等类型化网关事件。
  • session.reply("text")send_markdown_messagesend_embed_messagesend_ark_messagesend_keyboard_message 回复常见内容;需要精确控制字段时再构造对应 params。
  • 通过 BotApi 发送频道、群、C2C 和私信消息。
  • 上传群/C2C 媒体,再作为 media 消息发送。
  • 使用频道资源、身份组、禁言、子频道权限、公告、日程、API 权限申请、表情回应、精华消息和音频控制相关 API。

快速示例

rust
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(())
}

开始使用

  1. 安装 - 将 BotRS 加入 Rust 项目。
  2. 快速开始 - 运行最小机器人。
  3. 客户端与事件处理器 - 了解事件循环。
  4. 消息 - 发送文本、媒体、Markdown、Ark、embed 和 keyboard payload。
  5. API 客户端 - 在 session 中或独立使用 BotApi

链接

基于 MIT 许可证发布