conogram

Crates.ioconogram
lib.rsconogram
version0.2.18
sourcesrc
created_at2023-06-06 12:42:39.226593
updated_at2024-10-31 16:59:44.512774
descriptionAn async wrapper for Telegram Bot API
homepagehttps://github.com/ENCRYPTEDFOREVER/conogram
repositoryhttps://github.com/ENCRYPTEDFOREVER/conogram
max_upload_size
id883820
size1,079,268
ENCRYPTED (ENCRYPTEDFOREVER)

documentation

README

Conogram: async Telegram Bot API client written in Rust


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

Commit count: 112

cargo fmt