mirror of
https://github.com/teloxide/teloxide.git
synced 2025-03-14 11:44:04 +01:00
commit
e2023c4620
5 changed files with 38 additions and 8 deletions
|
@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## unreleased
|
||||
|
||||
## 0.7.0 - 2022-02-09
|
||||
|
||||
### Fixed
|
||||
|
||||
- `Dispatcher` wasn't `Send`. Make `DispatcherBuilder::{default_handler, error_handler}` accept a handler that implements `Send + Sync` ([PR 517](https://github.com/teloxide/teloxide/pull/517)).
|
||||
|
||||
## 0.6.1 - 2022-02-06
|
||||
|
||||
### Fixed
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "teloxide"
|
||||
version = "0.6.1"
|
||||
version = "0.7.0"
|
||||
edition = "2018"
|
||||
description = "An elegant Telegram bots framework for Rust"
|
||||
repository = "https://github.com/teloxide/teloxide"
|
||||
|
|
|
@ -73,7 +73,7 @@ $ rustup override set nightly
|
|||
5. Run `cargo new my_bot`, enter the directory and put these lines into your `Cargo.toml`:
|
||||
```toml
|
||||
[dependencies]
|
||||
teloxide = { version = "0.6", features = ["macros", "auto-send"] }
|
||||
teloxide = { version = "0.7", features = ["macros", "auto-send"] }
|
||||
log = "0.4"
|
||||
pretty_env_logger = "0.4.0"
|
||||
tokio = { version = "1.8", features = ["rt-multi-thread", "macros"] }
|
||||
|
|
|
@ -22,7 +22,7 @@ pub struct DispatcherBuilder<R, Err> {
|
|||
dependencies: DependencyMap,
|
||||
handler: UpdateHandler<Err>,
|
||||
default_handler: DefaultHandler,
|
||||
error_handler: Arc<dyn ErrorHandler<Err>>,
|
||||
error_handler: Arc<dyn ErrorHandler<Err> + Send + Sync>,
|
||||
}
|
||||
|
||||
impl<R, Err> DispatcherBuilder<R, Err>
|
||||
|
@ -36,7 +36,7 @@ where
|
|||
#[must_use]
|
||||
pub fn default_handler<H, Fut>(self, handler: H) -> Self
|
||||
where
|
||||
H: Fn(Arc<Update>) -> Fut + 'static,
|
||||
H: Fn(Arc<Update>) -> Fut + Send + Sync + 'static,
|
||||
Fut: Future<Output = ()> + Send + 'static,
|
||||
{
|
||||
let handler = Arc::new(handler);
|
||||
|
@ -54,7 +54,7 @@ where
|
|||
///
|
||||
/// By default, it is [`LoggingErrorHandler`].
|
||||
#[must_use]
|
||||
pub fn error_handler(self, handler: Arc<dyn ErrorHandler<Err>>) -> Self {
|
||||
pub fn error_handler(self, handler: Arc<dyn ErrorHandler<Err> + Send + Sync>) -> Self {
|
||||
Self { error_handler: handler, ..self }
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ pub struct Dispatcher<R, Err> {
|
|||
|
||||
handler: UpdateHandler<Err>,
|
||||
default_handler: DefaultHandler,
|
||||
error_handler: Arc<dyn ErrorHandler<Err>>,
|
||||
error_handler: Arc<dyn ErrorHandler<Err> + Send + Sync>,
|
||||
// TODO: respect allowed_udpates
|
||||
allowed_updates: HashSet<AllowedUpdate>,
|
||||
|
||||
|
@ -103,7 +103,7 @@ pub struct Dispatcher<R, Err> {
|
|||
/// A handler that processes updates from Telegram.
|
||||
pub type UpdateHandler<Err> = dptree::Handler<'static, DependencyMap, Result<(), Err>>;
|
||||
|
||||
type DefaultHandler = Box<dyn Fn(Arc<Update>) -> BoxFuture<'static, ()>>;
|
||||
type DefaultHandler = Box<dyn Fn(Arc<Update>) -> BoxFuture<'static, ()> + Send + Sync>;
|
||||
|
||||
impl<R, Err> Dispatcher<R, Err>
|
||||
where
|
||||
|
@ -272,3 +272,27 @@ where
|
|||
self.state.clone()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::convert::Infallible;
|
||||
|
||||
use teloxide_core::Bot;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_tokio_spawn() {
|
||||
tokio::spawn(async {
|
||||
// Just check that this code compiles.
|
||||
if false {
|
||||
Dispatcher::<_, Infallible>::builder(Bot::new(""), dptree::entry())
|
||||
.build()
|
||||
.dispatch()
|
||||
.await;
|
||||
}
|
||||
})
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
//!
|
||||
//! For a high-level overview, see [our GitHub repository](https://github.com/teloxide/teloxide).
|
||||
//!
|
||||
//! ([Full](https://github.com/teloxide/teloxide/blob/master/examples/dices_bot/src/main.rs))
|
||||
//! ([Full](https://github.com/teloxide/teloxide/blob/master/examples/dices.rs))
|
||||
//! ```no_run
|
||||
//! use teloxide::prelude2::*;
|
||||
//!
|
||||
|
|
Loading…
Add table
Reference in a new issue