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
60
61
62
63
64
65
66
67
68
69
70
71
72
//! Crate with bindings to telegram bot api.
//!
//! # Example
//! Simple echo bot. It listens all incoming messages and echos text messages, on other messages it replies with text "I can echo only text message".
//! ```no_run
//! use hyper::rt::{Future, Stream};
//!
//! use rutebot::client::Rutebot;
//! use rutebot::requests::get_updates::{GetUpdatesRequest, AllowedUpdate};
//! use rutebot::requests::send_message::send_text_message::SendTextMessageRequest;
//! use rutebot::responses::{Message, Update};
//! use rutebot::requests::ChatId;
//!
//! fn main() {
//!    let rutebot = Rutebot::new("token");
//!    let allowed_updates = [AllowedUpdate::Message];
//!    let get_updates =
//!        GetUpdatesRequest {
//!            timeout: Some(20),
//!            allowed_updates: Some(&allowed_updates),
//!            ..GetUpdatesRequest::new()
//!        };
//!    let updates = rutebot.incoming_updates(&get_updates)
//!        .then(Ok)
//!        .for_each(move |x| {
//!            let reply_msg_request =
//!                match x {
//!                    Ok(Update { message: Some(Message { message_id, ref chat, text: Some(ref text), .. }), .. }) => {
//!                        let request =
//!                            SendTextMessageRequest::new_reply(ChatId::Id(chat.id), text, message_id);
//!                        Some(request)
//!                    }
//!                    Ok(Update { message: Some(Message { message_id, ref chat, .. }), .. }) => {
//!                        let request = SendTextMessageRequest::new_reply(ChatId::Id(chat.id), "I can echo only text message", message_id);
//!                        Some(request)
//!                    }
//!                    Err(e) => {
//!                       println!("Got error while getting updates {:?}", e);
//!                       None
//!                    }
//!                    _ => None
//!                };
//!            if let Some(reply) = reply_msg_request {
//!                let send_future = rutebot.prepare_api_request(&reply)
//!                    .send()
//!                    .map(|_| ())
//!                    .map_err(|x| println!("Got error while sending message: {:?}", x));
//!                hyper::rt::spawn(send_future);
//!            }
//!            Ok(())
//!        });
//!
//!    hyper::rt::run(updates);
//! }
//! ```

/// Telegram bot api responses
pub mod responses;

/// Requests that you can send to telegram bot api
pub mod requests;

/// Main types for sending requests
pub mod client;

/// Errors definitions
pub mod error;

mod updates_poll_stream;

#[cfg(test)]
mod tests {}