#roblox-api #roblox #api-request #api-bindings

roboat

A high performance interface for the Roblox API

60 releases (35 breaking)

0.35.0 Jul 17, 2024
0.34.2 Nov 25, 2023
0.33.1 May 14, 2024
0.33.0 Jun 9, 2023
0.0.1 Mar 31, 2023

#44 in Game dev

Download history 10/week @ 2024-09-11 6/week @ 2024-09-18 8/week @ 2024-09-25 6/week @ 2024-10-02

3,173 downloads per month
Used in classics-ranking-bot

MIT license

245KB
3.5K SLoC

Crates.io Documentation dependency status

roboat

roboat logo

A high performance interface for the Roblox API.

This library is designed to be high-performance capable, meaning that it supports proxies and is capable of making requests in parallel.

Note that this crate is still in early development and updates may be breaking until the first major version is released.

Documentation

Extensive documentation is used throughout this crate. All public methods in this crate are documented and have at least one corresponding example.

Documentation can be found here.

Coverage

Setup

You can add the latest version of roboat to your project by running:

cargo add roboat

Quick Start Examples

Example 1 - Purchase Free UGC Limited

This code snippet allows you to purchase a free ugc limited.

It can be modified to purchase a non-free ugc limited by changing the price.

// Replace this value with your own roblosecurity token.
const ROBLOSECURITY: &str = "your-roblosecurity-token";
// Replace this value with the item id of the item you want to purchase.
const ITEM_ID: u64 = 13119979433;
// Replace this value if you want to purchase a non-free item.
const PRICE: u64 = 0;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = roboat::ClientBuilder::new()
        .roblosecurity(ROBLOSECURITY.to_string())
        .build();

    let collectible_item_id = client.collectible_item_id(ITEM_ID).await?;

    let collectible_product_id = client
        .collectible_product_id(collectible_item_id.clone())
        .await?;

    let collectible_creator_id = client
        .collectible_creator_id(collectible_item_id.clone())
        .await?;

    client
        .purchase_non_tradable_limited(
            collectible_item_id,
            collectible_product_id,
            collectible_creator_id,
            PRICE,
        )
        .await?;

    println!("Purchased item {} for {} robux!", ITEM_ID, PRICE);

    Ok(())
}

Example 2 - Fetch User Info

This code snippet allows you to get your current robux, id, username, and display name.

// Replace this value with your own roblosecurity token.
const ROBLOSECURITY: &str = "your-roblosecurity-token";

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = roboat::ClientBuilder::new()
        .roblosecurity(ROBLOSECURITY.to_string())
        .build();

    let robux = client.robux().await?;
    let user_id = client.user_id().await?;
    let username = client.username().await?;
    let display_name = client.display_name().await?;

    println!("Robux: {}", robux);
    println!("User ID: {}", user_id);
    println!("Username: {}", username);
    println!("Display Name: {}", display_name);

    Ok(())
}

Example 3 - Fetch Price of Tradable Limited

This code snippet allows you to view the lowest price of a tradable limited item by fetching a list of reseller listings.

// Replace this value with your own roblosecurity token.
const ROBLOSECURITY: &str = "your-roblosecurity-token";

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = roboat::ClientBuilder::new()
        .roblosecurity(ROBLOSECURITY.to_string())
        .build();

    let item_id = 1365767;
    let limit = roboat::Limit::Ten;
    let cursor = None;

    let (resellers, _) = client.resellers(item_id, limit, cursor).await?;

    println!("Lowest Price for Valkyrie Helm: {}", resellers[0].price);

    Ok(())
}

Example 4 - Fetch Item Details

This code snippet allows you to get the details of an item.

use roboat::catalog::avatar_catalog::{ItemArgs, ItemType};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = roboat::ClientBuilder::new().build();

    let item = ItemArgs {
        item_type: ItemType::Asset,
        id: 1365767,
    };

    let details = &client.item_details(vec![item]).await?[0];

    let name = &details.name;
    let description = &details.description;
    let creator_name = &details.creator_name;
    let price = details.price.unwrap_or(0);

    println!("Name: {}", name);
    println!("Description: {}", description);
    println!("Creator Name: {}", creator_name);
    println!("Price: {}", price);

    Ok(())
}

More Examples

More examples can be found in the examples directory.

Related Crates

This crate is a sister crate of roli, an API wrapper for Rolimons.com.

Requesting

Don't see an endpoint you need covered? Request it in an issue or join the Discord Server and mention it to us in the #api-coverage-requests channel! Since Roblox has a lot of endpoints, we find it easier to add endpoints as they are needed/requested.

Contributing

Pull requests and issues are welcome!

Please refer to CONVENTIONS.md for information on conventions used in this crate.

Additional resources used to help make this crate are available in RESOURCES.md.

License

MIT License

Dependencies

~7–19MB
~272K SLoC