20 releases (7 breaking)

new 0.10.1 Oct 21, 2024
0.9.4 Sep 14, 2024
0.9.2 Jun 22, 2024

#1715 in Web programming

Download history 43/week @ 2024-07-02 95/week @ 2024-07-23 58/week @ 2024-07-30 133/week @ 2024-09-03 374/week @ 2024-09-10 76/week @ 2024-09-17 12/week @ 2024-09-24 12/week @ 2024-10-01 142/week @ 2024-10-15

167 downloads per month

GPL-3.0-or-later

145KB
4K SLoC

Hubbub

Rust library for creating discord self-bots (very early in development)

Current features

  • Allows passing a model
  • Connects to gateway with token
  • Supports reconnecting to gateway (semi tested, should work)
  • Supports making calls to discords http api (any version)
  • Supports sending and receiving gateway events
  • Most of discord's many, MANY, data structures have been translated into serde-compatible structs
  • Major structs have convenience functions for doing common tasks (eg: creating a message)

Using the library

  1. Add the library to your project using cargo add hubbub
  2. Import hubbub::prelude::*:
  3. Create your model
struct App {
    // ...
}
  1. Create the client
#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let mut client = Client::new(
        App { /* ... */ },
        /* Event handler */
    ).await?;

    client.token(/* Token */).await?;
    client.login().await?;
    client.run().await?;
}
  1. Create the event handler
async fn main() {
    // ...
    
    /* Event handler */
    Box::from(
        |ctx: Ctx, ws: Ws, model: Model<App>, msg: DiscordMessage| async move {
            /* do work here */
        }
    )
    
    // ...
}
  1. Success, hopefully!

Any questions?

  • Look at the examples
  • Look at the Context and DiscordMessage structs
  • Look at prelude

Dependencies

~8–20MB
~279K SLoC