import asyncio
import string
import random
# --- ФИКС ДЛЯ PYTHON 3.14 ---
try:
asyncio.get_event_loop()
except RuntimeError:
asyncio.set_event_loop(asyncio.new_event_loop())
# -----------------------------
from pyrogram import Client
from pyrogram.errors import UsernameNotOccupied, RPCError, 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))
def generate_random_username(length=5):
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 FloodWait as e:
print(f"⚠️ FloodWait! Ждем {e.value} секунд...")
await asyncio.sleep(e.value)
return False
except RPCError as e:
# Если ошибка связана с покупкой на Fragment — просто пропускаем
if "USERNAME_PURCHASE_AVAILABLE" in str(e):
return False
return False
except Exception:
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())