1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
/*! Rust implementation of [the Harmony chat protocol](https://github.com/harmony-development). Currently implements a lightweight client and a client API (powered by [tonic](https://crates.io/crates/tonic)), along with auto generated API via [tonic-build](https://crates.io/crates/tonic-build). ## Requirements - Latest stable Rust and Cargo. - If you are using Nix, `nix-shell` (or `nix develop` if you use flakes) should get you covered. - Otherwise, you'll need to get protobuf and make sure `protoc` is in your `PATH` env variable. - If for some reason `build.rs` fails, make sure to set: - `PROTOC` env variable to your `protoc` executable - and `PROTOC_INCLUDE` env variable to wherever protobuf include files are located, most likely in `/usr/share/include`. ## Examples - `echo_bot`: Showcases a simple message echo bot that operates in a guild. It will repost messages whenever someone else posts a message. - `message_log`: Showcases a simple message log bot that operates in a guild. It will log messages to the console whenever someone posts a message. - Bot run instructions: - Run bots with `GUILD_INVITE=invite cargo run --example example_name`. - Make sure the bot has necessary permissions to view channels / send messages etc. ## Crate features - By default, only a bare-bones common API of all services is generated. You can customize the crate to your needs by enabling feature(s) listed below: - Enable the `parking_lot` feature if you want to use [parking_lot](https://github.com/Amanieu/parking_lot) `sync` types instead of `std::sync`. - Enable the `client` feature for a lightweight client implementation and the client API. - Enable the `request_method` feature to enable a request method in `Client` which allows you to make requests like this: ```rust,no_run,ignore // Change our bots status to online and make sure its marked as a bot client .request::<ProfileUpdateRequest, _, _>( ProfileUpdate::default() .new_status(UserStatus::OnlineUnspecified) .new_is_bot(true), ) .await?; ``` - Enable the `gen_client` feature to generate client service code. - Enable the `gen_server` feature to generate server service code. - (Default) Enable the `gen_chat` feature to generate chat service code. - (Default) Enable the `gen_auth` feature to generate auth service code. - (Default) Enable the `gen_voice` feature to generate voice service code. - (Default) Enable the `gen_mediaproxy` feature to generate media proxy service code. - (Default) Enable the `gen_harmonytypes` feature to generate common Harmony types. ## MSRV Minimum Supported Rust Version: previous stable. Changing MSRV is not considered a semver-breaking change. !*/ #[macro_use] extern crate derive_new; #[cfg(feature = "gen_chat")] #[macro_use] extern crate harmony_derive; /// Harmony protocol API. pub mod api; #[cfg(feature = "client")] pub mod client;