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 = { version = "1.0.219", features = ["derive"] }
|
||||||
serde_json = "1.0.140"
|
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"
|
url = "2.5.4"
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ pub async fn start_axum_server(stop_signal: Arc<AtomicBool>) {
|
|||||||
Path(token): Path<String>,
|
Path(token): Path<String>,
|
||||||
input: String,
|
input: String,
|
||||||
) -> impl IntoResponse {
|
) -> 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,
|
Some(tx) => tx,
|
||||||
None => {
|
None => {
|
||||||
let bot_data = match BOTS_DATA.get(&token).await {
|
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() {
|
let tx = match r_tx.get() {
|
||||||
Some(v) => v,
|
|
||||||
None => {
|
None => {
|
||||||
BOTS_ROUTES.remove(&token).await;
|
BOTS_ROUTES.remove(&token).await;
|
||||||
return StatusCode::SERVICE_UNAVAILABLE;
|
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) {
|
match serde_json::from_str::<Update>(&input) {
|
||||||
Ok(mut update) => {
|
Ok(mut update) => {
|
||||||
if let UpdateKind::Error(_) = &mut update.kind {
|
if let UpdateKind::Error(value) = &mut update.kind {
|
||||||
log::warn!(
|
*value = serde_json::from_str(&input).unwrap_or_default();
|
||||||
"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 Err(err) = tx.send(Ok(update)) {
|
if let Err(err) = tx.send(Ok(update)) {
|
||||||
@@ -90,7 +89,7 @@ pub async fn start_axum_server(stop_signal: Arc<AtomicBool>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
log::warn!(
|
log::error!(
|
||||||
"Cannot parse an update.\nError: {:?}\nValue: {}\n\
|
"Cannot parse an update.\nError: {:?}\nValue: {}\n\
|
||||||
This is a bug in teloxide-core, please open an issue here: \
|
This is a bug in teloxide-core, please open an issue here: \
|
||||||
https://github.com/teloxide/teloxide/issues.",
|
https://github.com/teloxide/teloxide/issues.",
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ pub async fn start_bot(bot_data: &BotData) {
|
|||||||
.dependencies(dptree::deps![bot_data.cache])
|
.dependencies(dptree::deps![bot_data.cache])
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
let (stop_token, _stop_flag, tx, listener) = get_listener();
|
let (stop_token, stop_flag, tx, listener) = get_listener();
|
||||||
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
dispatcher
|
dispatcher
|
||||||
@@ -114,6 +114,9 @@ pub async fn start_bot(bot_data: &BotData) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
BOTS_ROUTES
|
BOTS_ROUTES
|
||||||
.insert(token.to_string(), (stop_token, ClosableSender::new(tx)))
|
.insert(
|
||||||
|
token.to_string(),
|
||||||
|
(stop_token, stop_flag, ClosableSender::new(tx)),
|
||||||
|
)
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ pub mod utils;
|
|||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use smartstring::alias::String as SmartString;
|
use smartstring::alias::String as SmartString;
|
||||||
use teloxide::adaptors::throttle::Limits;
|
use teloxide::adaptors::throttle::Limits;
|
||||||
use teloxide::stop::StopToken;
|
use teloxide::stop::{StopFlag, StopToken};
|
||||||
use tokio::task::JoinSet;
|
use tokio::task::JoinSet;
|
||||||
use tracing::log;
|
use tracing::log;
|
||||||
|
|
||||||
@@ -58,6 +58,7 @@ pub static WEBHOOK_CHECK_ERRORS_COUNT: Lazy<Cache<u32, u32>> = Lazy::new(|| {
|
|||||||
|
|
||||||
type StopTokenWithSender = (
|
type StopTokenWithSender = (
|
||||||
StopToken,
|
StopToken,
|
||||||
|
StopFlag,
|
||||||
ClosableSender<Result<Update, std::convert::Infallible>>,
|
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| {
|
.eviction_listener(|token, value: StopTokenWithSender, _cause| {
|
||||||
log::info!("Stop Bot(token={})!", token);
|
log::info!("Stop Bot(token={})!", token);
|
||||||
|
|
||||||
let (stop_token, mut sender) = value;
|
let (stop_token, _stop_flag, mut sender) = value;
|
||||||
|
|
||||||
stop_token.stop();
|
stop_token.stop();
|
||||||
sender.close();
|
sender.close();
|
||||||
@@ -147,7 +148,7 @@ impl BotsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn stop_all() {
|
pub async fn stop_all() {
|
||||||
for (_, (stop_token, _)) in BOTS_ROUTES.iter() {
|
for (_, (stop_token, _, _)) in BOTS_ROUTES.iter() {
|
||||||
stop_token.stop();
|
stop_token.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user