Compare commits

..

No commits in common. "9a64001926a79e2639cb31269889921f2b53cc6c" and "e52d6042a37068f1b7e6a08f7bfd6a43856ebe7e" have entirely different histories.

12 changed files with 37 additions and 38 deletions

View File

@ -1,10 +1,10 @@
<code>/mute [ID | REPLY] &lt;DURATION&gt; [TIME METRIC]</code> <code>/mute [ID | REPLY] &lt;DURATION: i64 (long long int)&gt; [TIME METRIC]</code>
<b>Выдать мут участнику чата.</b> <b>Обязательные критерий:</b>
Использовать при ответе на сообщение или указать <code>ID</code> пользователя. <b><em>1. Участник чата</em></b>. Введите ID участника чата, либо ответьте на его сообщение, чтобы его замьютить;
<b><em>2. Длительность</em></b>. Введите длительность мьюта, длительность должна быть не меньше нуля.
<i>DURATION<i> - длительность мута. <b>Необязательные критерий:</b>
<i>TIME METRIC<i> - метрика времени в секундах, минутах, часах и днях ([s|min|h|d|w|m]/[с|мин|ч|д|н|м]); по умолчанию используются дни.
Доступно для пользователей с административными привилегиями в чате. <b><em>1. Временная метрика.</em></b> Если она не указана, то автоматически участнику чата выдаётся мьют в днях.

View File

@ -1,7 +1,6 @@
<code>/unmute [ID | UNMUTE]</code> <code>/unmute [ID | REPLY]</code>
<b>Снять мут с участника чата.</b> <b>Обязательные критерий:</b>
Использовать при ответе на сообщение или указать <code>ID</code> пользователя. <b><em>1. Участник чата</em></b>. Введите ID участника чата, либо ответьте на его сообщение, чтобы c него снять мьют.
Доступно для пользователей с административными привилегиями в чате.

View File

