A rust library for interacting with multiple Spacebar-compatible Instances at once.
Go to file
Flori 1aa8bcc6d2 Components and Composites (#175)
As described in #165 , Gateway induced changes of entity structs do not
get propagated to other structs holding the "same" object which got
updated. This is bad because it means that structs still hold
potentially outdated info.

My proposed solution is to create components and composites. A component
is an object with information which is supposed to be the same in at
least 2 structs, such as a Channel object ("channels" field in Guild
struct and lone Channel object for example). These components should be
shared instead of cloned, to make sure that an update to this shared
structs fields is reflected everywhere the struct is being used.

We can do this by using `Arc<Mutex<T>>`. Mutex can be the
std::sync::Mutex, as long as locks on the components themselves are not
being held across .await points. ~~This draft is not yet finished, but~~
all instances of components in composite entity structs have been
replaced with their `Arc<Mutex<T>>` counterparts already.
2023-08-04 15:55:47 +02:00
.github/workflows Update code-ql action to v2 2023-07-17 19:35:16 +02:00
chorus-macros derive Updateable (#167) 2023-07-22 11:20:31 +02:00
examples Async Observer Trait (#147) 2023-07-11 19:20:27 +02:00
src Re-add derives to structs where possible 2023-08-04 15:33:46 +02:00
tests Fix deadlock on test_get_mutual_relationships 2023-08-04 11:42:28 +02:00
.gitignore Exclude all Target dirs 2023-08-01 21:21:00 +02:00
.rusty-hook.toml Change rusty-hook to be pre-commit 2023-05-28 11:43:03 +02:00
Cargo.lock derive Updateable (#167) 2023-07-22 11:20:31 +02:00
Cargo.toml Add rc feature to serde 2023-08-02 20:17:36 +02:00
LICENSE Initial commit 2023-04-03 22:19:25 +02:00
README.md Join/Leave Guilds, (Group) DMs and minor improvements (#157) 2023-07-17 19:36:28 +02:00
SECURITY.md Create SECURITY.md 2023-06-04 22:17:56 +02:00

README.md

Discord Build Contributors Forks Issues


Logo

Chorus

A rust library for interacting with (multiple) Spacebar-compatible APIs and Gateways (at the same time).
Explore the docs »

Report Bug · Request Feature · Join Discord

About

Chorus is a Rust library that allows developers to interact with multiple Spacebar-compatible APIs and Gateways simultaneously. The library provides a simple and efficient way to communicate with these services, making it easier for developers to build applications that rely on them. Chorus is open-source and welcomes contributions from the community.

Contributing

If you would like to contribute, please feel free to open an Issue with the idea you have, or a Pull Request. Please keep our contribution guidelines in mind. Your contribution might not be accepted, if it violates these guidelines or our Code of Conduct.

Progress Tracker/Roadmap

Core Functionality

Messaging

User Management

Additional Features

  • Server discovery
  • Server templates

Voice and Video

Permissions and Roles

Guild Management

Moderation

  • Channel moderation (slow mode, etc.)
  • User sanctions (mute, kick, ban)
  • Audit logs

Embeds and Rich Content

  • Sending rich content in messages (links, images, videos)
  • Customizing embed appearance (title, description, color, fields)

Webhooks

  • Webhook creation and management
  • Handling incoming webhook events

Documentation and Examples

  • Comprehensive documentation
  • Example usage and code snippets
  • Tutorials and guides