pub struct MessageHandler { /* private fields */ }Expand description
Handler that matches updates based on the composable Filter
trait system.
This is the most general-purpose handler. It mirrors the Python
MessageHandler which delegates to a BaseFilter tree. The Rust port
uses crate::filters::base::F – the operator-overloaded filter wrapper
– so filters compose naturally with &, |, ^, !.
When a filter returns FilterResult::MatchWithData, the extracted data
is stored in MatchResult::Custom and flows through to the handler
callback.
§Ergonomic constructor
use rust_tg_bot_ext::prelude::*;
async fn echo(update: Update, context: Context) -> HandlerResult {
let text = update.effective_message().and_then(|m| m.text.as_deref()).unwrap_or("");
context.reply_text(&update, text).await?;
Ok(())
}
MessageHandler::new(TEXT & !COMMAND, echo);§Full-control constructor
use rust_tg_bot_ext::handlers::message::MessageHandler;
use rust_tg_bot_ext::handlers::base::*;
use rust_tg_bot_ext::filters::base::F;
use rust_tg_bot_ext::filters::base::All;
use std::sync::Arc;
let handler = MessageHandler::with_options(
Some(F::new(All)),
Arc::new(|update, _mr| Box::pin(async move { HandlerResult::Continue })),
true,
);Implementations§
Source§impl MessageHandler
impl MessageHandler
Sourcepub fn new<Cb, Fut>(filter: F, callback: Cb) -> MessageHandler
pub fn new<Cb, Fut>(filter: F, callback: Cb) -> MessageHandler
Ergonomic constructor matching python-telegram-bot’s
MessageHandler(filters, callback).
Accepts a composable filter and an async handler function with
signature async fn(Update, Context) -> HandlerResult.
§Example
use rust_tg_bot_ext::prelude::*;
async fn echo(update: Update, context: Context) -> HandlerResult {
let text = update.effective_message().and_then(|m| m.text.as_deref()).unwrap_or("");
context.reply_text(&update, text).await?;
Ok(())
}
MessageHandler::new(TEXT & !COMMAND, echo);Sourcepub fn with_options(
filter: Option<F>,
callback: Arc<dyn Fn(Arc<Update>, MatchResult) -> Pin<Box<dyn Future<Output = HandlerResult> + Send>> + Sync + Send>,
block: bool,
) -> MessageHandler
pub fn with_options( filter: Option<F>, callback: Arc<dyn Fn(Arc<Update>, MatchResult) -> Pin<Box<dyn Future<Output = HandlerResult> + Send>> + Sync + Send>, block: bool, ) -> MessageHandler
Full-control constructor for advanced use cases.
If filter is None, every Update matches (equivalent to the
Python filters.ALL).
Sourcepub fn from_fn(
filter: Option<Arc<dyn Fn(&Update) -> bool + Sync + Send>>,
callback: Arc<dyn Fn(Arc<Update>, MatchResult) -> Pin<Box<dyn Future<Output = HandlerResult> + Send>> + Sync + Send>,
block: bool,
) -> MessageHandler
pub fn from_fn( filter: Option<Arc<dyn Fn(&Update) -> bool + Sync + Send>>, callback: Arc<dyn Fn(Arc<Update>, MatchResult) -> Pin<Box<dyn Future<Output = HandlerResult> + Send>> + Sync + Send>, block: bool, ) -> MessageHandler
Create a MessageHandler from a legacy closure filter.
This is a convenience constructor for backward compatibility with code
that uses Fn(&Update) -> bool closures instead of the Filter trait.
Trait Implementations§
Source§impl Handler for MessageHandler
impl Handler for MessageHandler
Source§fn check_update(&self, update: &Update) -> Option<MatchResult>
fn check_update(&self, update: &Update) -> Option<MatchResult>
update. Read moreSource§fn handle_update(
&self,
update: Arc<Update>,
match_result: MatchResult,
) -> Pin<Box<dyn Future<Output = HandlerResult> + Send>>
fn handle_update( &self, update: Arc<Update>, match_result: MatchResult, ) -> Pin<Box<dyn Future<Output = HandlerResult> + Send>>
check_update
returned Some.Source§fn block(&self) -> bool
fn block(&self) -> bool
Source§fn handle_update_with_context(
&self,
update: Arc<Update>,
match_result: MatchResult,
context: CallbackContext,
) -> Pin<Box<dyn Future<Output = HandlerResult> + Send>>
fn handle_update_with_context( &self, update: Arc<Update>, match_result: MatchResult, context: CallbackContext, ) -> Pin<Box<dyn Future<Output = HandlerResult> + Send>>
CallbackContext. Read moreSource§fn collect_additional_context(
&self,
_context: &mut CallbackContext,
_match_result: &MatchResult,
)
fn collect_additional_context( &self, _context: &mut CallbackContext, _match_result: &MatchResult, )
context.args, context.matches)
from the match result before the handler callback is invoked. Read more