mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 07:25:36 +01:00
Test teloxide 0.14
This commit is contained in:
726
Cargo.lock
generated
726
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -28,7 +28,7 @@ reqwest = { version = "0.12.15", features = ["json", "stream"] }
|
||||
serde = { version = "1.0.219", features = ["derive"] }
|
||||
serde_json = "1.0.140"
|
||||
|
||||
teloxide = { version = "0.13.0", features = ["macros", "webhooks-axum", "cache-me", "throttle"] }
|
||||
teloxide = { version = "0.14.0", features = ["macros", "webhooks-axum", "cache-me", "throttle"] }
|
||||
|
||||
url = "2.5.4"
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ pub async fn start_axum_server(stop_signal: Arc<AtomicBool>) {
|
||||
Path(token): Path<String>,
|
||||
input: String,
|
||||
) -> impl IntoResponse {
|
||||
let (_, r_tx) = match BOTS_ROUTES.get(&token).await {
|
||||
let (_, stop_flag, r_tx) = match BOTS_ROUTES.get(&token).await {
|
||||
Some(tx) => tx,
|
||||
None => {
|
||||
let bot_data = match BOTS_DATA.get(&token).await {
|
||||
@@ -64,23 +64,22 @@ pub async fn start_axum_server(stop_signal: Arc<AtomicBool>) {
|
||||
};
|
||||
|
||||
let tx = match r_tx.get() {
|
||||
Some(v) => v,
|
||||
None => {
|
||||
BOTS_ROUTES.remove(&token).await;
|
||||
return StatusCode::SERVICE_UNAVAILABLE;
|
||||
}
|
||||
Some(v) => v,
|
||||
};
|
||||
|
||||
if stop_flag.is_stopped() {
|
||||
BOTS_ROUTES.remove(&token).await;
|
||||
return StatusCode::SERVICE_UNAVAILABLE;
|
||||
}
|
||||
|
||||
match serde_json::from_str::<Update>(&input) {
|
||||
Ok(mut update) => {
|
||||
if let UpdateKind::Error(_) = &mut update.kind {
|
||||
log::warn!(
|
||||
"Cannot parse an update.\nValue: {}\n\
|
||||
This is a bug in teloxide-core, please open an issue here: \
|
||||
https://github.com/teloxide/teloxide/issues.",
|
||||
input
|
||||
);
|
||||
return StatusCode::OK;
|
||||
if let UpdateKind::Error(value) = &mut update.kind {
|
||||
*value = serde_json::from_str(&input).unwrap_or_default();
|
||||
}
|
||||
|
||||
if let Err(err) = tx.send(Ok(update)) {
|
||||
@@ -90,7 +89,7 @@ pub async fn start_axum_server(stop_signal: Arc<AtomicBool>) {
|
||||
}
|
||||
}
|
||||
Err(error) => {
|
||||
log::warn!(
|
||||
log::error!(
|
||||
"Cannot parse an update.\nError: {:?}\nValue: {}\n\
|
||||
This is a bug in teloxide-core, please open an issue here: \
|
||||
https://github.com/teloxide/teloxide/issues.",
|
||||
|
||||
@@ -102,7 +102,7 @@ pub async fn start_bot(bot_data: &BotData) {
|
||||
.dependencies(dptree::deps![bot_data.cache])
|
||||
.build();
|
||||
|
||||
let (stop_token, _stop_flag, tx, listener) = get_listener();
|
||||
let (stop_token, stop_flag, tx, listener) = get_listener();
|
||||
|
||||
tokio::spawn(async move {
|
||||
dispatcher
|
||||
@@ -114,6 +114,9 @@ pub async fn start_bot(bot_data: &BotData) {
|
||||
});
|
||||
|
||||
BOTS_ROUTES
|
||||
.insert(token.to_string(), (stop_token, ClosableSender::new(tx)))
|
||||
.insert(
|
||||
token.to_string(),
|
||||
(stop_token, stop_flag, ClosableSender::new(tx)),
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ pub mod utils;
|
||||
use once_cell::sync::Lazy;
|
||||
use smartstring::alias::String as SmartString;
|
||||
use teloxide::adaptors::throttle::Limits;
|
||||
use teloxide::stop::StopToken;
|
||||
use teloxide::stop::{StopFlag, StopToken};
|
||||
use tokio::task::JoinSet;
|
||||
use tracing::log;
|
||||
|
||||
@@ -58,6 +58,7 @@ pub static WEBHOOK_CHECK_ERRORS_COUNT: Lazy<Cache<u32, u32>> = Lazy::new(|| {
|
||||
|
||||
type StopTokenWithSender = (
|
||||
StopToken,
|
||||
StopFlag,
|
||||
ClosableSender<Result<Update, std::convert::Infallible>>,
|
||||
);
|
||||
|
||||
@@ -68,7 +69,7 @@ pub static BOTS_ROUTES: Lazy<Cache<String, StopTokenWithSender>> = Lazy::new(||
|
||||
.eviction_listener(|token, value: StopTokenWithSender, _cause| {
|
||||
log::info!("Stop Bot(token={})!", token);
|
||||
|
||||
let (stop_token, mut sender) = value;
|
||||
let (stop_token, _stop_flag, mut sender) = value;
|
||||
|
||||
stop_token.stop();
|
||||
sender.close();
|
||||
@@ -147,7 +148,7 @@ impl BotsManager {
|
||||
}
|
||||
|
||||
pub async fn stop_all() {
|
||||
for (_, (stop_token, _)) in BOTS_ROUTES.iter() {
|
||||
for (_, (stop_token, _, _)) in BOTS_ROUTES.iter() {
|
||||
stop_token.stop();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user