mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 15:35:35 +01:00
Fix
This commit is contained in:
@@ -167,12 +167,7 @@ where
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
};
|
};
|
||||||
|
|
||||||
let total_pages = items_page.pages;
|
let formated_page = items_page.format(1, 4096);
|
||||||
let footer = format!("\n\nСтраница 1/{total_pages}");
|
|
||||||
|
|
||||||
let formated_items = items_page.format_items(4096 - footer.len());
|
|
||||||
|
|
||||||
let message_text = format!("{formated_items}{footer}");
|
|
||||||
|
|
||||||
let callback_data = match command {
|
let callback_data = match command {
|
||||||
BookCommand::Author { id } => BookCallbackData::Author { id, page: 1 },
|
BookCommand::Author { id } => BookCallbackData::Author { id, page: 1 },
|
||||||
@@ -180,10 +175,10 @@ where
|
|||||||
BookCommand::Sequence { id } => BookCallbackData::Sequence { id, page: 1 },
|
BookCommand::Sequence { id } => BookCallbackData::Sequence { id, page: 1 },
|
||||||
};
|
};
|
||||||
|
|
||||||
let keyboard = generic_get_pagination_keyboard(1, total_pages, callback_data, true);
|
let keyboard = generic_get_pagination_keyboard(1, items_page.pages, callback_data, true);
|
||||||
|
|
||||||
bot
|
bot
|
||||||
.send_message(chat_id, message_text)
|
.send_message(chat_id, formated_page)
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.send()
|
.send()
|
||||||
.await?;
|
.await?;
|
||||||
@@ -260,17 +255,12 @@ where
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
let total_pages = items_page.pages;
|
let formated_page = items_page.format(page, 4096);
|
||||||
let footer = format!("\n\nСтраница {page}/{total_pages}");
|
|
||||||
|
|
||||||
let formated_items = items_page.format_items(4096 - footer.len());
|
let keyboard = generic_get_pagination_keyboard(page, items_page.pages, callback_data, true);
|
||||||
|
|
||||||
let message_text = format!("{formated_items}{footer}");
|
|
||||||
|
|
||||||
let keyboard = generic_get_pagination_keyboard(page, total_pages, callback_data, true);
|
|
||||||
|
|
||||||
bot
|
bot
|
||||||
.edit_message_text(chat_id, message_id, message_text)
|
.edit_message_text(chat_id, message_id, formated_page)
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.send()
|
.send()
|
||||||
.await?;
|
.await?;
|
||||||
|
|||||||
@@ -190,17 +190,12 @@ where
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
let total_pages = items_page.pages;
|
let formated_page = items_page.format(page, 4096);
|
||||||
let footer = format!("\n\nСтраница {page}/{total_pages}");
|
|
||||||
|
|
||||||
let formated_items = items_page.format_items(4096 - footer.len());
|
let keyboard = generic_get_pagination_keyboard(page, items_page.pages, search_data, true);
|
||||||
|
|
||||||
let message_text = format!("{formated_items}{footer}");
|
|
||||||
|
|
||||||
let keyboard = generic_get_pagination_keyboard(page, total_pages, search_data, true);
|
|
||||||
|
|
||||||
bot
|
bot
|
||||||
.edit_message_text(chat_id, message_id, message_text)
|
.edit_message_text(chat_id, message_id, formated_page)
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.send()
|
.send()
|
||||||
.await?;
|
.await?;
|
||||||
|
|||||||
@@ -175,11 +175,10 @@ async fn update_log_pagination_handler(
|
|||||||
|
|
||||||
let page = update_callback_data.page;
|
let page = update_callback_data.page;
|
||||||
let total_pages = items_page.pages;
|
let total_pages = items_page.pages;
|
||||||
let footer = format!("\n\nСтраница {page}/{total_pages}");
|
|
||||||
|
|
||||||
let formated_items = items_page.format_items(4096 - footer.len());
|
let formated_page = items_page.format(page, 4096);
|
||||||
|
|
||||||
let message_text = format!("{header}{formated_items}{footer}");
|
let message_text = format!("{header}{formated_page}");
|
||||||
|
|
||||||
let keyboard = generic_get_pagination_keyboard(page, total_pages, update_callback_data, true);
|
let keyboard = generic_get_pagination_keyboard(page, total_pages, update_callback_data, true);
|
||||||
bot
|
bot
|
||||||
|
|||||||
@@ -94,9 +94,7 @@ where
|
|||||||
T: Format + Clone + Debug,
|
T: Format + Clone + Debug,
|
||||||
P: FormatTitle + Clone + Debug
|
P: FormatTitle + Clone + Debug
|
||||||
{
|
{
|
||||||
pub fn format_items(&self, max_size: usize) -> String {
|
pub fn format(&self, page: u32, max_size: usize) -> String {
|
||||||
log::error!("format: {:?}", self);
|
|
||||||
|
|
||||||
let title: String = match &self.parent_item {
|
let title: String = match &self.parent_item {
|
||||||
Some(parent_item) => {
|
Some(parent_item) => {
|
||||||
let item_title = parent_item.format_title();
|
let item_title = parent_item.format_title();
|
||||||
@@ -109,13 +107,21 @@ where
|
|||||||
},
|
},
|
||||||
None => "".to_string(),
|
None => "".to_string(),
|
||||||
};
|
};
|
||||||
let title_len: usize = title.len();
|
|
||||||
|
|
||||||
|
let total_pages = self.pages;
|
||||||
|
let footer = format!("\n\nСтраница {page}/{total_pages}");
|
||||||
|
|
||||||
|
let formated_items = self.format_items(max_size - title.len() - footer.len());
|
||||||
|
|
||||||
|
format!("{title}{formated_items}{footer}")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn format_items(&self, max_size: usize) -> String {
|
||||||
let separator = "\n\n\n";
|
let separator = "\n\n\n";
|
||||||
let separator_len: usize = separator.len();
|
let separator_len: usize = separator.len();
|
||||||
|
|
||||||
let items_count: usize = self.items.len();
|
let items_count: usize = self.items.len();
|
||||||
let item_size: usize = (max_size - title_len - separator_len * items_count) / items_count;
|
let item_size: usize = (max_size - separator_len * items_count) / items_count;
|
||||||
|
|
||||||
let format_result: Vec<FormatResult> = self.items
|
let format_result: Vec<FormatResult> = self.items
|
||||||
.iter()
|
.iter()
|
||||||
@@ -129,13 +135,11 @@ where
|
|||||||
};
|
};
|
||||||
|
|
||||||
if !has_any_spliced {
|
if !has_any_spliced {
|
||||||
let items_string = format_result
|
return format_result
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|item| item.result)
|
.map(|item| item.result)
|
||||||
.collect::<Vec<String>>()
|
.collect::<Vec<String>>()
|
||||||
.join(separator);
|
.join(separator);
|
||||||
|
|
||||||
return format!("{title}{items_string}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut free_symbols: usize = format_result
|
let mut free_symbols: usize = format_result
|
||||||
@@ -144,7 +148,7 @@ where
|
|||||||
.map(|item| item_size - item.current_size)
|
.map(|item| item_size - item.current_size)
|
||||||
.sum();
|
.sum();
|
||||||
|
|
||||||
let items_string = self.items
|
self.items
|
||||||
.iter()
|
.iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(index, item)| {
|
.map(|(index, item)| {
|
||||||
@@ -162,9 +166,7 @@ where
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<Vec<String>>()
|
.collect::<Vec<String>>()
|
||||||
.join(separator);
|
.join(separator)
|
||||||
|
|
||||||
format!("{title}{items_string}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user