Reformat output chat messages #1

Merged
doryan merged 6 commits from :fix-messages into main 2024-06-07 11:47:42 +03:00
12 changed files with 38 additions and 37 deletions

View File

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

View File

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

View File

@ -25,7 +25,7 @@ pub async fn ban_member(
Some(id) => id, Some(id) => id,
None => { None => {
sender_builder sender_builder
.text("Ответьте на сообщение участника чата, которого вы хотите забанить") .text("ban: нет ответа на сообщение пользователя.")
.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("Невозможно забанить участника чата, демотните своими силами и попробуйте снова"); .set_text("ban: невозможно забанить пользователя.");
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!("Пользователь {} забанен.", banned_user_name)) .text(format!("ban: пользователь {} забанен.", 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("Ответьте на сообщение участника чата, которого вы хотите замьютить") .text("mute: нет ответа на сообщение пользователя.")
.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("Невозможно замьютить участника чата, демотните и попробуйте снова"); sender_builder.set_text("mute: невозможно выдать мут.");
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!(
"Невозможно снять мьют с участника чата по причине: {error:?}" "unmute: невозможно снять мут с пользователя: {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!("С пользователя {} был снят мьют.", muted_user_name)) .text(format!("unmute: пользователю {} удален мут.", muted_user_name))
.build() .build()
.send(&bot) .send(&bot)
.await .await

View File

@ -7,15 +7,18 @@ use telers::{
use crate::types::structs::message_sender::MessageSender; use crate::types::structs::message_sender::MessageSender;
const HELP_TEXT: &str = "\ const HELP_TEXT: &str = "\
/help - помощь по боту.\n\ Команды:\n\
/unmute - снимает с участника чата мьют, для подробностей, введите команду без аргументов \ /unmute [ID] - снять мут с участника чата.\n\
(только для админов).\n\ /mute [ID] - выдать мут участнику чата.\n\
/mute - накладывает на участника чата мьют, для подробностей, введите команду без аргументов \ \n\
(только для админов).\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("Ответьте на сообщение или укажите первым аргументом ID человека, которого вы хотите замьютить") .text("mute: нет ответа на сообщение или не указано 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("Укажите число, характеризующее длительность мьюта."); .set_text("mute: не указана длительность (число).");
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("Укажите id пользователя, с которого вы хотите снять мьют"); .set_text("unmute: 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("У ваc нет прав администратора, чтобы использовать эту команду.") .text("Недостаточно прав для использования данной команды.")
.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" | "mounths" | "mounth" | "месяц" | "месяца" | "месяцев" | "мес" => { "m" | "months" | "month" | "месяц" | "месяца" | "месяцев" | "мес" => {
Self::Mounths(duration) Self::Mounths(duration)
} }
_ => Self::Days(duration), _ => Self::Days(duration),

View File

@ -5,11 +5,8 @@ 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,