Skip to content

ENCRYPTEDFOREVER/conogram

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

    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

Releases

No releases published

Packages

No packages published

Languages