From c6222d42f84839c627d655a899272b10149511a3 Mon Sep 17 00:00:00 2001 From: Dogma Toscarina Date: Fri, 7 Jun 2024 01:50:05 +0300 Subject: [PATCH 1/6] assets: fix help messages (mute, unmute) There are quite some problems with the way commands are explained: * Interactivity - command arguments gets explained as if one is following a guide ("insert this, enter that"). Better explain them without any "guidance"; use present tense to describe commands. * Duplicity - the purpose of the command is explained over and over when arguments are being described. * Separation - there is no need to divide required and optional command arguments into their respective sections. Their amount did not grow up that much for this to make sense. * mute_command_help.html: i64 would be sufficient for developers, but not end users. It does not stop anyone from specifying overflowing integer, after all. --- src/assets/mute_command_help.html | 12 ++++++------ src/assets/unmute_command_help.html | 7 ++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/assets/mute_command_help.html b/src/assets/mute_command_help.html index 783141a..11a2948 100644 --- a/src/assets/mute_command_help.html +++ b/src/assets/mute_command_help.html @@ -1,10 +1,10 @@ -/mute [ID | REPLY] <DURATION: i64 (long long int)> [TIME METRIC] +/mute [ID | REPLY] <DURATION> [TIME METRIC] -Обязательные критерий: +Выдать мут участнику чата. -1. Участник чата. Введите ID участника чата, либо ответьте на его сообщение, чтобы его замьютить; -2. Длительность. Введите длительность мьюта, длительность должна быть не меньше нуля. +Использовать при ответе на сообщение или указать ID пользователя. -Необязательные критерий: +DURATION - длительность мута. +TIME METRIC - метрика времени в секундах, минутах, часах и днях ([s|min|h|d|w|m]/[с|мин|ч|д|н|м]); по умолчанию используются дни. -1. Временная метрика. Если она не указана, то автоматически участнику чата выдаётся мьют в днях. +Доступно для пользователей с административными привилегиями в чате. diff --git a/src/assets/unmute_command_help.html b/src/assets/unmute_command_help.html index 90f97f3..5f14ceb 100644 --- a/src/assets/unmute_command_help.html +++ b/src/assets/unmute_command_help.html @@ -1,6 +1,7 @@ -/unmute [ID | REPLY] +/unmute [ID | UNMUTE] -Обязательные критерий: +Снять мут с участника чата. -1. Участник чата. Введите ID участника чата, либо ответьте на его сообщение, чтобы c него снять мьют. +Использовать при ответе на сообщение или указать ID пользователя. +Доступно для пользователей с административными привилегиями в чате. From 9f5174c442242b6b28bcdd5833a7b85d757d3574 Mon Sep 17 00:00:00 2001 From: Dogma Toscarina Date: Fri, 7 Jun 2024 02:13:26 +0300 Subject: [PATCH 2/6] types/enums/time_metrics: fix grammar --- src/types/enums/time_metrics.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/enums/time_metrics.rs b/src/types/enums/time_metrics.rs index 4fb5b1f..55ae75e 100644 --- a/src/types/enums/time_metrics.rs +++ b/src/types/enums/time_metrics.rs @@ -21,7 +21,7 @@ impl TimeMetrics { "w" | "weeks" | "week" | "недель" | "недели" | "неделя" | "н" => { Self::Weeks(duration) } - "m" | "mounths" | "mounth" | "месяц" | "месяца" | "месяцев" | "мес" => { + "m" | "months" | "month" | "месяц" | "месяца" | "месяцев" | "мес" => { Self::Mounths(duration) } _ => Self::Days(duration), From 18b938bf95b5b12aefeca9a2fe8a62877c75f8b9 Mon Sep 17 00:00:00 2001 From: Dogma Toscarina Date: Fri, 7 Jun 2024 02:14:52 +0300 Subject: [PATCH 3/6] handlers/dice_handler/dice: make message short and concise. --- src/handlers/dice_handler/dice.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/handlers/dice_handler/dice.rs b/src/handlers/dice_handler/dice.rs index ffaca08..2c7ed8f 100644 --- a/src/handlers/dice_handler/dice.rs +++ b/src/handlers/dice_handler/dice.rs @@ -44,7 +44,7 @@ pub async fn dice_handler(bot: Bot, message: Message) -> HandlerResult { _ => { handler_entity .message_sender_builder - .text("Такой эмодзи не имеет привязки к какому либо действию бота.") + .text("Эмодзи не имеет привязанных действий.") .build() .send(&handler_entity.bot_instance) .await?; From 6e59ee1eb8a83323fb4eeaf443f06d0e811e20c8 Mon Sep 17 00:00:00 2001 From: Dogma Toscarina Date: Fri, 7 Jun 2024 02:15:51 +0300 Subject: [PATCH 4/6] utils/telegram/try_do: shorten DEMOTE_FAILURE_MESSAGE It would be annoying to get this long message spamming the chat window. Such error messages should describe what has gone wrong, but not give any guidances, advices or directions; they belong elsewhere (documentation, wiki, etc). --- src/utils/telegram/try_do.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/utils/telegram/try_do.rs b/src/utils/telegram/try_do.rs index 11b704a..ca90bc3 100644 --- a/src/utils/telegram/try_do.rs +++ b/src/utils/telegram/try_do.rs @@ -5,11 +5,8 @@ use std::future::Future; use super::demote::demote_user; -const DEMOTE_FAILURE_MESSAGE: &str = "\ - Нельзя выдать ограничение пользователю, т.к. невозможно демотнуть \ - участника посредством бота, если ему выдан админ при помощи других \ - админов или владельца чата.\ - "; +const DEMOTE_FAILURE_MESSAGE: &str = "Команда не может быть выполнена: \ + не удалось удалить административные привилегии пользователя."; pub async fn try_restrict( future_callback: F, From 06b3a473ede58b8ace7c37084b4e4a30ed41b628 Mon Sep 17 00:00:00 2001 From: Dogma Toscarina Date: Fri, 7 Jun 2024 02:20:22 +0300 Subject: [PATCH 5/6] middlewares/admin_check_middleware: shorten error message --- src/middlewares/admin_check_middleware.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/middlewares/admin_check_middleware.rs b/src/middlewares/admin_check_middleware.rs index 806f633..ded6049 100644 --- a/src/middlewares/admin_check_middleware.rs +++ b/src/middlewares/admin_check_middleware.rs @@ -36,7 +36,7 @@ impl InnerMiddleware for AdminCheck { } else { println!("lol"); MessageSender::builder(chat_id) - .text("У ваc нет прав администратора, чтобы использовать эту команду.") + .text("Недостаточно прав для использования данной команды.") .build() .send(&bot) .await From 2f0ae08d4ff7d3cc5b4d4d64d50fb870857bb984 Mon Sep 17 00:00:00 2001 From: Dogma Toscarina Date: Fri, 7 Jun 2024 02:22:18 +0300 Subject: [PATCH 6/6] handlers/{actions,command_handlers}: reformat messages Avoid interactivity, make messages short. --- src/handlers/actions/ban.rs | 6 +++--- src/handlers/actions/mute.rs | 6 +++--- src/handlers/actions/unmute.rs | 4 ++-- src/handlers/command_handlers/help_command.rs | 21 +++++++++++-------- src/handlers/command_handlers/mute_command.rs | 4 ++-- .../command_handlers/unmute_command.rs | 2 +- 6 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/handlers/actions/ban.rs b/src/handlers/actions/ban.rs index 90916c3..dc482a4 100644 --- a/src/handlers/actions/ban.rs +++ b/src/handlers/actions/ban.rs @@ -25,7 +25,7 @@ pub async fn ban_member( Some(id) => id, None => { sender_builder - .text("Ответьте на сообщение участника чата, которого вы хотите забанить") + .text("ban: нет ответа на сообщение пользователя.") .reply_to(message.id()) .build() .send(&bot) @@ -40,7 +40,7 @@ pub async fn ban_member( let callback = || async { ban_chat_member(&bot, user_id, chat_id).await }; let demote_args: (&Bot, i64, i64) = (&bot, user_id, chat_id); sender_builder - .set_text("Невозможно забанить участника чата, демотните своими силами и попробуйте снова"); + .set_text("ban: невозможно забанить пользователя."); if try_restrict(callback, demote_args, sender_builder.clone().build()) .await @@ -53,7 +53,7 @@ pub async fn ban_member( sender_builder .reply_to(message.id()) - .text(format!("Пользователь {} забанен.", banned_user_name)) + .text(format!("ban: пользователь {} забанен.", banned_user_name)) .build() .send(&bot) .await?; diff --git a/src/handlers/actions/mute.rs b/src/handlers/actions/mute.rs index 2053c17..fad6260 100644 --- a/src/handlers/actions/mute.rs +++ b/src/handlers/actions/mute.rs @@ -29,7 +29,7 @@ pub async fn mute_member( Some(id) => id, None => { sender_builder - .text("Ответьте на сообщение участника чата, которого вы хотите замьютить") + .text("mute: нет ответа на сообщение пользователя.") .reply_to(message.id()) .build() .send(&bot) @@ -46,7 +46,7 @@ pub async fn mute_member( let callback = || async { restrict(&bot, user_id, unmute_date, chat_id).await }; - sender_builder.set_text("Невозможно замьютить участника чата, демотните и попробуйте снова"); + sender_builder.set_text("mute: невозможно выдать мут."); if try_restrict(callback, demote_args, sender_builder.clone().build()) .await @@ -60,7 +60,7 @@ pub async fn mute_member( sender_builder .reply_to(message.id()) .text(format!( - "Пользователь {} замьючен на {:?} {}.", + "mute: пользователю {} выдан мут на {:?} {}.", muted_user_name, mute_duration, postfix )) .build() diff --git a/src/handlers/actions/unmute.rs b/src/handlers/actions/unmute.rs index 91aff2b..668742c 100644 --- a/src/handlers/actions/unmute.rs +++ b/src/handlers/actions/unmute.rs @@ -29,7 +29,7 @@ pub async fn unmute_member( if let Err(error) = bot.send(bot_action).await { sender_builder .text(format!( - "Невозможно снять мьют с участника чата по причине: {error:?}" + "unmute: невозможно снять мут с пользователя: {error:?}" )) .build() .send(&bot) @@ -40,7 +40,7 @@ pub async fn unmute_member( sender_builder .reply_to(message.id()) - .text(format!("С пользователя {} был снят мьют.", muted_user_name)) + .text(format!("unmute: пользователю {} удален мут.", muted_user_name)) .build() .send(&bot) .await diff --git a/src/handlers/command_handlers/help_command.rs b/src/handlers/command_handlers/help_command.rs index c36489b..f3fd7b2 100644 --- a/src/handlers/command_handlers/help_command.rs +++ b/src/handlers/command_handlers/help_command.rs @@ -7,15 +7,18 @@ use telers::{ use crate::types::structs::message_sender::MessageSender; const HELP_TEXT: &str = "\ - /help - помощь по боту.\n\ - /unmute - снимает с участника чата мьют, для подробностей, введите команду без аргументов \ - (только для админов).\n\ - /mute - накладывает на участника чата мьют, для подробностей, введите команду без аргументов \ - (только для админов).\n\ - 🎲 - выдаёт мут, для этого нужно отправить ТОЛЬКО эмодзи в ответ на сообщение участника. \ - чата, которого вы хотите замьютить (только для админов).\n\ - 🎰 - выдаёт бан в случае джекпота, напротив, мьют, всё так же кидайте этот эмодзи в ответ \ - на сообщение участника чата, которого вы хотите замьютить/забанить (только для админов)."; + Команды:\n\ + /unmute [ID] - снять мут с участника чата.\n\ + /mute [ID] - выдать мут участнику чата.\n\ + \n\ + Для получения подробной помощи по командам использовать их без аргументов.\n\ + \n\ + Эмодзи:\n\ + Отправлять в чат в ответ на сообщение другого пользователя.\n\ + \n\ + 🎲 - мут участнику чата на рандомный интервал времени.\n\ + 🎰 - мут участнику чата на рандомный интервал времени; выпадание джекпота \ + отправляет в бан."; pub async fn help(bot: Bot, message: Message) -> HandlerResult { MessageSender::builder(message.chat().id()) diff --git a/src/handlers/command_handlers/mute_command.rs b/src/handlers/command_handlers/mute_command.rs index ba03ce4..35fdfb0 100644 --- a/src/handlers/command_handlers/mute_command.rs +++ b/src/handlers/command_handlers/mute_command.rs @@ -36,7 +36,7 @@ pub async fn mute(bot: Bot, message: Message, command: CommandObject) -> Handler TargetUser::Id(id) } else { handler_entity.message_sender_builder - .text("Ответьте на сообщение или укажите первым аргументом ID человека, которого вы хотите замьютить") + .text("mute: нет ответа на сообщение или не указано ID пользователя.") .build() .send(&handler_entity.bot_instance) .await?; @@ -59,7 +59,7 @@ pub async fn mute(bot: Bot, message: Message, command: CommandObject) -> Handler handler_entity .message_sender_builder - .set_text("Укажите число, характеризующее длительность мьюта."); + .set_text("mute: не указана длительность (число)."); match args.get(duration_argument_position).cloned() { Some(duration_str) => { diff --git a/src/handlers/command_handlers/unmute_command.rs b/src/handlers/command_handlers/unmute_command.rs index 3ee9e3c..ac21a1d 100644 --- a/src/handlers/command_handlers/unmute_command.rs +++ b/src/handlers/command_handlers/unmute_command.rs @@ -27,7 +27,7 @@ pub async fn unmute(bot: Bot, message: Message, command: CommandObject) -> Handl Some(raw_id) => { handler_entity .message_sender_builder - .set_text("Укажите id пользователя, с которого вы хотите снять мьют"); + .set_text("unmute: ID пользователя не указан."); if let Ok(parsed_id) = raw_id.parse::() { let on_id: TargetUser = TargetUser::Id(parsed_id);