From f286575ba65cf2c9170c82f6c385bca4b8a4f4d3 Mon Sep 17 00:00:00 2001 From: doryan04 Date: Fri, 16 Feb 2024 00:13:25 +0400 Subject: [PATCH] added democracy stickers --- src/ban.rs | 8 ++++++-- src/main.rs | 29 ++++++++++++++++------------- src/mute.rs | 12 +++++++++--- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/ban.rs b/src/ban.rs index 3f0a7f6..242ee62 100644 --- a/src/ban.rs +++ b/src/ban.rs @@ -1,7 +1,7 @@ pub mod ban{ use teloxide::Bot; use teloxide::requests::Requester; - use teloxide::types::{ChatId, Message, MessageKind}; + use teloxide::types::{ChatId, InputFile, Message, MessageKind}; pub async fn ban_user( replied_message: Option<&Message>, @@ -32,7 +32,7 @@ pub mod ban{ Ok(_) => { bot.send_message( chat_id, - format!("Пользователь {} был заблокирован по причине {}.\ + format!("Пользователь {} был заблокирован по причине: \"{}\".\ \n Совершился 🇺🇸🦅🦅📞📞📞🎺🇺🇸🦅🦅📞📞📞🎺 ⚠️⚠️⚠️DEMOCRATION \ ALERT⚠️⚠️⚠️🇺🇸🦅🦅📞📞📞🎺🇺🇸🦅🦅📞📞📞🎺USA🇺🇸🦅🦅📞🇺🇸🦅🦅📞🇺🇸🦅🦅📞\ 📞📞🎺🇺🇸🦅🦅📞📞📞🎺 ⚠️⚠️⚠️DEMOCRATION ALERT⚠️⚠️⚠️🇺🇸🦅🦅📞📞📞🎺🇺🇸🦅🦅\ @@ -43,6 +43,10 @@ pub mod ban{ reason.unwrap() ) ).await.unwrap(); + bot.send_sticker( + chat_id, + InputFile::file_id("CAACAgIAAxkBAAEpgPdlzmgotYp4CID3H4LjT7yLpboESQAC-UcAAt-sWUnzukc95MLxuTQE") + ).await; Ok("Демократия была совершена".to_string()) } Err(error) => { diff --git a/src/main.rs b/src/main.rs index c02318a..0376a2e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,7 @@ mod mute; mod unmute; mod is_admin; +use std::ops::Deref; use teloxide::prelude::*; use crate::ban::ban::ban_user; use crate::mute::mute::mute_user; @@ -17,12 +18,12 @@ async fn main() { let bot = Bot::new("6941223962:AAG4SVKKlUOPlgJTINLfxtD09duB_YSkHOw".to_string()); - Command::repl(bot, callback).await; + Commands::repl(bot, callback).await; } -#[derive(BotCommands, Clone)] +#[derive(BotCommands, Clone, Debug)] #[command(rename_rule = "lowercase", description = "Поддерживаемые команды:")] -enum Command { +enum Commands { #[command(description = "Команда для отображения инструкции")] Help, #[command(description = "Снимается мьют.")] @@ -31,20 +32,21 @@ enum Command { 1. Сделать реплай на сообщение человека, которого вы хотите забанить; \ 2. Указать причину бана." )] - NurgbergsCongress(String), + Tribunal(String), #[command(description = "Мьют человека. Для этого необходимо \ 1. Сделать реплай на сообщение человека, которого вы хотите замьютить; \ - 2. Указать множитель мьюта." - )] - DemocracyMute(i64), + 2. Указатножитель мьюта.", + parse_with = "split")] + DemocracyMute(i64, String), } -async fn callback(bot: Bot, msg: Message, commands: Command) -> ResponseResult<()> { +async fn callback(bot: Bot, msg: Message, commands: Commands) -> ResponseResult<()> { + match commands { - Command::Help => { - bot.send_message(msg.chat.id, Command::descriptions().to_string()).await?; + Commands::Help => { + bot.send_message(msg.chat.id, Commands::descriptions().to_string()).await?; }, - Command::NurgbergsCongress(reason) => { + Commands::Tribunal(reason) => { if is_admin_check(&msg, &bot).await { let reason_result = if reason.is_empty() { None } else { Some(reason) }; let _ = ban_user( @@ -55,12 +57,13 @@ async fn callback(bot: Bot, msg: Message, commands: Command) -> ResponseResult<( ).await; } }, - Command::DemocracyMute(multiplier) => { + Commands::DemocracyMute(multiplier, reason) => { if let 1i64..=10i64 = multiplier{ if is_admin_check(&msg, &bot).await { let _ = mute_user( msg.reply_to_message(), multiplier, + reason.to_string(), &bot, msg.chat.id, ).await; @@ -83,7 +86,7 @@ async fn callback(bot: Bot, msg: Message, commands: Command) -> ResponseResult<( выберите множитель из промежутка [1; 10]"); } } - Command::DemocracyUnmute => { + Commands::DemocracyUnmute => { if is_admin_check(&msg, &bot).await { let _ = unmute( msg.reply_to_message(), diff --git a/src/mute.rs b/src/mute.rs index 306f36f..d671614 100644 --- a/src/mute.rs +++ b/src/mute.rs @@ -4,11 +4,12 @@ pub mod mute { use tokio::time::{sleep, Duration}; use chrono::{Duration as ChronoDuration, Local}; use teloxide::payloads::RestrictChatMemberSetters; - use teloxide::types::{ChatId, ChatPermissions, Message, MessageKind}; + use teloxide::types::{ChatId, ChatPermissions, InputFile, Message, MessageKind}; pub async fn mute_user( replied_message: Option<&Message>, multiplier: i64, + reason: String, bot: &Bot, chat_id: ChatId) -> Result { @@ -46,12 +47,17 @@ pub mod mute { Ok(_) => { bot.send_message( chat_id, - format!("На пользователя {} повесили железный зановес на {} часов", + format!("На пользователя {} повесили железный зановес на {} часов по причине \"{}\" ", user.first_name, - multiplier * dice_value + multiplier * dice_value, + reason ) ).await .unwrap(); + bot.send_sticker( + chat_id, + InputFile::file_id("CAACAgIAAxkBAAEpgP1lzmlmReALF20lHlRRGRvQ_SSCDAACqjwAAiIpSUkOv2XNIRmlYTQE") + ).await; Ok("Демократия была совершена".to_string()) } Err(error) => {