mirror of
https://github.com/teloxide/teloxide.git
synced 2025-03-14 11:44:04 +01:00
In reordering the parameters, I stick the following principle: place parameters from least changing to most changing. Thus, we have config and bot right from the beginning, next a dialogue with a possible payload, and next updates such as messages, inline queries, etc. This principle is used in languages with a native support for currying, although in Rust people appear to order parameters arbitrarily, so this commit is mostly for the sake of consistency.
89 lines
2.9 KiB
Rust
89 lines
2.9 KiB
Rust
//! A full-featured framework that empowers you to easily build [Telegram bots]
|
|
//! using [Rust]. It handles all the difficult stuff so you can focus only on
|
|
//! your business logic.
|
|
//!
|
|
//! For a high-level overview, see [our GitHub repository](https://github.com/teloxide/teloxide).
|
|
//!
|
|
//! [[`examples/throw_dice.rs`](https://github.com/teloxide/teloxide/blob/master/examples/throw_dice.rs)]
|
|
//! ```no_run
|
|
//! use teloxide::prelude::*;
|
|
//!
|
|
//! # #[tokio::main]
|
|
//! # async fn main() {
|
|
//! pretty_env_logger::init();
|
|
//! log::info!("Starting throw dice bot...");
|
|
//!
|
|
//! let bot = Bot::from_env();
|
|
//!
|
|
//! teloxide::repl(bot, |bot: Bot, msg: Message| async move {
|
|
//! bot.send_dice(msg.chat.id).await?;
|
|
//! Ok(())
|
|
//! })
|
|
//! .await;
|
|
//! # }
|
|
//! ```
|
|
//!
|
|
//! <div align="center">
|
|
//! <kbd>
|
|
//! <img src=https://github.com/teloxide/teloxide/raw/master/media/throw-dice.gif width=420px />
|
|
//! </kbd>
|
|
//! </div>
|
|
//!
|
|
//! [Telegram bots]: https://telegram.org/blog/bot-revolution
|
|
//! [`async`/`.await`]: https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html
|
|
//! [Rust]: https://www.rust-lang.org/
|
|
|
|
// This hack is used to cancel formatting for a Markdown table. See [1], [2], and [3].
|
|
//
|
|
// [1]: https://github.com/rust-lang/rustfmt/issues/4210
|
|
// [2]: https://github.com/rust-lang/rustfmt/issues/4787
|
|
// [3]: https://github.com/rust-lang/rust/issues/82768#issuecomment-803935643
|
|
#![cfg_attr(feature = "nightly", cfg_attr(feature = "nightly", doc = include_str!("features.md")))]
|
|
// https://github.com/teloxide/teloxide/raw/master/logo.svg doesn't work in html_logo_url, I don't know why.
|
|
#![doc(
|
|
html_logo_url = "https://github.com/teloxide/teloxide/raw/master/ICON.png",
|
|
html_favicon_url = "https://github.com/teloxide/teloxide/raw/master/ICON.png"
|
|
)]
|
|
// To properly build docs of this crate run
|
|
// ```console
|
|
// $ cargo docs --open
|
|
// ```
|
|
// (docs is an alias from `.cargo/config.toml`)
|
|
#![cfg_attr(all(docsrs, feature = "nightly"), feature(doc_cfg, doc_auto_cfg))]
|
|
#![forbid(unsafe_code)]
|
|
#![warn(rustdoc::broken_intra_doc_links)]
|
|
#![allow(clippy::match_bool)]
|
|
#![allow(clippy::redundant_pattern_matching)]
|
|
// https://github.com/rust-lang/rust-clippy/issues/7422
|
|
#![allow(clippy::nonstandard_macro_braces)]
|
|
|
|
#[cfg(feature = "ctrlc_handler")]
|
|
pub use dispatching::repls::{
|
|
commands_repl, commands_repl_with_listener, repl, repl_with_listener,
|
|
};
|
|
|
|
pub mod dispatching;
|
|
pub mod error_handlers;
|
|
pub mod prelude;
|
|
pub mod stop;
|
|
pub mod utils;
|
|
|
|
#[doc(inline)]
|
|
pub use teloxide_core::*;
|
|
|
|
#[cfg(feature = "macros")]
|
|
pub use teloxide_macros as macros;
|
|
|
|
pub use dispatching::filter_command;
|
|
pub use dptree::{self, case as handler};
|
|
|
|
#[cfg(all(feature = "nightly", doctest))]
|
|
#[cfg_attr(feature = "nightly", cfg_attr(feature = "nightly", doc = include_str!("../README.md")))]
|
|
enum ReadmeDocTests {}
|
|
|
|
use teloxide_core::requests::ResponseResult;
|
|
|
|
/// A shortcut for `ResponseResult::Ok(val)`.
|
|
pub fn respond<T>(val: T) -> ResponseResult<T> {
|
|
ResponseResult::Ok(val)
|
|
}
|