Skip to content

Introduction

BotRS is an asynchronous runtime framework for building QQ Guild bots in Rust. It provides the essential building blocks needed for creating robust, high-performance bot applications that can handle real-time messaging, guild management, and event processing.

What is BotRS?

BotRS is designed around the principles of type safety, performance, and ease of use. It serves as a comprehensive wrapper around the QQ Guild Bot API, providing:

  • Type-Safe API Bindings: Complete Rust type definitions for all API endpoints
  • Async Runtime Integration: Built on Tokio for handling concurrent operations
  • Event-Driven Architecture: Clean abstractions for responding to guild events
  • Rich Message Support: Send text, embeds, files, and interactive content
  • WebSocket Gateway: Real-time event processing with automatic connection management

Core Architecture

At its core, BotRS consists of several key components:

Client

The Client is the main entry point for your bot application. It manages the WebSocket connection to QQ's servers, handles authentication, and dispatches events to your event handler.

Event Handler

The EventHandler trait defines how your bot responds to various events such as messages, member joins, channel updates, and more. You implement this trait to define your bot's behavior.

API Client

The BotApi provides direct access to QQ Guild's REST API endpoints, allowing you to send messages, manage channels, handle permissions, and perform other administrative tasks.

Gateway

The WebSocket gateway manages the real-time connection to QQ's servers, handling heartbeats, reconnection logic, and event dispatching automatically.

Key Features

Type Safety

Rust's type system prevents entire classes of runtime errors common in dynamically typed languages:

rust
// Compile-time validation of message parameters
let params = MessageParams::new_text("Hello, world!")
    .with_reply(message_id)
    .with_markdown(true);

// Type-safe event handling
async fn message_create(&self, ctx: Context, message: Message) {
    // message.content is Option<String> - explicit null handling
    if let Some(content) = &message.content {
        // Handle message content safely
    }
}

High Performance

Built on Tokio's async runtime, BotRS can handle thousands of concurrent operations:

  • Non-blocking I/O: All network operations are asynchronous
  • Connection Pooling: HTTP clients reuse connections efficiently
  • Memory Efficiency: Zero-copy deserialization where possible
  • Concurrent Event Processing: Handle multiple events simultaneously

Structured Parameters

BotRS v0.2.0 introduced a new structured parameter system that eliminates the confusion of multiple None parameters:

rust
// Old API (deprecated)
api.post_message(
    token, "channel_id", Some("Hello!"),
    None, None, None, None, None, None, None, None, None
).await?;

// New API (recommended)
let params = MessageParams::new_text("Hello!")
    .with_reply("message_id")
    .with_embed(embed);
api.post_message_with_params(token, "channel_id", params).await?;

Comparison with Other Solutions

vs Python botpy

BotRS maintains API compatibility with the official Python botpy library while adding:

  • Compile-time Safety: Catch errors before deployment
  • Better Performance: Native code execution and efficient memory usage
  • Structured Concurrency: Built-in async/await support
  • Zero-cost Abstractions: High-level APIs with minimal runtime overhead

vs Other Rust Discord Libraries

While there are excellent Discord libraries for Rust, BotRS is specifically designed for QQ Guild's unique API and features:

  • QQ Guild Specific: Native support for QQ's message types and features
  • Official API Coverage: Complete implementation of QQ Guild Bot API
  • Chinese Ecosystem: Built with Chinese developers and use cases in mind
  • Active Maintenance: Regular updates following QQ's API changes

Getting Started

Ready to build your first bot? Here's what you'll need:

  1. Rust Installation: BotRS requires Rust 1.70 or later
  2. QQ Guild Bot Credentials: App ID and Secret from QQ Guild Developer Portal
  3. Basic Async Knowledge: Familiarity with Rust's async/await syntax

The fastest way to get started is with our Quick Start Guide, which will have you running a basic bot in under 5 minutes.

Community and Ecosystem

BotRS is part of a growing ecosystem of Rust tools for building chat bots and automation:

  • Active Development: Regular updates and new features
  • Community Driven: Open source with contributions welcome
  • Production Ready: Used in production by multiple organizations
  • Comprehensive Documentation: Detailed guides and API reference

Design Philosophy

BotRS follows several key design principles:

Ergonomics First

The API should be intuitive and easy to use, even for developers new to Rust or bot development.

Safety Without Sacrifice

Type safety and memory safety should not come at the cost of performance or expressiveness.

Async by Default

All I/O operations are asynchronous to maximize throughput and responsiveness.

Backward Compatibility

API changes follow semantic versioning, with clear migration paths for breaking changes.

Next Steps

The journey to building powerful QQ Guild bots starts here. Let's get building!

Released under the MIT License.