🤖 An elegant Telegram bots framework for Rust https://docs.rs/teloxide
Find a file
Temirkhan Myrzamadi c4ccf76455
Update README.md
2020-02-12 16:09:53 +06: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 Update README.md 2020-02-12 16:09:53 +06: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

  1. Be sure that you are up to date:
$ rustup update stable
  1. To create a new bot, execute cargo new and put the following lines into your Cargo.toml:
[dependencies]
teloxide = "0.1.0"

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;
            }
        }
    }
}