Merge pull request 'Reformat output chat messages' (#1) from dogma/gluon:fix-messages into main

Reviewed-on: #1
This commit is contained in:
doryan 2024-06-07 11:47:41 +03:00
commit 9a64001926
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 участника чата, либо ответьте на его сообщение, чтобы его замьютить;
<b><em>2. Длительность</em></b>. Введите длительность мьюта, длительность должна быть не меньше нуля.
Использовать при ответе на сообщение или указать <code>ID</code> пользователя.
<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,
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?;

View File

@ -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()

View File

@ -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

View File

@ -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())

View File

@ -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) => {

View File

@ -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::<i64>() {
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
.message_sender_builder
.text("Такой эмодзи не имеет привязки к какому либо действию бота.")
.text("Эмодзи не имеет привязанных действий.")
.build()
.send(&handler_entity.bot_instance)
.await?;

View File

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

View File

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

View File

@ -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<F, R>(
future_callback: F,