Загрузка данных


import asyncio
import string
import random
from pyrogram import Client
from pyrogram.errors import UsernameNotOccupied, UsernamePurchaseAvailable, FloodWait

# ВСТАВЬ СВОИ ДАННЫЕ СЮДА
API_ID = 33836197
API_HASH = "de5b01932aa855fc817bed61b9d45b"

app = Client("my_account", api_id=API_ID, api_hash=API_HASH)

def generate_random_username(length=5):
    # Генерируем только строчные буквы a-z
    return ''.join(random.choice(string.ascii_lowercase) for _ in range(length))

async def check_username(username):
    try:
        # Если ошибки нет — имя СВОБОДНО и БЕСПЛАТНО
        await app.check_username(username)
        return True
    except UsernameNotOccupied:
        # Имя занято (существует)
        return False
    except UsernamePurchaseAvailable:
        # Имя свободно, но ПЛАТНОЕ (на Fragment) — нам такое не надо
        return False
    except FloodWait as e:
        # Если Телеграм просит подождать — ждем, чтобы не забанили
        print(f"⚠️ FloodWait! Ждем {e.value} секунд...")
        await asyncio.sleep(e.value)
        return False
    except Exception as e:
        # Другие ошибки (например, невалидное имя)
        return False

async def main():
    print("Запуск...")
    await app.start()
    print("Подключились! Ищем ТОЛЬКО бесплатные имена...")

    while True:
        username = generate_random_username(5)
        
        # Проверяем
        is_free = await check_username(username)
        
        if is_free:
            # Выводим ТОЛЬКО если реально можно занять бесплатно
            print(f"✅ СВОБОДЕН (бесплатно): @{username}")
            
            # Сохраняем в файл, чтобы не потерять
            with open("free_usernames.txt", "a") as f:
                f.write(username + "\n")
        
        # ЗАДЕРЖКА ОБЯЗАТЕЛЬНА, иначе аккаунт на телефоне забанят на сутки
        await asyncio.sleep(1.5)

if __name__ == "__main__":
    app.run(main())