🤖 An elegant Telegram bots framework for Rust https://docs.rs/teloxide
Find a file
2020-01-26 23:36:36 +02:00
.github/workflows Fix linter errors, enable ci for pull requests 2020-01-04 11:56:34 +03:00
examples Fix Clippy 2020-01-19 19:54:45 +06:00
media Resize FILTER_DP_FLOWCHART.png 2020-01-03 21:39:30 +06:00
src Merge branch 'improve-requests' of https://github.com/teloxide/teloxide into improve-requests 2020-01-25 01:00:17 +06:00
.gitignore Add ping_bot example 2020-01-11 16:02:49 +03:00
Cargo.toml Merge branch 'dev' into improve-requests 2020-01-24 07:16:21 +06:00
CODE_STYLE.md Update CODE_STYLE.md 2020-01-25 04:59:37 +06:00
ICON.png Improve the ICON.png quality 2019-10-15 16:16:56 +06:00
LICENSE Rename the lib to "teloxide" 2019-12-07 22:30:15 +03:00
logo.svg Make logo svg 2019-12-30 12:14:05 +03:00
README.md added part of getting started 2020-01-26 23:36:36 +02:00
rustfmt.toml Merge imports by default (rustfmt.toml) 2019-10-17 22:16:55 +06:00

WARNING: this library is still in active development under v0.1.0, use it at your own risk!

teloxide

A full-featured framework that empowers you to easily build Telegram bots using the async/.await syntax in Rust. It handles all the difficult stuff so you can focus only on your business logic.

Getting started

Library requires rustc version more than 1.40.0. You can check your rustc version with command:

rustup -V

If your rustc version lower than 1.40.0, update it with:

rustup update stable

Than create Cargo project and write

teloxide = "0.1.0"

in your Cargo.toml file.

Writing first bot

First, create bot with @botfather. After creating, botfather give you token in format 123456789:somemanyletters.

Next, open yout main.rs file. Let's create a simple echo bot:

use futures::stream::StreamExt;
use teloxide::{
    dispatching::{
        chat::{ChatUpdate, ChatUpdateKind, Dispatcher},
        update_listeners::polling_default,
        SessionState,
    },
    requests::Request,
    Bot,
};

#[tokio::main]
async fn main() {
    let bot = &Bot::new("1061598315:AAErEDodTsrqD3UxA_EvFyEfXbKA6DT25G0");
    let mut updater = Box::pin(polling_default(bot));
    let handler = |_, upd: ChatUpdate| async move {
        if let ChatUpdateKind::Message(m) = upd.kind {
            let msg = bot.send_message(m.chat.id, m.text);
            msg.send().await.unwrap();
        }
        SessionState::Continue(())
    };
    let mut dp = Dispatcher::<'_, (), _>::new(handler);
    println!("Starting the message handler.");
    loop {
        let u = updater.next().await.unwrap();
        match u {
            Err(e) => eprintln!("Error: {}", e),
            Ok(u) => {
                let _ = dp.dispatch(u).await;
            }
        }
    }
}