16 releases
new 0.2.18 | Oct 31, 2024 |
---|---|
0.2.15 | Sep 21, 2024 |
0.2.11 | Jul 1, 2024 |
0.2.5 | Sep 22, 2023 |
0.1.1 | Jun 9, 2023 |
#130 in Asynchronous
427 downloads per month
1MB
20K
SLoC
Aims
- Full support of latest Bot API version no webhooks yet
- 1 to 1 API methods and entitities mapping
- Ease of use
Features
- Fully async
- Utility extension methods for (not all yet) API entities (e.g.
message.reply
method)
- Can be used in multithreaded context
- Full control over update handling
TODO
- More handy entity extension methods
-
Webhooks support
- More examples
Logging
How to enable logging in your executable
Quick usage overview
Using Local Bot API Server
let server_config = ApiServerConfig::local("http://localhost", 80, true);
let api_config = APIConfig::new("BOT_TOKEN", server_config)?
let api = API::new(api_config);
Calling API methods
let mut api = API::new(/**/);
// Required request parameters are in the request constructor, optionals are set via builder-like methods
// ChatId can be username of a channel
let request = api.send_message("@channelusername","Text").reply_to_message_id(42);
// All requests implement IntoFuture
let message = request.await?;
// You can handle some common API errors automatically:
// 1. By wrapping manually
let message = API::request(request).await?;
// 2. Or by using a trait
use conogram::api::WrapRequest;
let message = request.wrap().await?;
Mutating and calling requests by references
let mut request = api.send_message(chat_id, "Text");
for i in 0..5 {
request = request.chat_id(i);
// &Request implements IntoFuture too
let message = (&request).await?;
}
Very-Mini-FAQ
Q: Is it production-ready?
A: The library is not thoroughly tested, some stuff may be broken, unconventional or unusable for you. The reason is I'm developing it for my personal use. But if you're using it too, suggestions on improvement are welcome
Dependencies
~6–17MB
~244K SLoC