# serenity-builder
[](https://github.com/m1sk9/serenity-builder/actions/workflows/ci.yaml)
[](https://github.com/m1sk9/serenity-builder/actions/workflows/release.yaml)
[](https://github.com/m1sk9/serenity-builder/blob/main/LICENSE)
A utility library to make Serenity's builder easier to use.
- [Docs](https://docs.rs/serenity-builder)
```toml
[dependencies]
serenity-builder = "0.3"
```
# Overview
Use Serenity's builder with `typed_builder` for intuitive handling.
```rs
// serenity
let embed = CreateEmbed::default()
.title("This is a test title.")
.description("This is test description!")
.author(
serenity::builder::CreateEmbedAuthor::new(MOCK_TEXT)
.url(MOCK_URL)
.icon_url(MOCK_URL),
);
// serenity-builder
let embed = SerenityEmbed::builder()
.title("This is a test title.")
.description("This is test description!")
.author_name("m1sk9")
.author_url("https://m1sk9.dev/avatar.png")
.build();
```
# Features
| `embed` | Enable embed builder | Yes |
| `message` | Enable message builder | Yes |
Basic builders (`embed`, `message`) are default features. You can use them immediately by adding the crate with `cargo add` or adding it to your `Cargo.toml`.
If you only want to enable specific features, install with `--no-default-features` and `--features`:
```sh
cargo add serenity-builder --no-default-features --features embed
```
# Roadmap
| 1 | Embed Builder | ✅ |
| 2 | Message Builder | ⚠️ |
| 3 | Model Builder | ❌ |
| 4 | Button Builder | ❌ |
| 5 | Invite Builder | ❌ |
| 6 | Thread Builder | ❌ |
| 7 | Channel Builder | ❌ |
| 8 | Sticker Builder | ❌ |
| 9 | Command Builder | ❌ |
| 10 | Webhook Builder | ❌ |
| 11 | ForumTag Builder | ❌ |
| 12 | ActionRow Builder | ❌ |
| 13 | ForumPost Builder | ❌ |
| 14 | Attachments Builder | ❌ |
| 15 | SelectMenu Builder | ❌ |
| 16 | Event Builder | ❌ |
...and more!
# License
This project is licensed under the [Apache License 2.0](./LICENSE).