diff --git a/olgram/settings.py b/olgram/settings.py index 53761f4..1b30b34 100644 --- a/olgram/settings.py +++ b/olgram/settings.py @@ -2,8 +2,10 @@ from dotenv import load_dotenv from abc import ABC import os import logging -from olgram.utils.crypto import Cryptor from functools import lru_cache +from datetime import timedelta +import typing as ty +from olgram.utils.crypto import Cryptor load_dotenv() @@ -84,7 +86,13 @@ class ServerSettings(AbstractSettings): def append_text(cls) -> str: return "\n\nЭтот бот создан с помощью @OlgramBot" - logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO")) + @classmethod + @lru_cache + def redis_timeout_ms(cls) -> ty.Optional[int]: + return int(timedelta(days=14).total_seconds() * 1000.0) + + +logging.basicConfig(level=os.environ.get("LOGLEVEL", "WARNING")) class BotSettings(AbstractSettings): diff --git a/server/custom.py b/server/custom.py index 540014b..b3dc473 100644 --- a/server/custom.py +++ b/server/custom.py @@ -52,7 +52,8 @@ async def message_handler(message: types.Message, *args, **kwargs): # сообщение нужно переслать в супер-чат new_message = await message.forward(super_chat_id) - await _redis.set(_message_unique_id(bot.pk, new_message.message_id), message.chat.id) + await _redis.set(_message_unique_id(bot.pk, new_message.message_id), message.chat.id, + pexpire=ServerSettings.redis_timeout_ms()) # И отправить пользователю специальный текст, если он указан if bot.second_text: @@ -67,7 +68,8 @@ async def message_handler(message: types.Message, *args, **kwargs): chat_id = message.reply_to_message.forward_from_chat if not chat_id: return SendMessage(chat_id=message.chat.id, - text="Невозможно переслать сообщение: автор не найден", + text="Невозможно переслать сообщение: автор не найден " + "(сообщение слишком старое?)", parse_mode="HTML") chat_id = int(chat_id)