finalized the mute command #6

Merged
Muzifs merged 1 commits from updade/mute-command into master 2025-07-12 09:44:00 +00:00
2 changed files with 80 additions and 58 deletions

View File

@ -7,7 +7,7 @@
- [X] Команда /start
- [ ] Команда /help
- [ ] Команда /mute
- [X] Команда /mute
- [ ] Команда /unmute
- [X] Команда /ban
- [X] Команда /unban

View File

@ -39,14 +39,6 @@ def parse_mute_time(time_str: str) -> int:
except:
return None
# Число без указания единицы (по умолчанию минуты)
elif time_str.isdigit():
try:
minutes = int(time_str)
return abs(minutes) * 60
except:
return None
return None
# Возвращает причину мута
@ -159,13 +151,19 @@ def register_handlers(bot: AsyncTeleBot): # Регистрирует все об
return
# Случай №1 - Команда используется в ответ на сообщение
if len(parts_msg) >= 2:
# Если одно слово, то удаляем сообщение. Ошибка
if len(parts_msg) == 1:
await asyncio.sleep(3)
await bot.delete_message(message.chat.id, message.message_id)
return
# Если мутят в теме
# Если два слово, то ответом на сообщение
elif len(parts_msg) == 2:
# Если это тема
if message.is_topic_message:
# Если без ответа на сообщение
# Если без ответа на сообщение, ошибка
if message.message_thread_id == message.reply_to_message.message_id:
await asyncio.sleep(3)
await bot.delete_message(message.chat.id, message.message_id)
@ -177,24 +175,27 @@ def register_handlers(bot: AsyncTeleBot): # Регистрирует все об
time_arg = parts_msg[1]
reason = extract_reason(parts_msg[2:])
# Если мутят в обычном чате
# Если это обычный чат
elif message.reply_to_message and message.is_topic_message is None:
target_user = message.reply_to_message.from_user
time_arg = parts_msg[1]
reason = extract_reason(parts_msg[2:])
# Не выводим сообщение, что команда неправильная
# Удаляем сообщение, если команда неправильная
else:
await asyncio.sleep(3)
await bot.delete_message(message.chat.id, message.message_id)
return
# Случай №2 - Команда через тег или ID
elif len(parts_msg) >= 3:
else:
# Если второе слово это тег или ID
if parts_msg[1].strip().isdigit() or parts_msg[1].startswith('@'):
identifier = parts_msg[1].strip()
time_arg = parts_msg[2]
reason = extract_reason(parts_msg[3:])
print(identifier)
# Поиск по ID
if identifier.isdigit():
@ -226,13 +227,34 @@ def register_handlers(bot: AsyncTeleBot): # Регистрирует все об
is_bot=False
)
# Если команда неправильная
else:
# Если это тема
if message.is_topic_message:
# Если без ответа на сообщение, ошибка
if message.message_thread_id == message.reply_to_message.message_id:
await asyncio.sleep(3)
await bot.delete_message(message.chat.id, message.message_id)
return
print(reason)
# Если с ответом на сообщение
else:
target_user = message.reply_to_message.from_user
time_arg = parts_msg[1]
reason = extract_reason(parts_msg[2:])
# Если это обычный чат
elif message.reply_to_message and message.is_topic_message is None:
target_user = message.reply_to_message.from_user
time_arg = parts_msg[1]
reason = extract_reason(parts_msg[2:])
# Удаляем сообщение, если команда неправильная
else:
await asyncio.sleep(3)
await bot.delete_message(message.chat.id, message.message_id)
return
# Если пользователь не найден
if not target_user: