#discord #bot #self

hubbub

Discord self-bot library for rust

16 releases (6 breaking)

new 0.9.2 Jun 22, 2024
0.9.1 Jun 22, 2024
0.8.0 Jun 19, 2024
0.7.0 Jun 18, 2024
0.2.4 Jun 16, 2024

#366 in Network programming

Download history 114/week @ 2024-06-10 1289/week @ 2024-06-17

1,403 downloads per month

GPL-3.0-or-later

99KB
3K 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

~9–22MB
~315K SLoC