Skip to content

BotRSRust QQ 机器人框架

基于 QQ 频道机器人 API 的类型安全、高性能、易于使用的 Rust 框架

什么是 BotRS?

BotRS 是为 Rust 编程语言设计的异步框架,专门用于构建 QQ 频道机器人。它提供了创建交互式机器人应用程序所需的基本构建块,这些应用程序可以处理消息、管理频道,并实时响应各种事件。

从高层次来看,BotRS 提供了几个主要组件:

  • 异步运行时集成:基于 Tokio 构建,可处理数千个并发连接
  • 类型安全的 API 绑定:为所有 QQ 频道机器人 API 端点提供完整的 Rust 类型定义
  • 事件驱动架构:用于响应频道事件的清洁事件处理器系统
  • 丰富的消息支持:发送文本、嵌入内容、文件和交互式内容
  • WebSocket 网关:实时事件处理,自动连接管理

BotRS 在您项目中的作用

在构建 QQ 频道机器人时,您需要一个能够处理实时消息传递、API 交互和事件处理复杂性的框架。BotRS 作为基础,让您专注于机器人的逻辑,而不是底层基础设施。

该框架处理:

  • 连接管理:自动 WebSocket 重连和心跳处理
  • 速率限制:内置请求节流以遵守 API 限制
  • 类型安全:编译时保证防止运行时错误
  • 异步处理:非阻塞事件处理以获得最大性能
  • 错误处理:带有上下文和恢复选项的全面错误类型

快速示例

这是一个响应消息的简单机器人:

rust
use botrs::{Client, Context, EventHandler, Intents, Message, Ready, Token};

struct MyBot;

#[async_trait::async_trait]
impl EventHandler for MyBot {
    async fn ready(&self, _ctx: Context, ready: Ready) {
        println!("机器人已就绪!登录为:{}", ready.user.username);
    }

    async fn message_create(&self, ctx: Context, message: Message) {
        if let Some(content) = &message.content {
            if content == "!ping" {
                let _ = message.reply(&ctx.api, &ctx.token, "Pong!").await;
            }
        }
    }
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let token = Token::new("你的应用ID", "你的密钥");
    let intents = Intents::default().with_public_guild_messages();
    let mut client = Client::new(token, intents, MyBot, true)?;

    client.start().await?;
    Ok(())
}

开始使用

准备用 BotRS 构建您的第一个 QQ 频道机器人了吗?请遵循我们的全面指南:

  1. 安装 - 将 BotRS 添加到您的 Rust 项目
  2. 快速开始 - 在几分钟内创建您的第一个机器人
  3. 配置 - 设置您的机器人凭据和选项
  4. 示例 - 探索工作代码示例

架构亮点

与 Python botpy 的兼容性

BotRS 保持与官方 Python botpy 库的 API 兼容性,使熟悉 Python 生态系统的开发者能够直接迁移。结构化参数系统镜像了 botpy 的方法,同时添加了 Rust 的类型安全优势。

性能特性

  • 内存高效:尽可能零拷贝反序列化
  • 并发处理:同时处理多个事件
  • 连接池:重用 HTTP 连接进行 API 调用
  • 最小分配:为高吞吐量场景进行细心的内存管理

类型安全保证

Rust 的类型系统防止动态语言中常见的整类错误:

  • 编译时验证:在部署前捕获 API 误用
  • 无空指针异常:Option 类型使空值处理显式化
  • 内存安全:无释放后使用或缓冲区溢出漏洞
  • 线程安全:编译时验证并发访问模式

社区和支持


BotRS 是在 MIT 许可证下发布的开源软件。欢迎贡献!

基于 MIT 许可证发布