Загрузка...

Script Online tracker Telegram

Thread in Programming created by 88explicit Apr 29, 2025. 195 views

  1. 88explicit
    88explicit Topic starter Apr 29, 2025 10 Oct 31, 2022
    1. Отслеживание онлайн/офлайн человека Следить за указанным username (USERNAME_TO_TRACK)
    Когда человек в сети: Моментально шлёт сообщение " в сети" с временем.
    Когда человек выходит из сети:
    Моментально шлёт сообщение " вышел из сети"
    2. Запись всех сессий
    Каждую сессию (время входа и выхода) записывает в файл sessions.txt
    Формат строки:
    3. Отправка дневного отчёта в 00:00
    Считает общее время, сколько человек был в сети за день и отправляет короткий текстовый отчёт в чат бота:
    И дополнительно sessions.txt файл.
    1 раз в неделю тоже самое, недельный отчёт + txt.
    4. Работа в фоне 24/7
    Скрипт работает постоянно и проверяет статус человека каждые 10 секунд.

    • Планшет/телефон на Android (для Termux)
    • Установлен Termux
    • Аккаунт Telegram для скрипта (можно личный)
    • Созданный Telegram бот через BotFather
    Code
    pkg update && pkg upgrade
    pkg install python
    pkg install git
    pip install telethon pytz
    API_ID = ВАШ API ID (число)
    API_HASH = "ВАШ API HASH" (строка в кавычках)
    USERNAME_TO_TRACK = "Юзернейм человека" (строка с @ без кавычек)
    BOT_TOKEN = "Токен вашего бота" (строка в кавычках)
    CHAT_ID = Ваш чат ID (число)

    • API_ID и API_HASH:
    • Получаешь на сайте https://my.telegram.org (раздел API Development Tools).
    • USERNAME_TO_TRACK:
    • Берёшь у человека его renameduser_7185940 в Telegram.
    • BOT_TOKEN:
    • Создаёшь бота через BotFather и получаешь токен.
    • CHAT_ID:
    • Узнаешь свой ID с помощью любого бота, например, @userinfobot.
    API_ID = 1234567
    API_HASH = "abcdef1234567890abcdef1234567890"
    USERNAME_TO_TRACK = "exampleuser"
    BOT_TOKEN = "1234567890:ABCDEF1234567890ABCDEF1234567890ABCDEF"
    CHAT_ID = 123456789
    Code
    nano track_user_activity.py
    Туда нужно будет вставить код который будет ниже. Этапы выше должны заполнять сам скрипт.
    Code
    from telethon import TelegramClient, events
    import asyncio
    import pytz
    from datetime import datetime, timedelta
    import requests
    import os

    # --- ДАННЫЕ ДЛЯ НАСТРОЙКИ ---
    API_ID = ВАШ_API_ID
    API_HASH = "ВАШ_API_HASH"
    USERNAME_TO_TRACK = "USERNAME_ОТСЛЕЖИВАЕМОГО_ПОЛЬЗОВАТЕЛЯ"

    BOT_TOKEN = "ТОКЕН_ВАШЕГО_БОТА"
    CHAT_ID = ЧАТ_ИД_КУДА_ОТПРАВЛЯТЬ_ОТЧЁТЫ

    # --- Настройка времени (Франция) ---
    paris_tz = pytz.timezone('Europe/Paris')

    # --- Инициализация клиента ---
    client = TelegramClient('session_name', API_ID, API_HASH)

    # --- Переменные ---
    tracking = False
    session_start = None
    daily_online_seconds = 0
    weekly_online_seconds = 0

    # --- Функция отправки сообщения ---
    def send_telegram_message(text):
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    payload = {"chat_id": CHAT_ID, "text": text}
    requests.post(url, data=payload)

    # --- Функция форматирования времени ---
    def format_time(seconds):
    return str(timedelta(seconds=seconds))

    # --- Сохранение сессий в txt ---
    def save_session(start, end):
    with open("sessions.txt", "a") as f:
    f.write(f"Онлайн: {start} - Оффлайн: {end}\n")

    # --- Отправка txt файла и очистка ---
    def send_and_clear_sessions():
    if os.path.exists("sessions.txt"):
    with open("sessions.txt", "rb") as f:
    files = {'document': f}
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendDocument"
    data = {'chat_id': CHAT_ID}
    requests.post(url, files=files, data=data)
    os.remove("sessions.txt")

    # --- Главная логика ---
    async def main():
    global tracking, session_start, daily_online_seconds, weekly_online_seconds

    user = await client.get_entity(USERNAME_TO_TRACK)

    async def track():
    nonlocal tracking, session_start, daily_online_seconds, weekly_online_seconds
    while True:
    user_updated = await client.get_entity(user.id)
    now = datetime.now(paris_tz)

    if user_updated.status and user_updated.status.__class__.__name__ == "UserStatusOnline":
    if not tracking:
    tracking = True
    session_start = now.strftime("%Y-%m-%d %H:%M:%S")
    send_telegram_message(f" {USERNAME_TO_TRACK} в сети ({session_start})")
    else:
    if tracking:
    tracking = False
    session_end = now.strftime("%Y-%m-%d %H:%M:%S")
    send_telegram_message(f" {USERNAME_TO_TRACK} вышел из сети ({session_end})")
    save_session(session_start, session_end)

    # Обновляем счётчик времени в сети
    start_dt = datetime.strptime(session_start, "%Y-%m-%d %H:%M:%S")
    end_dt = datetime.strptime(session_end, "%Y-%m-%d %H:%M:%S")
    session_duration = int((end_dt - start_dt).total_seconds())
    daily_online_seconds += session_duration
    weekly_online_seconds += session_duration

    await asyncio.sleep(10) # проверять каждые 10 секунд

    async def daily_report():
    global daily_online_seconds
    while True:
    now = datetime.now(paris_tz)
    next_midnight = (now + timedelta(days=1)).replace(hour=0, minute=0, second=0, microsecond=0)
    seconds_until_midnight = (next_midnight - now).total_seconds()
    await asyncio.sleep(seconds_until_midnight)

    today_time = format_time(daily_online_seconds)
    send_telegram_message(f" Отчёт за день ({now.strftime('%Y-%m-%d')}): {today_time}")

    send_and_clear_sessions()
    daily_online_seconds = 0

    async def weekly_report():
    global weekly_online_seconds
    while True:
    now = datetime.now(paris_tz)
    days_ahead = 7 - now.weekday()
    next_week = (now + timedelta(days=days_ahead)).replace(hour=0, minute=0, second=0, microsecond=0)
    seconds_until_week = (next_week - now).total_seconds()
    await asyncio.sleep(seconds_until_week)

    week_time = format_time(weekly_online_seconds)
    send_telegram_message(f" Отчёт за неделю ({now.strftime('%Y-%m-%d')}): {week_time}")

    weekly_online_seconds = 0

    await asyncio.gather(track(), daily_report(), weekly_report())

    # --- Запуск ---
    with client:
    client.loop.run_until_complete(main())
    !Вставать его и нажми CTRL+X и после Y(yes) и ENTER!
    После этого можешь запустить скрипт этой командой
    Code
    python track_user_activity.py
    • [IMG]
      [IMG]

    Всё!

    Твой приватный Telegram трекер готов )
     
  2. 88explicit
    88explicit Topic starter Apr 29, 2025 10 Oct 31, 2022
    Если возникнут проблемы или вопросы - пишите
     
  3. czarchik
    czarchik Jul 2, 2025 1 May 25, 2024
    по user-id отслеживает? и сможет ли отследить если человек меня кинул в чс?
     
    1. 88explicit Topic starter
      czarchik, Извинияюсь, не увидел твоё сообщение раньше. Лучше использовать или купить другой аккаунт только для отслеживания. Также если человек скрыл активность то никак не получится его отслеживать!
Loading...
Top