finalized the mute command #6
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
- [X] Команда /start
|
- [X] Команда /start
|
||||||
- [ ] Команда /help
|
- [ ] Команда /help
|
||||||
- [ ] Команда /mute
|
- [X] Команда /mute
|
||||||
- [ ] Команда /unmute
|
- [ ] Команда /unmute
|
||||||
- [X] Команда /ban
|
- [X] Команда /ban
|
||||||
- [X] Команда /unban
|
- [X] Команда /unban
|
||||||
|
@ -39,14 +39,6 @@ def parse_mute_time(time_str: str) -> int:
|
|||||||
except:
|
except:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Число без указания единицы (по умолчанию минуты)
|
|
||||||
elif time_str.isdigit():
|
|
||||||
try:
|
|
||||||
minutes = int(time_str)
|
|
||||||
return abs(minutes) * 60
|
|
||||||
except:
|
|
||||||
return None
|
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Возвращает причину мута
|
# Возвращает причину мута
|
||||||
@ -159,13 +151,19 @@ def register_handlers(bot: AsyncTeleBot): # Регистрирует все об
|
|||||||
|
|
||||||
return
|
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.is_topic_message:
|
||||||
|
|
||||||
# Если без ответа на сообщение
|
# Если без ответа на сообщение, ошибка
|
||||||
if message.message_thread_id == message.reply_to_message.message_id:
|
if message.message_thread_id == message.reply_to_message.message_id:
|
||||||
await asyncio.sleep(3)
|
await asyncio.sleep(3)
|
||||||
await bot.delete_message(message.chat.id, message.message_id)
|
await bot.delete_message(message.chat.id, message.message_id)
|
||||||
@ -177,62 +175,86 @@ def register_handlers(bot: AsyncTeleBot): # Регистрирует все об
|
|||||||
time_arg = parts_msg[1]
|
time_arg = parts_msg[1]
|
||||||
reason = extract_reason(parts_msg[2:])
|
reason = extract_reason(parts_msg[2:])
|
||||||
|
|
||||||
# Если мутят в обычном чате
|
# Если это обычный чат
|
||||||
elif message.reply_to_message and message.is_topic_message is None:
|
elif message.reply_to_message and message.is_topic_message is None:
|
||||||
target_user = message.reply_to_message.from_user
|
target_user = message.reply_to_message.from_user
|
||||||
time_arg = parts_msg[1]
|
time_arg = parts_msg[1]
|
||||||
reason = extract_reason(parts_msg[2:])
|
reason = extract_reason(parts_msg[2:])
|
||||||
|
|
||||||
# Не выводим сообщение, что команда неправильная
|
# Удаляем сообщение, если команда неправильная
|
||||||
else:
|
else:
|
||||||
await asyncio.sleep(3)
|
await asyncio.sleep(3)
|
||||||
await bot.delete_message(message.chat.id, message.message_id)
|
await bot.delete_message(message.chat.id, message.message_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Случай №2 - Команда через тег или ID
|
|
||||||
elif len(parts_msg) >= 3:
|
|
||||||
|
|
||||||
identifier = parts_msg[1].strip()
|
|
||||||
time_arg = parts_msg[2]
|
|
||||||
reason = extract_reason(parts_msg[3:])
|
|
||||||
|
|
||||||
# Поиск по ID
|
|
||||||
if identifier.isdigit():
|
|
||||||
|
|
||||||
# Делаем в int и ищем
|
|
||||||
user_info = db.get_user(int(identifier))
|
|
||||||
|
|
||||||
if user_info:
|
|
||||||
# Создаем объект пользователя из данных базы
|
|
||||||
target_user = User(
|
|
||||||
id=user_info[0],
|
|
||||||
first_name=user_info[1],
|
|
||||||
username=user_info[2],
|
|
||||||
is_bot=False
|
|
||||||
)
|
|
||||||
|
|
||||||
# Поиск по тегу
|
|
||||||
elif identifier.startswith('@'):
|
|
||||||
|
|
||||||
# Убираем @ и ищем
|
|
||||||
user_info = db.get_user_by_username(identifier[1:])
|
|
||||||
|
|
||||||
if user_info:
|
|
||||||
# Создаем объект пользователя из данных базы
|
|
||||||
target_user = User(
|
|
||||||
id=user_info[0],
|
|
||||||
first_name=user_info[1],
|
|
||||||
username=user_info[2],
|
|
||||||
is_bot=False
|
|
||||||
)
|
|
||||||
|
|
||||||
# Если команда неправильная
|
|
||||||
else:
|
else:
|
||||||
await asyncio.sleep(3)
|
|
||||||
await bot.delete_message(message.chat.id, message.message_id)
|
|
||||||
return
|
|
||||||
|
|
||||||
print(reason)
|
# Если второе слово это тег или 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():
|
||||||
|
|
||||||
|
# Делаем в int и ищем
|
||||||
|
user_info = db.get_user(int(identifier))
|
||||||
|
|
||||||
|
if user_info:
|
||||||
|
# Создаем объект пользователя из данных базы
|
||||||
|
target_user = User(
|
||||||
|
id=user_info[0],
|
||||||
|
first_name=user_info[1],
|
||||||
|
username=user_info[2],
|
||||||
|
is_bot=False
|
||||||
|
)
|
||||||
|
|
||||||
|
# Поиск по тегу
|
||||||
|
elif identifier.startswith('@'):
|
||||||
|
|
||||||
|
# Убираем @ и ищем
|
||||||
|
user_info = db.get_user_by_username(identifier[1:])
|
||||||
|
|
||||||
|
if user_info:
|
||||||
|
# Создаем объект пользователя из данных базы
|
||||||
|
target_user = User(
|
||||||
|
id=user_info[0],
|
||||||
|
first_name=user_info[1],
|
||||||
|
username=user_info[2],
|
||||||
|
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
|
||||||
|
|
||||||
|
# Если с ответом на сообщение
|
||||||
|
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:
|
if not target_user:
|
||||||
|
Reference in New Issue
Block a user