import time import html from datetime import datetime from helper_bot.utils.base_dependency_factory import get_global_instance bdf = get_global_instance() BotDB = bdf.get_db() def last_message(): # функция с отображением сообщения "Последнее сообщение было записано" date_from_db = BotDB.last_date_audio() if date_from_db is None: return None parse_date = datetime.strptime(date_from_db, "%Y-%m-%d %H:%M:%S") last_voice_time_timestamp = time.mktime(parse_date.timetuple()) time_now_timestamp = time.time() date_difference = time_now_timestamp - last_voice_time_timestamp # считаем минуты, часы, дни much_minutes_ago = round(date_difference / 60, 0) much_hour_ago = round(date_difference / 3600, 0) much_days_ago = int(round(much_hour_ago / 24, 0)) message_with_date = '' if much_minutes_ago <= 60: word_minute = plural_time(1, much_minutes_ago) # Экранируем потенциально проблемные символы word_minute_escaped = html.escape(word_minute) message_with_date = f'Последнее сообщение было записано {word_minute_escaped} назад' elif much_minutes_ago > 60 and much_hour_ago <= 24: word_hour = plural_time(2, much_hour_ago) # Экранируем потенциально проблемные символы word_hour_escaped = html.escape(word_hour) message_with_date = f'Последнее сообщение было записано {word_hour_escaped} назад' elif much_hour_ago > 24: word_day = plural_time(3, much_days_ago) # Экранируем потенциально проблемные символы word_day_escaped = html.escape(word_day) message_with_date = f'Последнее сообщение было записано {word_day_escaped} назад' return message_with_date def plural_time(type, n): word = [] if type == 1: word = ['минуту', 'минуты', 'минут'] elif type == 2: word = ['час', 'часа', 'часов'] elif type == 3: word = ['день', 'дня', 'дней'] else: pass if n % 10 == 1 and n % 100 != 11: p = 0 elif 2 <= n % 10 <= 4 and (n % 100 < 10 or n % 100 >= 20): p = 1 else: p = 2 new_number = int(n) return str(new_number) + ' ' + word[p]