rutel 0.6.18

Rust telegram bot library
Documentation
use dotenv;
use rutel::bot;
use rutel::types::{ChatID, InputFileString};

fn get_tt() -> Option<(bot::Bot, String)> {
    if let (Ok(token), Ok(target)) = (dotenv::var("TG_TOKEN"), dotenv::var("TARGET")) {
        return Some((bot::Bot::new(&token), target));
    } else {
        return None;
    }
}

#[tokio::test]
async fn test_get_me() {
    if let Some((mut bot, _target)) = get_tt() {
        let u = bot.get_me(&bot::GetMe {}).await.unwrap();
        assert!(u.is_bot);
    }
}

#[test]
fn chat_id() {
    let i: ChatID = ChatID::from(-1001102759484i64);
    let c = match i {
        ChatID::String(_) => 0,
        ChatID::Integer(n) => n,
    };
    assert_eq!(c, -1001102759484i64);
}

#[tokio::test]
async fn test_get_updates() {
    if let Some((mut bot, _target)) = get_tt() {
        let updates = bot.get_updates(&bot::GetUpdates::new()).await;
        dbg!(&updates);
        assert!(updates.is_ok());
    }
}

#[tokio::test]
async fn test_send_message() {
    if let Some((mut bot, target)) = get_tt() {
        let msg = bot
            .send_message(&bot::SendMessage::new(
                ChatID::from(&target),
                "Hi".to_string(),
            ))
            .await
            .unwrap();
        dbg!(&msg);
        assert!(msg.text.is_some());
    }
}

#[tokio::test]
async fn test_forward_message() {
    if let Some((mut bot, target)) = get_tt() {
        if let Ok(msg_id) = dotenv::var("MESSAGE_ID") {
            let msg = bot
                .forward_message(&bot::ForwardMessage::new(
                    ChatID::from(&target),
                    ChatID::from(&target),
                    msg_id.parse::<i64>().unwrap(),
                ))
                .await
                .unwrap();
            assert!(msg.text.is_some());
        }
    }
}

#[tokio::test]
async fn test_copy_message() {
    if let Some((mut bot, target)) = get_tt() {
        if let Ok(msg_id) = dotenv::var("MESSAGE_ID") {
            let message_id = bot
                .copy_message(&bot::CopyMessage::new(
                    ChatID::from(&target),
                    ChatID::from(&target),
                    msg_id.parse::<i64>().unwrap(),
                ))
                .await
                .unwrap();
            assert!(message_id.message_id > 0);
        }
    }
}

#[tokio::test]
async fn test_send_photo() {
    if let Some((mut bot, target)) = get_tt() {
        if let Ok(photo_id) = dotenv::var("PHOTO_ID") {
            let message = bot
                .send_photo(&bot::SendPhoto::new(
                    ChatID::from(&target),
                    InputFileString::String(photo_id),
                ))
                .await
                .unwrap();
            assert!(message.photo.is_some());
        }
    }
}

#[tokio::test]
async fn test_send_audio() {
    if let Some((mut bot, target)) = get_tt() {
        if let Ok(audio_id) = dotenv::var("AUDIO_ID") {
            let message = bot
                .send_audio(&bot::SendAudio::new(
                    ChatID::from(&target),
                    InputFileString::String(audio_id),
                ))
                .await
                .unwrap();
            assert!(message.audio.is_some());
        }
    }
}

// -----------------

#[tokio::test]
async fn test_send_poll() {
    if let Some((mut bot, target)) = get_tt() {
        let message = bot
            .send_poll(&bot::SendPoll::new(
                ChatID::from(&target),
                "Question".to_string(),
                vec!["one".to_string(), "two".to_string()],
            ))
            .await
            .unwrap();
        assert!(message.poll.is_some());
    }
}

#[tokio::test]
async fn test_send_dice() {
    if let Some((mut bot, target)) = get_tt() {
        let message = bot
            .send_dice(&bot::SendDice::new(ChatID::from(&target)).emoji(Some("🎰".to_string())))
            .await
            .unwrap();
        assert!(message.dice.is_some());
    }
}

// -----------------

#[tokio::test]
async fn test_get_chat() {
    if let Some((mut bot, target)) = get_tt() {
        let chat = bot
            .get_chat(&bot::GetChat::new(ChatID::from(&target)))
            .await
            .unwrap();
        dbg!(&chat);
        assert_eq!(chat.id, target.parse::<i64>().unwrap());
    }
}