License MIT Crates.io doc.rs

rutebot

Telegram bot api bindings for rust programming language.

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". ```rust use hyper::rt::{Future, Stream};

use rutebot::client::Rutebot; use rutebot::requests::getupdates::{GetUpdatesRequest, AllowedUpdate}; use rutebot::requests::sendmessage::sendtextmessage::SendTextMessageRequest; use rutebot::responses::{Message, Update}; use rutebot::requests::ChatId;

fn main() { let rutebot = Rutebot::new("token"); let allowedupdates = [AllowedUpdate::Message]; let getupdates = GetUpdatesRequest { timeout: Some(20), allowedupdates: Some(&allowedupdates), ..GetUpdatesRequest::new() }; let updates = rutebot.incomingupdates(&getupdates) .then(Ok) .foreach(move |x| { let replymsgrequest = match x { Ok(Update { message: Some(Message { messageid, ref chat, text: Some(ref text), .. }), .. }) => { let request = SendTextMessageRequest::newreply(ChatId::Id(chat.id), text, messageid); Some(request) } Ok(Update { message: Some(Message { messageid, ref chat, .. }), .. }) => { let request = SendTextMessageRequest::newreply(ChatId::Id(chat.id), "I can echo only text message", messageid); Some(request) } Err(e) => { println!("Got error while getting updates {:?}", e); None } _ => None }; if let Some(reply) = replymsgrequest { let sendfuture = rutebot.prepareapirequest(&reply) .send() .map(|| ()) .maperr(|x| println!("Got error while sending message: {:?}", x)); hyper::rt::spawn(send_future); } Ok(()) });

hyper::rt::run(updates); } ```