🤖 An elegant Telegram bots framework for Rust https://docs.rs/teloxide
Find a file
Temirkhan Myrzamadi 4e6a536872
Update README.md
2020-02-12 22:00:54 +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 22:00:54 +06:00
rustfmt.toml Merge imports by default (rustfmt.toml) 2019-10-17 22:16:55 +06:00

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. Create a new bot using @Botfather to get a token in the format 123456789:blablabla.
  2. Initialise the TELOXIDE_TOKEN environmental variable to your token:
$ export TELOXIDE_TOKEN=MyAwesomeToken
  1. Be sure that you are up to date:
$ rustup update stable
  1. Execute cargo new my_bot, enter the directory and put these lines into your Cargo.toml:
[dependencies]
teloxide = "0.1.0"
pretty_env_logger = "0.3.1"
log = "0.4.8"
tokio = { version = "0.2.11", features = ["full"] }

The ping-pong bot

use teloxide::prelude::*;

use std::env::{set_var, var};

#[tokio::main]
async fn main() {
    // Configure a fancy logger. Let this bot print everything, but restrict
    // teloxide to only log errors.
    set_var("RUST_LOG", "ping_pong_bot=trace");
    set_var("RUST_LOG", "teloxide=error");
    pretty_env_logger::init();
    log::info!("Starting the ping-pong bot!");

    let bot = Bot::new(var("TELOXIDE_TOKEN").unwrap());

    // Create a dispatcher with a single message handler that answers "pong" to
    // each incoming message.
    Dispatcher::<RequestError>::new(bot)
        .message_handler(&|ctx: DispatcherHandlerCtx<Message>| async move {
            ctx.answer("pong").send().await?;
            Ok(())
        })
        .dispatch()
        .await;
}