doggy-watch/src/handle/moderator/remove.rs
shiroyashik 655e195c91
Some checks failed
Docker Push / docker (push) Has been cancelled
f*cking i am! f*cking i32!
2025-01-28 21:46:03 +03:00

51 lines
No EOL
2.3 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

use std::sync::Arc;
use sea_orm::EntityTrait;
use teloxide::prelude::*;
use crate::{markup, AppState, DialogueState, MyDialogue};
pub async fn command(bot: Bot, msg: Message, id: UserId, dialogue: MyDialogue, state: Arc<AppState>, uid: String) -> anyhow::Result<()> {
// add can_add_mods check
let moderator = database::moderators::Entity::find_by_id(id.0 as i64).one(&state.db).await?.ok_or(anyhow::anyhow!("Ошибка! Не модератор."))?;
if !moderator.can_add_mods {
bot.send_message(msg.chat.id, "Недостаточно прав!").await?;
return Ok(());
}
if uid.is_empty() {
bot.send_message(msg.chat.id, "После команды необходимо указать UID модератора. (/remmod 1234567)").await?;
} else {
bot.send_message(msg.chat.id, "Вы уверены что хотите удалить модератора?").reply_markup(markup::inline_yes_or_no()).await?;
dialogue.update(DialogueState::RemoveModeratorConfirm { uid }).await?;
}
Ok(())
}
/// Второй этап удаления модератора.
pub async fn inline(bot: Bot, q: CallbackQuery, state: Arc<AppState>, uid: String, dialogue: MyDialogue) -> anyhow::Result<()> {
use database::moderators::Entity;
bot.answer_callback_query(&q.id).await?;
if let Some(msg) = q.regular_message() {
if let Some(data) = q.clone().data {
let text= if &data == "yes" {
if let Ok(uid) = uid.parse::<u64>() {
if Entity::delete_by_id(uid as i64).exec(&state.db).await?.rows_affected != 0 {
"Модератор удалён!"
} else {
"Произошла ошибка!\nПо всей видимости такого модератора не существует."
}
} else {
"Ошибка! Это точно число?"
}
} else {
"Раскулачивание модера отменено."
};
bot.edit_message_text(msg.chat.id, msg.id, text).await?;
// else if let Some(id) = q.inline_message_id {
// bot.edit_message_text_inline(id, text).await?;
// }
}
}
dialogue.exit().await?;
Ok(())
}