import asyncio from datetime import datetime, timezone, timedelta from telethon import TelegramClient from telethon.tl.types import UserStatusOnline, UserStatusOffline import utils.config from utils.logging_setup import configure_global_logging logger = configure_global_logging() config = utils.config # Список пользователей, которых отслеживаем async def check_status(client, username): try: entity = await client.get_entity(username) user_id = entity.id username = entity.username or '' user = await client.get_entity(user_id) status = user.status # 1. Получаем тип статуса status_type = type(status).__name__ logger.info(f"\nСледим за: {username} (ID: {user_id})") if status_type == 'UserStatusOffline': was_online_utc = status.was_online kiev_time = was_online_utc.astimezone(timezone(timedelta(hours=3))) year, month, day = kiev_time.year, kiev_time.month, kiev_time.day hour, minute, second = kiev_time.hour, kiev_time.minute, kiev_time.second logger.info(f"Статус: {status_type}") logger.info(f"Последний онлайн (Киев): {year}-{month:02d}-{day:02d} {hour:02d}:{minute:02d}:{second:02d}") elif status_type == 'UserStatusOnline': logger.info(f"Статус: {status_type} — Сейчас онлайн") else: logger.info(f"Статус: {status_type} — Время скрыто или неизвестно") except Exception as e: logger.info(f"⚠️ Ошибка при проверке {username}: {e}") async def main(): async with TelegramClient('session', config.api_id, config.api_hash) as client: tasks = [check_status(client, username) for username in config.target_usernames] await asyncio.gather(*tasks) if __name__ == '__main__': asyncio.run(main())