mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 15:35:35 +01:00
Refactor random module
This commit is contained in:
@@ -107,17 +107,14 @@ async fn random_handler(message: Message, bot: CacheMe<Throttle<Bot>>) -> crate:
|
||||
],
|
||||
};
|
||||
|
||||
let res = bot
|
||||
bot
|
||||
.send_message(message.chat.id, MESSAGE_TEXT)
|
||||
.reply_to_message_id(message.id)
|
||||
.reply_markup(keyboard)
|
||||
.send()
|
||||
.await;
|
||||
.await?;
|
||||
|
||||
match res {
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(Box::new(err)),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn get_random_item_handler_internal<T>(
|
||||
@@ -128,11 +125,19 @@ async fn get_random_item_handler_internal<T>(
|
||||
where
|
||||
T: Format,
|
||||
{
|
||||
match item {
|
||||
Ok(item) => {
|
||||
let item = match item {
|
||||
Ok(v) => v,
|
||||
Err(err) => {
|
||||
bot
|
||||
.send_message(cq.from.id, "Ошибка! Попробуйте позже :(")
|
||||
.send()
|
||||
.await?;
|
||||
return Err(err);
|
||||
},
|
||||
};
|
||||
|
||||
let item_message = item.format();
|
||||
|
||||
let send_item_handler = tokio::spawn(
|
||||
bot.send_message(cq.from.id, item_message)
|
||||
.reply_markup(InlineKeyboardMarkup {
|
||||
inline_keyboard: vec![vec![InlineKeyboardButton {
|
||||
@@ -142,35 +147,20 @@ where
|
||||
text: String::from("Повторить?"),
|
||||
}]],
|
||||
})
|
||||
.send(),
|
||||
);
|
||||
.send()
|
||||
.await?;
|
||||
|
||||
cq.message.map(|message| async move {
|
||||
match cq.message {
|
||||
Some(message) => {
|
||||
bot.edit_message_reply_markup(message.chat.id, message.id)
|
||||
.reply_markup(InlineKeyboardMarkup {
|
||||
inline_keyboard: vec![],
|
||||
})
|
||||
.send()
|
||||
.await
|
||||
});
|
||||
|
||||
match send_item_handler.await {
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(Box::new(err)),
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
match bot
|
||||
.send_message(cq.from.id, "Ошибка! Попробуйте позже :(")
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
Ok(_) => (),
|
||||
Err(int_error) => return Err(Box::new(int_error)),
|
||||
}
|
||||
|
||||
Err(err)
|
||||
}
|
||||
.await?;
|
||||
Ok(())
|
||||
},
|
||||
None => Ok(()),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,13 +181,19 @@ where
|
||||
}
|
||||
|
||||
async fn get_genre_metas_handler(cq: CallbackQuery, bot: CacheMe<Throttle<Bot>>) -> BotHandlerInternal {
|
||||
let genre_metas = match book_library::get_genre_metas().await {
|
||||
Ok(v) => v,
|
||||
Err(err) => return Err(err),
|
||||
let genre_metas = book_library::get_genre_metas().await?;
|
||||
|
||||
let message = match cq.message {
|
||||
Some(v) => v,
|
||||
None => {
|
||||
bot
|
||||
.send_message(cq.from.id, "Ошибка! Начните заново :(")
|
||||
.send()
|
||||
.await?;
|
||||
return Ok(());
|
||||
},
|
||||
};
|
||||
|
||||
match cq.message {
|
||||
Some(message) => {
|
||||
let keyboard = InlineKeyboardMarkup {
|
||||
inline_keyboard: genre_metas
|
||||
.clone()
|
||||
@@ -217,27 +213,13 @@ async fn get_genre_metas_handler(cq: CallbackQuery, bot: CacheMe<Throttle<Bot>>)
|
||||
.collect(),
|
||||
};
|
||||
|
||||
match bot
|
||||
bot
|
||||
.edit_message_reply_markup(message.chat.id, message.id)
|
||||
.reply_markup(keyboard)
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(Box::new(err)),
|
||||
}
|
||||
}
|
||||
None => {
|
||||
match bot
|
||||
.send_message(cq.from.id, "Ошибка! Начните заново :(")
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(Box::new(err)),
|
||||
}
|
||||
}
|
||||
}
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn get_genres_by_meta_handler(
|
||||
@@ -245,32 +227,22 @@ async fn get_genres_by_meta_handler(
|
||||
bot: CacheMe<Throttle<Bot>>,
|
||||
genre_index: u32,
|
||||
) -> BotHandlerInternal {
|
||||
let genre_metas = match book_library::get_genre_metas().await {
|
||||
Ok(v) => v,
|
||||
Err(err) => return Err(err),
|
||||
};
|
||||
let genre_metas = book_library::get_genre_metas().await?;
|
||||
|
||||
let meta = match genre_metas.get(genre_index as usize) {
|
||||
Some(v) => v,
|
||||
None => {
|
||||
return match bot
|
||||
bot
|
||||
.send_message(cq.from.id, "Ошибка! Попробуйте позже :(")
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(Box::new(err)),
|
||||
}
|
||||
.await?;
|
||||
|
||||
return Ok(());
|
||||
}
|
||||
};
|
||||
|
||||
let genres = match book_library::get_genres(meta.to_string()).await {
|
||||
Ok(v) => v.items,
|
||||
Err(err) => return Err(err),
|
||||
};
|
||||
|
||||
let mut buttons: Vec<Vec<InlineKeyboardButton>> = genres
|
||||
.clone()
|
||||
let mut buttons: Vec<Vec<InlineKeyboardButton>> = book_library::get_genres(meta.to_string()).await?
|
||||
.items
|
||||
.into_iter()
|
||||
.map(|genre| {
|
||||
vec![InlineKeyboardButton {
|
||||
@@ -295,29 +267,25 @@ async fn get_genres_by_meta_handler(
|
||||
inline_keyboard: buttons,
|
||||
};
|
||||
|
||||
match cq.message {
|
||||
Some(message) => {
|
||||
match bot
|
||||
let message = match cq.message {
|
||||
Some(message) => message,
|
||||
None => {
|
||||
bot
|
||||
.send_message(cq.from.id, "Ошибка! Начните заново :(")
|
||||
.send()
|
||||
.await?;
|
||||
|
||||
return Ok(());
|
||||
}
|
||||
};
|
||||
|
||||
bot
|
||||
.edit_message_reply_markup(message.chat.id, message.id)
|
||||
.reply_markup(keyboard)
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(Box::new(err)),
|
||||
}
|
||||
}
|
||||
None => {
|
||||
match bot
|
||||
.send_message(cq.from.id, "Ошибка! Начните заново :(")
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(Box::new(err)),
|
||||
}
|
||||
}
|
||||
}
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn get_random_book_by_genre(
|
||||
|
||||
Reference in New Issue
Block a user