Вывод id в логах заменен на вывод названия чата

parent 995b153d
......@@ -116,19 +116,36 @@ class TelegramLogHandler(logging.Handler):
self.chat_id = chat_id
async def send_log(self, message, chat_id):
await self.bot.send_message(chat_id, message)
"""Отправка лог-сообщения в Telegram."""
try:
await self.bot.send_message(chat_id, message)
except AiogramError as e:
logger.error(f"Failed to send log to chat: {e}", extra={"chat_id": self.chat_id})
async def get_chat_name(self, chat_id):
"""Получаем название чата асинхронно."""
try:
chat = await self.bot.get_chat(chat_id)
return chat.title # Название чата
except Exception as e:
logger.error(f"Error retrieving chat title: {e}", extra={"chat_id": chat_id})
return "Unknown Chat"
def emit(self, record):
"""Метод логирования, который будет обрабатывать сообщение и отправлять его в чат."""
log_message = self.format(record)
# Используем глобальный `log_chat_id` вместо получения его из extra
#log_message = f"Log Message: {log_message}"
chat_id = getattr(record, 'chat_id', self.chat_id)
log_message = f"Chat ID: {chat_id}\n{log_message}"
# Получаем chat_id из атрибутов записи (если он задан)
chat_id = getattr(record, 'chat_id', self.chat_id)
# Асинхронно запрашиваем название чата и отправляем лог
async def handle_log():
chat_name = await self.get_chat_name(chat_id)
log_message_with_chat_name = f"Chat: {chat_name}\n{log_message}"
await self.send_log(log_message_with_chat_name, self.chat_id)
loop = asyncio.get_event_loop()
loop.create_task(self.send_log(log_message, log_chat_id))
loop.create_task(handle_log())
# Настройка логирования
......@@ -432,4 +449,3 @@ async def main():
if __name__ == "__main__":
SPAM_KEYWORDS = preprocess_spam_keywords(SPAM_KEYWORDS, log_chat_id)
asyncio.run(main())
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment