Compare commits
7 Commits
e52d6042a3
...
9a64001926
Author | SHA1 | Date | |
---|---|---|---|
doryan | 9a64001926 | ||
Dogma Toscarina | 2f0ae08d4f | ||
Dogma Toscarina | 06b3a473ed | ||
Dogma Toscarina | 6e59ee1eb8 | ||
Dogma Toscarina | 18b938bf95 | ||
Dogma Toscarina | 9f5174c442 | ||
Dogma Toscarina | c6222d42f8 |
|
@ -1,10 +1,10 @@
|
||||||
<code>/mute [ID | REPLY] <DURATION: i64 (long long int)> [TIME METRIC]</code>
|
<code>/mute [ID | REPLY] <DURATION> [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> Если она не указана, то автоматически участнику чата выдаётся мьют в днях.
|
Доступно для пользователей с административными привилегиями в чате.
|
||||||
|
|
|
@ -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> пользователя.
|
||||||
|
|
||||||
|
Доступно для пользователей с административными привилегиями в чате.
|
||||||
|
|
|
@ -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?;
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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) => {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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?;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue