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())