14个版本

使用旧的Rust 2015

0.1.13 2019年3月27日
0.1.12 2019年3月3日
0.1.11 2019年2月21日
0.1.4 2018年8月27日

#31 in #voice

Download history 1/week @ 2024-03-26 9/week @ 2024-04-02

每月51次下载

MIT许可证

69KB
2K SLoC

relegram

Telegram bot API客户端。处于开发中。

示例

示例机器人,会将所有文本和语音消息重发回发送者。

extern crate relegram;
extern crate hyper;

use relegram::api::{BotApiClient, HttpClient};
use hyper::rt::{Future, Stream};
use std::time::Duration;
use relegram::requests::*;
use relegram::responses::*;

fn main() {
    let bot_client = BotApiClient::new(HttpClient::Default, String::from("YOUR TOKEN"));
    let get_updates =
        GetUpdatesRequest {
            timeout: Some(20),
            ..GetUpdatesRequest::new()
        };
    let updates = bot_client.incoming_updates(get_updates, Duration::from_secs(30))
        .for_each(move |x| {
            match x.kind {
                UpdateKind::Message(Message { from: MessageFrom::User { chat, .. }, kind: msg, .. }) => {
                    let send =
                        match msg {
                            MessageKind::Text { text, .. } =>
                                SendMessageRequest::new(ChatId::Id(chat.id), SendMessageKind::Text(SendText::new(text))),
                            MessageKind::Voice { voice, .. } =>
                                SendMessageRequest::new(ChatId::Id(chat.id), SendMessageKind::Voice(SendVoice::new(FileKind::FileId(voice.file_id)))),
                            _ =>
                                return Ok(())
                        };
                    hyper::rt::spawn(
                        bot_client.send_message(&send, Duration::from_secs(10))
                            .map(|x| println!("message sent {:?}", x))
                            .map_err(|x| println!("error occurred {:?}", x)));
                }
                _ =>
                return Ok(())

            };
            Ok(())
        })
        .map_err(|x| println!("error {:?}", x));

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

依赖项

~9–20MB
~268K SLoC