mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 15:35:35 +01:00
Refactor
This commit is contained in:
@@ -124,15 +124,12 @@ where
|
|||||||
(Some(chat_id), Some(query), Some(message_id)) => {
|
(Some(chat_id), Some(query), Some(message_id)) => {
|
||||||
(chat_id, query, message_id)
|
(chat_id, query, message_id)
|
||||||
}
|
}
|
||||||
|
(Some(chat_id), _, _) => {
|
||||||
|
bot.send_message(chat_id, "Повторите поиск сначала").send().await?;
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
return match chat_id {
|
return Ok(());
|
||||||
Some(v) => match bot.send_message(v, "Повторите поиск сначала").send().await
|
|
||||||
{
|
|
||||||
Ok(_) => Ok(()),
|
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
},
|
|
||||||
None => return Ok(()),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -148,14 +145,11 @@ where
|
|||||||
let mut items_page = match items_getter(query.clone(), page, allowed_langs.clone()).await {
|
let mut items_page = match items_getter(query.clone(), page, allowed_langs.clone()).await {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
match bot
|
bot
|
||||||
.send_message(chat_id, "Ошибка! Попробуйте позже :(")
|
.send_message(chat_id, "Ошибка! Попробуйте позже :(")
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => (),
|
|
||||||
Err(err) => log::error!("{:?}", err),
|
|
||||||
}
|
|
||||||
return Err(err);
|
return Err(err);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -168,10 +162,8 @@ where
|
|||||||
SearchCallbackData::Translators { .. } => "Переводчики не найдены!",
|
SearchCallbackData::Translators { .. } => "Переводчики не найдены!",
|
||||||
};
|
};
|
||||||
|
|
||||||
return match bot.send_message(chat_id, message_text).send().await {
|
bot.send_message(chat_id, message_text).send().await?;
|
||||||
Ok(_) => Ok(()),
|
return Ok(());
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if page > items_page.total_pages {
|
if page > items_page.total_pages {
|
||||||
@@ -184,14 +176,11 @@ where
|
|||||||
{
|
{
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
match bot
|
bot
|
||||||
.send_message(chat_id, "Ошибка! Попробуйте позже :(")
|
.send_message(chat_id, "Ошибка! Попробуйте позже :(")
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => (),
|
|
||||||
Err(err) => log::error!("{:?}", err),
|
|
||||||
}
|
|
||||||
return Err(err);
|
return Err(err);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -206,15 +195,13 @@ where
|
|||||||
|
|
||||||
let keyboard = generic_get_pagination_keyboard(page, total_pages, search_data, true);
|
let keyboard = generic_get_pagination_keyboard(page, total_pages, search_data, true);
|
||||||
|
|
||||||
match bot
|
bot
|
||||||
.edit_message_text(chat_id, message_id, message_text)
|
.edit_message_text(chat_id, message_id, message_text)
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => Ok(()),
|
Ok(())
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn message_handler(message: Message, bot: CacheMe<Throttle<Bot>>) -> BotHandlerInternal {
|
pub async fn message_handler(message: Message, bot: CacheMe<Throttle<Bot>>) -> BotHandlerInternal {
|
||||||
@@ -249,16 +236,14 @@ pub async fn message_handler(message: Message, bot: CacheMe<Throttle<Bot>>) -> B
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
match bot
|
bot
|
||||||
.send_message(message.chat.id, message_text)
|
.send_message(message.chat.id, message_text)
|
||||||
.reply_to_message_id(message.id)
|
.reply_to_message_id(message.id)
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => Ok(()),
|
Ok(())
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_search_handler() -> crate::bots::BotHandler {
|
pub fn get_search_handler() -> crate::bots::BotHandler {
|
||||||
|
|||||||
@@ -77,15 +77,13 @@ async fn settings_handler(message: Message, bot: CacheMe<Throttle<Bot>>) -> BotH
|
|||||||
}]],
|
}]],
|
||||||
};
|
};
|
||||||
|
|
||||||
match bot
|
bot
|
||||||
.send_message(message.chat.id, "Настройки")
|
.send_message(message.chat.id, "Настройки")
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => Ok(()),
|
Ok(())
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_lang_keyboard(all_langs: Vec<Lang>, allowed_langs: HashSet<String>) -> InlineKeyboardMarkup {
|
fn get_lang_keyboard(all_langs: Vec<Lang>, allowed_langs: HashSet<String>) -> InlineKeyboardMarkup {
|
||||||
@@ -124,10 +122,8 @@ async fn settings_callback_handler(
|
|||||||
let message = match cq.message {
|
let message = match cq.message {
|
||||||
Some(v) => v,
|
Some(v) => v,
|
||||||
None => {
|
None => {
|
||||||
#[allow(unused_must_use)] {
|
bot.send_message(cq.from.id, "Ошибка! Попробуйте заново(").send().await?;
|
||||||
bot.send_message(cq.from.id, "Ошибка! Попробуйте заново(").send().await;
|
return Ok(());
|
||||||
}
|
|
||||||
return Ok(())
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -151,19 +147,17 @@ async fn settings_callback_handler(
|
|||||||
};
|
};
|
||||||
|
|
||||||
if allowed_langs_set.is_empty() {
|
if allowed_langs_set.is_empty() {
|
||||||
return match bot
|
bot
|
||||||
.answer_callback_query(cq.id)
|
.answer_callback_query(cq.id)
|
||||||
.text("Должен быть активен, хотя бы один язык!")
|
.text("Должен быть активен, хотя бы один язык!")
|
||||||
.show_alert(true)
|
.show_alert(true)
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => Ok(()),
|
return Ok(())
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
match create_or_update_user_settings(
|
if let Err(err) = create_or_update_user_settings(
|
||||||
user.id,
|
user.id,
|
||||||
user.last_name.clone().unwrap_or("".to_string()),
|
user.last_name.clone().unwrap_or("".to_string()),
|
||||||
user.first_name.clone(),
|
user.first_name.clone(),
|
||||||
@@ -171,38 +165,28 @@ async fn settings_callback_handler(
|
|||||||
me.username.clone().unwrap(),
|
me.username.clone().unwrap(),
|
||||||
allowed_langs_set.clone().into_iter().collect(),
|
allowed_langs_set.clone().into_iter().collect(),
|
||||||
)
|
)
|
||||||
.await
|
.await {
|
||||||
{
|
bot.send_message(user.id, "Ошибка! Попробуйте заново(").send().await?;
|
||||||
Ok(_) => (),
|
return Err(err);
|
||||||
Err(err) => {
|
}
|
||||||
#[allow(unused_must_use)] {
|
|
||||||
bot.send_message(user.id, "Ошибка! Попробуйте заново(").send().await;
|
|
||||||
}
|
|
||||||
return Err(err)
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
let all_langs = match get_langs().await {
|
let all_langs = match get_langs().await {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
#[allow(unused_must_use)] {
|
bot.send_message(user.id, "Ошибка! Попробуйте заново(").send().await?;
|
||||||
bot.send_message(user.id, "Ошибка! Попробуйте заново(").send().await;
|
|
||||||
}
|
|
||||||
return Err(err)
|
return Err(err)
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let keyboard = get_lang_keyboard(all_langs, allowed_langs_set);
|
let keyboard = get_lang_keyboard(all_langs, allowed_langs_set);
|
||||||
|
|
||||||
match bot
|
bot
|
||||||
.edit_message_reply_markup(message.chat.id, message.id)
|
.edit_message_reply_markup(message.chat.id, message.id)
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => Ok(()),
|
Ok(())
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_settings_handler() -> crate::bots::BotHandler {
|
pub fn get_settings_handler() -> crate::bots::BotHandler {
|
||||||
|
|||||||
@@ -28,15 +28,13 @@ pub async fn support_command_handler(message: Message, bot: CacheMe<Throttle<Bot
|
|||||||
}]],
|
}]],
|
||||||
};
|
};
|
||||||
|
|
||||||
match bot
|
bot
|
||||||
.send_message(message.chat.id, MESSAGE_TEXT)
|
.send_message(message.chat.id, MESSAGE_TEXT)
|
||||||
.parse_mode(teloxide::types::ParseMode::MarkdownV2)
|
.parse_mode(teloxide::types::ParseMode::MarkdownV2)
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => Ok(()),
|
Ok(())
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_support_handler() -> crate::bots::BotHandler {
|
pub fn get_support_handler() -> crate::bots::BotHandler {
|
||||||
|
|||||||
@@ -140,10 +140,7 @@ async fn update_log_pagination_handler(
|
|||||||
let message = match cq.message {
|
let message = match cq.message {
|
||||||
Some(v) => v,
|
Some(v) => v,
|
||||||
None => {
|
None => {
|
||||||
#[allow(unused_must_use)] {
|
bot.send_message(cq.from.id, "Ошибка! Попробуйте заново(").send().await?;
|
||||||
bot.send_message(cq.from.id, "Ошибка! Попробуйте заново(").send().await;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Ok(())
|
return Ok(())
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -153,39 +150,27 @@ async fn update_log_pagination_handler(
|
|||||||
|
|
||||||
let header = format!("Обновление каталога ({from} - {to}):\n\n");
|
let header = format!("Обновление каталога ({from} - {to}):\n\n");
|
||||||
|
|
||||||
let mut items_page = match get_uploaded_books(
|
let mut items_page = get_uploaded_books(
|
||||||
update_callback_data.page,
|
update_callback_data.page,
|
||||||
update_callback_data.from.format("%Y-%m-%d").to_string(),
|
update_callback_data.from.format("%Y-%m-%d").to_string(),
|
||||||
update_callback_data.to.format("%Y-%m-%d").to_string(),
|
update_callback_data.to.format("%Y-%m-%d").to_string(),
|
||||||
)
|
)
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(err),
|
|
||||||
};
|
|
||||||
|
|
||||||
if items_page.total_pages == 0 {
|
if items_page.total_pages == 0 {
|
||||||
return match bot
|
bot
|
||||||
.send_message(message.chat.id, "Нет новых книг за этот период.")
|
.send_message(message.chat.id, "Нет новых книг за этот период.")
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
return Ok(());
|
||||||
Ok(_) => Ok(()),
|
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if update_callback_data.page > items_page.total_pages {
|
if update_callback_data.page > items_page.total_pages {
|
||||||
items_page = match get_uploaded_books(
|
items_page = get_uploaded_books(
|
||||||
items_page.total_pages,
|
items_page.total_pages,
|
||||||
update_callback_data.from.format("%Y-%m-%d").to_string(),
|
update_callback_data.from.format("%Y-%m-%d").to_string(),
|
||||||
update_callback_data.to.format("%Y-%m-%d").to_string(),
|
update_callback_data.to.format("%Y-%m-%d").to_string(),
|
||||||
)
|
).await?;
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(err),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let formated_items = items_page.format_items();
|
let formated_items = items_page.format_items();
|
||||||
@@ -197,15 +182,13 @@ async fn update_log_pagination_handler(
|
|||||||
let message_text = format!("{header}{formated_items}{footer}");
|
let message_text = format!("{header}{formated_items}{footer}");
|
||||||
|
|
||||||
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);
|
||||||
match bot
|
bot
|
||||||
.edit_message_text(message.chat.id, message.id, message_text)
|
.edit_message_text(message.chat.id, message.id, message_text)
|
||||||
.reply_markup(keyboard)
|
.reply_markup(keyboard)
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await?;
|
||||||
{
|
|
||||||
Ok(_) => Ok(()),
|
Ok(())
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_update_log_handler() -> crate::bots::BotHandler {
|
pub fn get_update_log_handler() -> crate::bots::BotHandler {
|
||||||
|
|||||||
@@ -33,17 +33,8 @@ pub async fn get_cached_message(
|
|||||||
))
|
))
|
||||||
.header("Authorization", &config::CONFIG.cache_server_api_key)
|
.header("Authorization", &config::CONFIG.cache_server_api_key)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?
|
||||||
|
.error_for_status()?;
|
||||||
let response = match response {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
let response = match response.error_for_status() {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
if response.status() != StatusCode::OK {
|
if response.status() != StatusCode::OK {
|
||||||
return Err(Box::new(DownloadError {
|
return Err(Box::new(DownloadError {
|
||||||
@@ -51,10 +42,7 @@ pub async fn get_cached_message(
|
|||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
match response.json::<CachedMessage>().await {
|
Ok(response.json::<CachedMessage>().await?)
|
||||||
Ok(v) => Ok(v),
|
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn download_file(
|
pub async fn download_file(
|
||||||
@@ -62,25 +50,15 @@ pub async fn download_file(
|
|||||||
) -> Result<DownloadFile, Box<dyn std::error::Error + Send + Sync>> {
|
) -> Result<DownloadFile, Box<dyn std::error::Error + Send + Sync>> {
|
||||||
let DownloadData { format, id } = download_data;
|
let DownloadData { format, id } = download_data;
|
||||||
|
|
||||||
let client = reqwest::Client::new();
|
let response = reqwest::Client::new()
|
||||||
let response = client
|
|
||||||
.get(format!(
|
.get(format!(
|
||||||
"{}/api/v1/download/{id}/{format}",
|
"{}/api/v1/download/{id}/{format}",
|
||||||
&config::CONFIG.cache_server_url
|
&config::CONFIG.cache_server_url
|
||||||
))
|
))
|
||||||
.header("Authorization", &config::CONFIG.cache_server_api_key)
|
.header("Authorization", &config::CONFIG.cache_server_api_key)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?
|
||||||
|
.error_for_status()?;
|
||||||
let response = match response {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
let response = match response.error_for_status() {
|
|
||||||
Ok(response) => response,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
if response.status() != StatusCode::OK {
|
if response.status() != StatusCode::OK {
|
||||||
return Err(Box::new(DownloadError {
|
return Err(Box::new(DownloadError {
|
||||||
@@ -90,8 +68,6 @@ pub async fn download_file(
|
|||||||
|
|
||||||
let headers = response.headers();
|
let headers = response.headers();
|
||||||
|
|
||||||
log::info!("{:?}", headers);
|
|
||||||
|
|
||||||
let filename =
|
let filename =
|
||||||
std::str::from_utf8(&base64::decode(headers.get("x-filename-b64").unwrap()).unwrap())
|
std::str::from_utf8(&base64::decode(headers.get("x-filename-b64").unwrap()).unwrap())
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|||||||
@@ -19,28 +19,15 @@ async fn _make_request<T>(
|
|||||||
where
|
where
|
||||||
T: DeserializeOwned,
|
T: DeserializeOwned,
|
||||||
{
|
{
|
||||||
let client = reqwest::Client::new();
|
let response = reqwest::Client::new()
|
||||||
let response = client
|
|
||||||
.get(format!("{}{}", &config::CONFIG.book_server_url, url))
|
.get(format!("{}{}", &config::CONFIG.book_server_url, url))
|
||||||
.query(¶ms)
|
.query(¶ms)
|
||||||
.header("Authorization", &config::CONFIG.book_server_api_key)
|
.header("Authorization", &config::CONFIG.book_server_api_key)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?
|
||||||
|
.error_for_status()?;
|
||||||
|
|
||||||
let response = match response {
|
Ok(response.json::<T>().await?)
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
let response = match response.error_for_status() {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
match response.json::<T>().await {
|
|
||||||
Ok(v) => Ok(v),
|
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_random_book_by_genre(
|
pub async fn get_random_book_by_genre(
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ pub struct UserSettings {
|
|||||||
pub async fn get_user_settings(
|
pub async fn get_user_settings(
|
||||||
user_id: UserId,
|
user_id: UserId,
|
||||||
) -> Result<UserSettings, Box<dyn std::error::Error + Send + Sync>> {
|
) -> Result<UserSettings, Box<dyn std::error::Error + Send + Sync>> {
|
||||||
let client = reqwest::Client::new();
|
let response = reqwest::Client::new()
|
||||||
let response = client
|
|
||||||
.get(format!(
|
.get(format!(
|
||||||
"{}/users/{}",
|
"{}/users/{}",
|
||||||
&config::CONFIG.user_settings_url,
|
&config::CONFIG.user_settings_url,
|
||||||
@@ -33,22 +32,10 @@ pub async fn get_user_settings(
|
|||||||
))
|
))
|
||||||
.header("Authorization", &config::CONFIG.user_settings_api_key)
|
.header("Authorization", &config::CONFIG.user_settings_api_key)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?
|
||||||
|
.error_for_status()?;
|
||||||
|
|
||||||
let response = match response {
|
Ok(response.json::<UserSettings>().await?)
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
let response = match response.error_for_status() {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
match response.json::<UserSettings>().await {
|
|
||||||
Ok(v) => Ok(v),
|
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_user_or_default_lang_codes(user_id: UserId) -> Vec<String> {
|
pub async fn get_user_or_default_lang_codes(user_id: UserId) -> Vec<String> {
|
||||||
@@ -77,71 +64,37 @@ pub async fn create_or_update_user_settings(
|
|||||||
"allowed_langs": allowed_langs
|
"allowed_langs": allowed_langs
|
||||||
});
|
});
|
||||||
|
|
||||||
let client = reqwest::Client::new();
|
let response = reqwest::Client::new()
|
||||||
let response = client
|
|
||||||
.post(format!("{}/users/", &config::CONFIG.user_settings_url))
|
.post(format!("{}/users/", &config::CONFIG.user_settings_url))
|
||||||
.body(body.to_string())
|
.body(body.to_string())
|
||||||
.header("Authorization", &config::CONFIG.user_settings_api_key)
|
.header("Authorization", &config::CONFIG.user_settings_api_key)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?
|
||||||
|
.error_for_status()?;
|
||||||
|
|
||||||
let response = match response {
|
Ok(response.json::<UserSettings>().await?)
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
let response = match response.error_for_status() {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
match response.json::<UserSettings>().await {
|
|
||||||
Ok(v) => Ok(v),
|
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_langs() -> Result<Vec<Lang>, Box<dyn std::error::Error + Send + Sync>> {
|
pub async fn get_langs() -> Result<Vec<Lang>, Box<dyn std::error::Error + Send + Sync>> {
|
||||||
let client = reqwest::Client::new();
|
let response = reqwest::Client::new()
|
||||||
let response = client
|
|
||||||
.get(format!("{}/languages/", &config::CONFIG.user_settings_url))
|
.get(format!("{}/languages/", &config::CONFIG.user_settings_url))
|
||||||
.header("Authorization", &config::CONFIG.user_settings_api_key)
|
.header("Authorization", &config::CONFIG.user_settings_api_key)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?
|
||||||
|
.error_for_status()?;
|
||||||
|
|
||||||
let response = match response {
|
Ok(response.json::<Vec<Lang>>().await?)
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
let response = match response.error_for_status() {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
match response.json::<Vec<Lang>>().await {
|
|
||||||
Ok(v) => Ok(v),
|
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn update_user_activity(
|
pub async fn update_user_activity(
|
||||||
user_id: UserId,
|
user_id: UserId,
|
||||||
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||||
let client = reqwest::Client::new();
|
reqwest::Client::new()
|
||||||
let response = client
|
|
||||||
.post(format!("{}/users/{user_id}/update_activity", &config::CONFIG.user_settings_url))
|
.post(format!("{}/users/{user_id}/update_activity", &config::CONFIG.user_settings_url))
|
||||||
.header("Authorization", &config::CONFIG.user_settings_api_key)
|
.header("Authorization", &config::CONFIG.user_settings_api_key)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?
|
||||||
|
.error_for_status()?;
|
||||||
|
|
||||||
let response = match response {
|
Ok(())
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => return Err(Box::new(err)),
|
|
||||||
};
|
|
||||||
|
|
||||||
match response.error_for_status() {
|
|
||||||
Ok(_) => Ok(()),
|
|
||||||
Err(err) => Err(Box::new(err)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,12 +23,10 @@ pub async fn message_handler(
|
|||||||
register::RegisterStatus::RegisterFail => strings::ALREADY_REGISTERED.to_string(),
|
register::RegisterStatus::RegisterFail => strings::ALREADY_REGISTERED.to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
#[allow(unused_must_use)]
|
|
||||||
{
|
bot.send_message(message.chat.id, message_text)
|
||||||
bot.send_message(message.chat.id, message_text)
|
.reply_to_message_id(message.id)
|
||||||
.reply_to_message_id(message.id)
|
.await?;
|
||||||
.await;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
use std::error::Error;
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use teloxide::prelude::*;
|
use teloxide::prelude::*;
|
||||||
@@ -20,7 +22,7 @@ async fn get_bot_username(token: &str) -> Option<String> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn make_register_request(user_id: UserId, username: &str, token: &str) -> Result<(), ()> {
|
async fn make_register_request(user_id: UserId, username: &str, token: &str) -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||||
let user_id = &user_id.to_string();
|
let user_id = &user_id.to_string();
|
||||||
|
|
||||||
let data = HashMap::from([
|
let data = HashMap::from([
|
||||||
@@ -31,24 +33,12 @@ async fn make_register_request(user_id: UserId, username: &str, token: &str) ->
|
|||||||
("cache", "no_cache")
|
("cache", "no_cache")
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let client = reqwest::Client::new();
|
reqwest::Client::new()
|
||||||
let response = client
|
|
||||||
.post(config::CONFIG.manager_url.clone())
|
.post(config::CONFIG.manager_url.clone())
|
||||||
.header("Authorization", config::CONFIG.manager_api_key.clone())
|
.header("Authorization", config::CONFIG.manager_api_key.clone())
|
||||||
.json(&data)
|
.json(&data)
|
||||||
.send()
|
.send()
|
||||||
.await;
|
.await?;
|
||||||
|
|
||||||
let status_code = match response {
|
|
||||||
Ok(v) => v.status(),
|
|
||||||
Err(_) => return Err(()),
|
|
||||||
};
|
|
||||||
|
|
||||||
log::debug!("make_register_request status_code={}", status_code);
|
|
||||||
|
|
||||||
if status_code != 200 {
|
|
||||||
return Err(());
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user