Enhance bot functionality and refactor database interactions
- Added `ca-certificates` installation to Dockerfile for improved network security. - Updated health check command in Dockerfile to include better timeout handling. - Refactored `run_helper.py` to implement proper signal handling and logging during shutdown. - Transitioned database operations to an asynchronous model in `async_db.py`, improving performance and responsiveness. - Updated database schema to support new foreign key relationships and optimized indexing for better query performance. - Enhanced various bot handlers to utilize async database methods, improving overall efficiency and user experience. - Removed obsolete database and fix scripts to streamline the project structure.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from typing import Dict, Any
|
||||
import html
|
||||
from datetime import datetime
|
||||
|
||||
from aiogram import BaseMiddleware, types
|
||||
from aiogram.types import TelegramObject, Message, CallbackQuery
|
||||
@@ -26,12 +27,21 @@ class BlacklistMiddleware(BaseMiddleware):
|
||||
logger.info(f'Вызов BlacklistMiddleware для пользователя {user.username}')
|
||||
|
||||
# Используем асинхронную версию для предотвращения блокировки
|
||||
if await BotDB.check_user_in_blacklist_async(user_id=user.id):
|
||||
if await BotDB.check_user_in_blacklist(user.id):
|
||||
logger.info(f'BlacklistMiddleware результат для пользователя: {user.username} заблокирован!')
|
||||
user_info = await BotDB.get_blacklist_users_by_id_async(user.id)
|
||||
user_info = await BotDB.get_blacklist_users_by_id(user.id)
|
||||
# Экранируем потенциально проблемные символы
|
||||
reason = html.escape(str(user_info[2])) if user_info[2] else "Не указана"
|
||||
date_unban = html.escape(str(user_info[3])) if user_info[3] else "Не указана"
|
||||
reason = html.escape(str(user_info[1])) if user_info and user_info[1] else "Не указана"
|
||||
|
||||
# Преобразуем timestamp в человекочитаемый формат
|
||||
if user_info and user_info[2]:
|
||||
try:
|
||||
timestamp = int(user_info[2])
|
||||
date_unban = datetime.fromtimestamp(timestamp).strftime("%d-%m-%Y %H:%M")
|
||||
except (ValueError, TypeError):
|
||||
date_unban = "Не указана"
|
||||
else:
|
||||
date_unban = "Не указана"
|
||||
|
||||
# Отправляем сообщение в зависимости от типа события
|
||||
if isinstance(event, Message):
|
||||
|
||||
Reference in New Issue
Block a user