Compare commits

..

No commits in common. "20b1e78aa3f753c5741088b6d4e50237c0268588" and "311187b6eb18a5ce1706a67e9abeecbda03be186" have entirely different histories.

9 changed files with 67 additions and 41 deletions

View File

@ -1,7 +1,5 @@
use telers::{
event::{telegram::HandlerResult, EventReturn},
methods::BanChatMember,
Bot,
event::{telegram::HandlerResult, EventReturn}, methods::BanChatMember, Bot
};
use tokio::time::{sleep, Duration as DurationSleep};
@ -27,7 +25,6 @@ pub async fn ban_member(
let user_id: i64 = user.get_id().unwrap();
let callback = || async { bot.send(BanChatMember::new(chat_id, user_id)).await };
let demote_args: (&Bot, i64, i64) = (&bot, user_id, chat_id);
sender_builder.set_text("Невозможно забанить пользователя.");

View File

@ -1,16 +1,19 @@
use telers::{event::telegram::HandlerResult, types::Message, Bot};
use crate::{
assets::files::{HELP_COMMAND_TEXT, PRIVACY_COMMAND_TEXT},
utils::telegram::senders::send_html,
use telers::{
event::telegram::HandlerResult,
types::Message,
Bot,
};
use crate::{
utils::telegram::senders::send_html,
assets::files::{HELP_COMMAND_TEXT, PRIVACY_COMMAND_TEXT}
};
#[inline]
pub async fn help(bot: Bot, msg: Message) -> HandlerResult {
send_html(bot, msg, HELP_COMMAND_TEXT).await
}
#[inline]
pub async fn privacy(bot: Bot, msg: Message) -> HandlerResult {
send_html(bot, msg, PRIVACY_COMMAND_TEXT).await
}

View File

@ -6,23 +6,37 @@ use telers::{
};
use crate::{
actions::unmute::unmute_member,
assets::files::UNMUTE_COMMAND_HELP,
actions::unmute::unmute_member,
types::{enums::target_user::TargetUser, structs::handler_entity::HandlerEntity},
utils::{
general::cast_boxed_array::cast_boxed,
telegram::{args_parsers::get_user, data_getters::get_chat_data, senders::send_html},
telegram::{
args_parsers::get_user,
data_getters::get_chat_data,
senders::send_html
},
},
};
pub async fn unmute(bot: Bot, message: Message, command: CommandObject) -> HandlerResult {
if command.args.len() == 0 {
send_html(bot, message, UNMUTE_COMMAND_HELP).await?;
return Ok(EventReturn::Cancel);
}
let (chat_id, mut handler_entity): (i64, HandlerEntity) = get_chat_data(&bot, &message);
let args: Vec<&'static str> = cast_boxed(command.args);
let target_user: TargetUser = get_user(handler_entity.clone(), args.first().copied(), &mut 0);
let target_user: TargetUser = get_user(
handler_entity.clone(),
args.first().copied(),
&mut 0,
);
if args.is_empty() && !target_user.exist() {
if args.is_empty() && !target_user.exist(){
send_html(bot, message, UNMUTE_COMMAND_HELP).await?;
return Ok(EventReturn::Cancel);
@ -36,3 +50,4 @@ pub async fn unmute(bot: Bot, message: Message, command: CommandObject) -> Handl
Ok(EventReturn::Finish)
}

View File

@ -1 +1 @@
pub mod dice_handler;
pub mod dice;

View File

@ -21,9 +21,9 @@ use endpoints::{
ban_command::ban,
info_commands::{help, privacy},
mute_command::mute,
unmute_command::unmute,
unmute_command::unmute
},
dice::dice_handler::dice_handler,
dice::dice::dice_handler,
};
#[cfg(debug_assertions)]
@ -46,16 +46,6 @@ fn logs() {
);
}
macro_rules! append_command {
($branch:expr, $($command:expr), *) => {
$($branch
.message
.register($command)
.filter(Command::one(stringify!($command)));
)*
}
}
#[tokio::main]
async fn main() {
logs();
@ -80,8 +70,30 @@ async fn main() {
let mut admin_commands = Router::new("admin_commands");
let mut default_commands = Router::new("default_commands");
append_command!(default_commands, help, privacy);
append_command!(admin_commands, unmute, mute, ban);
default_commands
.message
.register(help)
.filter(Command::one("help"));
default_commands
.message
.register(privacy)
.filter(Command::one("privacy"));
admin_commands
.message
.register(unmute)
.filter(Command::one("unmute"));
admin_commands
.message
.register(mute)
.filter(Command::one("mute"));
admin_commands
.message
.register(ban)
.filter(Command::one("ban"));
admin_commands
.message
@ -103,7 +115,7 @@ async fn main() {
.unwrap();
}
Err(error) => {
eprintln!("Error text: {:?}", error);
println!("Error text: {:?}", error);
}
}
}

View File

@ -27,7 +27,6 @@ impl TimeMetrics {
_ => Self::Days(duration),
}
}
pub fn extract(self) -> i64 {
match self {
Self::Minutes(min) => min,
@ -37,7 +36,6 @@ impl TimeMetrics {
Self::Mounths(mon) => mon,
}
}
pub fn get_word_declensions(self) -> (impl Into<String>, impl Into<String>, impl Into<String>) {
match self {
Self::Minutes(_) => ("минута", "минуты", "минут"),

View File

@ -1,6 +1,7 @@
use telers::types::chat_member::ChatMember;
pub fn is_admin(all_admin_members: &[ChatMember], user_id: i64) -> bool {
pub fn is_admin(all_admin_members: &Vec<ChatMember>, user_id: i64) -> bool {
//fix: moderators with non full rights can use admin commands now.
all_admin_members
.iter()
.any(|admin: &ChatMember| match admin {

View File

@ -3,7 +3,7 @@ use telers::{errors::SessionErrorKind as ErrorKind, event::EventReturn, types::C
use crate::types::structs::message_sender::MessageSender;
use std::future::Future;
use super::{admin_check::is_admin, data_getters::get_all_admins, rights_control::demote_user};
use super::{admin_check::is_admin, rights_control::demote_user, data_getters::get_all_admins};
const DEMOTE_FAILURE_MESSAGE: &str = "Команда не может быть выполнена: \
не удалось удалить административные привилегии пользователя.";