Compare commits
	
		
			2 Commits
		
	
	
		
			c81a37f9ac
			...
			5f38f8c603
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5f38f8c603 | |||
| ed4bbacaf1 | 
| @@ -7,7 +7,7 @@ | ||||
|  | ||||
| - [X] Команда /start | ||||
| - [ ] Команда /help | ||||
| - [ ] Команда /mute | ||||
| - [X] Команда /mute | ||||
| - [ ] Команда /unmute | ||||
| - [X] Команда /ban | ||||
| - [X] Команда /unban | ||||
|   | ||||
| @@ -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,62 +175,86 @@ 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: | ||||
|  | ||||
|                 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: | ||||
|                 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: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user