rutebot

Build Status Crates.io doc.rs License MIT

Rust Telegram Bot. A framework offering Telegram Bot API bindings for the Rust programming language.

For details see the docs.

Example

A simple greetings bot. Replies to all messages with text "Hello %USERNAME%"

You can run the following example with cargo run --example simplebot.

```rust use std::env;

use futures::future::Future; use futures::stream::Stream; use rutebot::client::Rutebot; use rutebot::requests::{GetUpdates, SendMessage}; use rutebot::responses::Update;

fn main() { let tokenenv = env::varos("TELEGRAMTOKEN") .expect("Please specify your bot's token in the TELEGRAMTOKEN environment variable."); let token = tokenenv.tostring_lossy();

let rutebot = Rutebot::new(token);
let get_updates = GetUpdates::new_with_timeout(20);
let updates = rutebot
    .incoming_updates(get_updates)
    .for_each(move |update| {
        let create_reply_request = |update: Update| {
            let message = update.message?;
            let response_message = format!("Hello {}", message.from?.first_name);
            let reply =
                SendMessage::new_reply(message.chat.id, &response_message, message.message_id);
            Some(rutebot.prepare_api_request(reply))
        };

        if let Some(reply) = create_reply_request(update) {
            tokio::spawn(reply.send().then(|_| Ok(())));
        }
        Ok(())
    })
    .then(|_| Ok(()));

tokio::run(updates);

}

```