mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 07:25:36 +01:00
Add bot registration limit
This commit is contained in:
@@ -22,8 +22,9 @@ pub async fn message_handler(
|
|||||||
|
|
||||||
let message_text = match result {
|
let message_text = match result {
|
||||||
register::RegisterStatus::Success { ref username } => format_registered_message(username),
|
register::RegisterStatus::Success { ref username } => format_registered_message(username),
|
||||||
register::RegisterStatus::WrongToken => strings::ERROR_MESSAGE.to_string(),
|
|
||||||
register::RegisterStatus::RegisterFail => strings::ALREADY_REGISTERED.to_string(),
|
register::RegisterStatus::RegisterFail => strings::ALREADY_REGISTERED.to_string(),
|
||||||
|
register::RegisterStatus::LimitExtended => strings::LIMIT_EXTENDED_MESSAGE.to_string(),
|
||||||
|
register::RegisterStatus::WrongToken => strings::ERROR_MESSAGE.to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
bot.send_message(message.chat.id, message_text)
|
bot.send_message(message.chat.id, message_text)
|
||||||
|
|||||||
@@ -11,6 +11,14 @@ pub enum RegisterStatus {
|
|||||||
Success { username: String },
|
Success { username: String },
|
||||||
WrongToken,
|
WrongToken,
|
||||||
RegisterFail,
|
RegisterFail,
|
||||||
|
LimitExtended,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum RegisterRequestStatus {
|
||||||
|
Success,
|
||||||
|
LimitExtended,
|
||||||
|
UnknownError { status_code: u16 },
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_bot_username(token: &str) -> Option<String> {
|
async fn get_bot_username(token: &str) -> Option<String> {
|
||||||
@@ -27,7 +35,7 @@ async fn make_register_request(
|
|||||||
user_id: UserId,
|
user_id: UserId,
|
||||||
username: &str,
|
username: &str,
|
||||||
token: &str,
|
token: &str,
|
||||||
) -> Result<(), Box<dyn Error + Send + Sync>> {
|
) -> Result<RegisterRequestStatus, Box<dyn Error + Send + Sync>> {
|
||||||
let body = json!({
|
let body = json!({
|
||||||
"token": token,
|
"token": token,
|
||||||
"user": user_id,
|
"user": user_id,
|
||||||
@@ -36,16 +44,19 @@ async fn make_register_request(
|
|||||||
"username": username,
|
"username": username,
|
||||||
});
|
});
|
||||||
|
|
||||||
reqwest::Client::new()
|
let result = reqwest::Client::new()
|
||||||
.post(config::CONFIG.manager_url.clone())
|
.post(config::CONFIG.manager_url.clone())
|
||||||
.body(body.to_string())
|
.body(body.to_string())
|
||||||
.header("Authorization", config::CONFIG.manager_api_key.clone())
|
.header("Authorization", config::CONFIG.manager_api_key.clone())
|
||||||
.header("Content-Type", "application/json")
|
.header("Content-Type", "application/json")
|
||||||
.send()
|
.send()
|
||||||
.await?
|
.await?;
|
||||||
.error_for_status()?;
|
|
||||||
|
|
||||||
Ok(())
|
Ok(match result.status().as_u16() {
|
||||||
|
200 => RegisterRequestStatus::Success,
|
||||||
|
402 => RegisterRequestStatus::LimitExtended,
|
||||||
|
status_code => RegisterRequestStatus::UnknownError { status_code },
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn register(user_id: UserId, message_text: &str) -> RegisterStatus {
|
pub async fn register(user_id: UserId, message_text: &str) -> RegisterStatus {
|
||||||
@@ -58,13 +69,20 @@ pub async fn register(user_id: UserId, message_text: &str) -> RegisterStatus {
|
|||||||
|
|
||||||
let register_request_status = make_register_request(user_id, &bot_username, token).await;
|
let register_request_status = make_register_request(user_id, &bot_username, token).await;
|
||||||
|
|
||||||
if let Err(err) = register_request_status {
|
let result = match register_request_status {
|
||||||
|
Ok(v) => v,
|
||||||
|
Err(err) => {
|
||||||
log::error!("Bot reg error: {:?}", err);
|
log::error!("Bot reg error: {:?}", err);
|
||||||
|
|
||||||
return RegisterStatus::RegisterFail;
|
return RegisterStatus::RegisterFail;
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
RegisterStatus::Success {
|
match result {
|
||||||
|
RegisterRequestStatus::Success => RegisterStatus::Success {
|
||||||
username: bot_username,
|
username: bot_username,
|
||||||
|
},
|
||||||
|
RegisterRequestStatus::LimitExtended => RegisterStatus::LimitExtended,
|
||||||
|
RegisterRequestStatus::UnknownError { .. } => RegisterStatus::RegisterFail,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,3 +8,5 @@ pub fn format_registered_message(username: &str) -> String {
|
|||||||
pub const ALREADY_REGISTERED: &str = "Ошибка! Возможно бот уже зарегистрирован!";
|
pub const ALREADY_REGISTERED: &str = "Ошибка! Возможно бот уже зарегистрирован!";
|
||||||
|
|
||||||
pub const ERROR_MESSAGE: &str = "Ошибка! Что-то не так с ботом!";
|
pub const ERROR_MESSAGE: &str = "Ошибка! Что-то не так с ботом!";
|
||||||
|
|
||||||
|
pub const LIMIT_EXTENDED_MESSAGE: &str = "Вы достигли максимального количества ботов!";
|
||||||
|
|||||||
Reference in New Issue
Block a user