@ -25,7 +25,7 @@ pub async fn ban_member(
Some(id) => id, Some(id) => id,
None => { None => {
sender_builder sender_builder
.text("ban: нет ответа на сообщение пользователя.") .text("Ответьте на сообщение участника чата, которого вы хотите забанить")
.reply_to(message.id()) .reply_to(message.id())
.build() .build()
.send(&bot) .send(&bot)
@ -40,7 +40,7 @@ pub async fn ban_member(
let callback = || async { ban_chat_member(&bot, user_id, chat_id).await }; let callback = || async { ban_chat_member(&bot, user_id, chat_id).await };
let demote_args: (&Bot, i64, i64) = (&bot, user_id, chat_id); let demote_args: (&Bot, i64, i64) = (&bot, user_id, chat_id);
sender_builder sender_builder
.set_text("ban: невозможно забанить пользователя."); .set_text("Невозможно забанить участника чата, демотните своими силами и попробуйте снова");
if try_restrict(callback, demote_args, sender_builder.clone().build()) if try_restrict(callback, demote_args, sender_builder.clone().build())
.await .await
@ -53,7 +53,7 @@ pub async fn ban_member(
sender_builder sender_builder
.reply_to(message.id()) .reply_to(message.id())
.text(format!("ban: пользователь {} забанен.", banned_user_name)) .text(format!("Пользователь {} забанен.", banned_user_name))
.build() .build()
.send(&bot) .send(&bot)
.await?; .await?;

View File

@ -29,7 +29,7 @@ pub async fn mute_member(
Some(id) => id, Some(id) => id,
None => { None => {
sender_builder sender_builder
.text("mute: нет ответа на сообщение пользователя.") .text("Ответьте на сообщение участника чата, которого вы хотите замьютить")
.reply_to(message.id()) .reply_to(message.id())
.build() .build()
.send(&bot) .send(&bot)
@ -46,7 +46,7 @@ pub async fn mute_member(
let callback = || async { restrict(&bot, user_id, unmute_date, chat_id).await }; let callback = || async { restrict(&bot, user_id, unmute_date, chat_id).await };
sender_builder.set_text("mute: невозможно выдать мут."); sender_builder.set_text("Невозможно замьютить участника чата, демотните и попробуйте снова");
if try_restrict(callback, demote_args, sender_builder.clone().build()) if try_restrict(callback, demote_args, sender_builder.clone().build())
.await .await
@ -60,7 +60,7 @@ pub async fn mute_member(
sender_builder sender_builder
.reply_to(message.id()) .reply_to(message.id())
.text(format!( .text(format!(
"mute: пользователю {} выдан мут на {:?} {}.", "Пользователь {} замьючен на {:?} {}.",
muted_user_name, mute_duration, postfix muted_user_name, mute_duration, postfix
)) ))
.build() .build()

View File

@ -29,7 +29,7 @@ pub async fn unmute_member(
if let Err(error) = bot.send(bot_action).await { if let Err(error) = bot.send(bot_action).await {
sender_builder sender_builder
.text(format!( .text(format!(
"unmute: невозможно снять мут с пользователя: {error:?}" "Невозможно снять мьют с участника чата по причине: {error:?}"
)) ))
.build() .build()
.send(&bot) .send(&bot)
@ -40,7 +40,7 @@ pub async fn unmute_member(
sender_builder sender_builder
.reply_to(message.id()) .reply_to(message.id())
.text(format!("unmute: пользователю {} удален мут.", muted_user_name)) .text(format!("С пользователя {} был снят мьют.", muted_user_name))
.build() .build()
.send(&bot) .send(&bot)
.await .await

View File

@ -7,18 +7,15 @@ use telers::{
use crate::types::structs::message_sender::MessageSender; use crate::types::structs::message_sender::MessageSender;
const HELP_TEXT: &str = "\ const HELP_TEXT: &str = "\
Команды:\n\ /help - помощь по боту.\n\
/unmute [ID] - снять мут с участника чата.\n\ /unmute - снимает с участника чата мьют, для подробностей, введите команду без аргументов \
/mute [ID] - выдать мут участнику чата.\n\ (только для админов).\n\
\n\ /mute - накладывает на участника чата мьют, для подробностей, введите команду без аргументов \
Для получения подробной помощи по командам использовать их без аргументов.\n\ (только для админов).\n\
\n\ 🎲 - выдаёт мут, для этого нужно отправить ТОЛЬКО эмодзи в ответ на сообщение участника. \
Эмодзи:\n\ чата, которого вы хотите замьютить (только для админов).\n\
Отправлять в чат в ответ на сообщение другого пользователя.\n\ 🎰 - выдаёт бан в случае джекпота, напротив, мьют, всё так же кидайте этот эмодзи в ответ \
\n\ на сообщение участника чата, которого вы хотите замьютить/забанить (только для админов).";
🎲 - мут участнику чата на рандомный интервал времени.\n\
🎰 - мут участнику чата на рандомный интервал времени; выпадание джекпота \
отправляет в бан.";
pub async fn help(bot: Bot, message: Message) -> HandlerResult { pub async fn help(bot: Bot, message: Message) -> HandlerResult {
MessageSender::builder(message.chat().id()) MessageSender::builder(message.chat().id())

View File

@ -36,7 +36,7 @@ pub async fn mute(bot: Bot, message: Message, command: CommandObject) -> Handler
TargetUser::Id(id) TargetUser::Id(id)
} else { } else {
handler_entity.message_sender_builder handler_entity.message_sender_builder
.text("mute: нет ответа на сообщение или не указано ID пользователя.") .text("Ответьте на сообщение или укажите первым аргументом ID человека, которого вы хотите замьютить")
.build() .build()
.send(&handler_entity.bot_instance) .send(&handler_entity.bot_instance)
.await?; .await?;
@ -59,7 +59,7 @@ pub async fn mute(bot: Bot, message: Message, command: CommandObject) -> Handler
handler_entity handler_entity
.message_sender_builder .message_sender_builder
.set_text("mute: не указана длительность (число)."); .set_text("Укажите число, характеризующее длительность мьюта.");
match args.get(duration_argument_position).cloned() { match args.get(duration_argument_position).cloned() {
Some(duration_str) => { Some(duration_str) => {

View File

@ -27,7 +27,7 @@ pub async fn unmute(bot: Bot, message: Message, command: CommandObject) -> Handl
Some(raw_id) => { Some(raw_id) => {
handler_entity handler_entity
.message_sender_builder .message_sender_builder
.set_text("unmute: ID пользователя не указан."); .set_text("Укажите id пользователя, с которого вы хотите снять мьют");
if let Ok(parsed_id) = raw_id.parse::<i64>() { if let Ok(parsed_id) = raw_id.parse::<i64>() {
let on_id: TargetUser = TargetUser::Id(parsed_id); let on_id: TargetUser = TargetUser::Id(parsed_id);

View File

@ -44,7 +44,7 @@ pub async fn dice_handler(bot: Bot, message: Message) -> HandlerResult {
_ => { _ => {
handler_entity handler_entity
.message_sender_builder .message_sender_builder
.text("Эмодзи не имеет привязанных действий.") .text("Такой эмодзи не имеет привязки к какому либо действию бота.")
.build() .build()
.send(&handler_entity.bot_instance) .send(&handler_entity.bot_instance)
.await?; .await?;

View File

@ -36,7 +36,7 @@ impl InnerMiddleware for AdminCheck {
} else { } else {
println!("lol"); println!("lol");
MessageSender::builder(chat_id) MessageSender::builder(chat_id)
.text("Недостаточно прав для использования данной команды.") .text("У ваc нет прав администратора, чтобы использовать эту команду.")
.build() .build()
.send(&bot) .send(&bot)
.await .await

View File

@ -21,7 +21,7 @@ impl TimeMetrics {
"w" | "weeks" | "week" | "недель" | "недели" | "неделя" | "н" => { "w" | "weeks" | "week" | "недель" | "недели" | "неделя" | "н" => {
Self::Weeks(duration) Self::Weeks(duration)
} }
"m" | "months" | "month" | "месяц" | "месяца" | "месяцев" | "мес" => { "m" | "mounths" | "mounth" | "месяц" | "месяца" | "месяцев" | "мес" => {
Self::Mounths(duration) Self::Mounths(duration)
} }
_ => Self::Days(duration), _ => Self::Days(duration),

View File

@ -5,8 +5,11 @@ use std::future::Future;
use super::demote::demote_user; use super::demote::demote_user;
const DEMOTE_FAILURE_MESSAGE: &str = "Команда не может быть выполнена: \ const DEMOTE_FAILURE_MESSAGE: &str = "\
не удалось удалить административные привилегии пользователя."; Нельзя выдать ограничение пользователю, т.к. невозможно демотнуть \
участника посредством бота, если ему выдан админ при помощи других \
админов или владельца чата.\
";
pub async fn try_restrict<F, R>( pub async fn try_restrict<F, R>(
future_callback: F, future_callback: F,