Skip to main content

rust_tg_bot_ext/
prelude.rs

1//! Convenient re-exports for writing clean Telegram bot code.
2//!
3//! ```rust,ignore
4//! use rust_tg_bot_ext::prelude::*;
5//! ```
6
7pub use crate::application::{Application, HandlerError};
8pub use crate::builder::ApplicationBuilder;
9pub use crate::context::{CallbackContext, DataReadGuard, DataWriteGuard};
10pub use crate::filters::base::{Filter, FilterResult, F};
11pub use crate::handlers::base::FnHandler;
12pub use crate::handlers::callback_query::CallbackQueryHandler;
13pub use crate::handlers::command::CommandHandler;
14pub use crate::handlers::message::MessageHandler;
15pub use std::sync::Arc;
16
17pub use rust_tg_bot_raw::types::message::Message;
18pub use rust_tg_bot_raw::types::update::Update;
19
20// Typed constant enums — prefer these over magic strings.
21pub use rust_tg_bot_raw::constants::{
22    ChatAction, ChatMemberStatus, ChatType, MessageEntityType, ParseMode,
23};
24
25// ---------------------------------------------------------------------------
26// Keyboard & inline keyboard constructors (D1-D4)
27// ---------------------------------------------------------------------------
28pub use rust_tg_bot_raw::types::force_reply::ForceReply;
29pub use rust_tg_bot_raw::types::inline::inline_keyboard_button::InlineKeyboardButton;
30pub use rust_tg_bot_raw::types::inline::inline_keyboard_markup::InlineKeyboardMarkup;
31pub use rust_tg_bot_raw::types::keyboard_button::KeyboardButton;
32pub use rust_tg_bot_raw::types::reply_keyboard_markup::ReplyKeyboardMarkup;
33pub use rust_tg_bot_raw::types::reply_keyboard_remove::ReplyKeyboardRemove;
34
35// ---------------------------------------------------------------------------
36// Common types developers always need
37// ---------------------------------------------------------------------------
38pub use rust_tg_bot_raw::bot::ChatId;
39pub use rust_tg_bot_raw::types::callback_query::CallbackQuery;
40pub use rust_tg_bot_raw::types::chat::Chat;
41pub use rust_tg_bot_raw::types::files::input_file::InputFile;
42pub use rust_tg_bot_raw::types::files::photo_size::PhotoSize;
43pub use rust_tg_bot_raw::types::user::User;
44
45// ---------------------------------------------------------------------------
46// Re-export serde_json so users don't need it as a direct dependency
47// ---------------------------------------------------------------------------
48pub use serde_json::{json, Value as JsonValue};
49
50// ---------------------------------------------------------------------------
51// Re-export commonly needed async / collection types
52// ---------------------------------------------------------------------------
53pub use std::collections::HashMap;
54pub use tokio::sync::RwLock;
55
56// Re-export tokio so users can use #[tokio::main] without adding tokio as direct dep
57pub use tokio;
58
59// ---------------------------------------------------------------------------
60// Webhook types (feature-gated)
61// ---------------------------------------------------------------------------
62#[cfg(feature = "webhooks")]
63pub use crate::updater::WebhookConfig;
64#[cfg(feature = "webhooks")]
65pub use crate::utils::webhook_handler::{WebhookHandler, WebhookServer};
66
67/// Type alias matching python-telegram-bot's `HandlerResult`.
68pub type HandlerResult = Result<(), HandlerError>;
69
70/// Type alias for ergonomic handler signatures: `async fn(Update, Context) -> HandlerResult`.
71pub type Context = CallbackContext;
72
73/// Returns the `TEXT` filter wrapped as [`F`] for use with bitwise operators.
74///
75/// ```rust,ignore
76/// MessageHandler::new(text_filter() & !command_filter(), echo)
77/// ```
78#[allow(non_snake_case)]
79#[must_use]
80pub fn TEXT() -> F {
81    F::new(crate::filters::text::TextAny)
82}
83
84/// Returns the `COMMAND` filter wrapped as [`F`] for use with bitwise operators.
85///
86/// ```rust,ignore
87/// MessageHandler::new(text_filter() & !command_filter(), echo)
88/// ```
89#[allow(non_snake_case)]
90#[must_use]
91pub fn COMMAND() -> F {
92    F::new(crate::filters::command::CommandFilter::starts())
93}