Advertisement
DimaDevelop

Untitled

Jan 26th, 2024
998
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.45 KB | None | 0 0
  1. class HTTPClient:
  2.     def __init__(self, login: str, password: str):
  3.         self.login = login
  4.         self.password = password
  5.         self.session = requests.Session()
  6.  
  7.     def auth(self, two_fa: bool = False, code: str = None):
  8.         data = self.session.get(
  9.             f"https://oauth.vk.com/token",
  10.             params={
  11.                 "grant_type": "password",
  12.                 "client_id": "6146827",
  13.                 "client_secret": "qVxWRF1CwHERuIrKBnqe",
  14.                 "username": self.login,
  15.                 "password": self.password,
  16.                 "v": "5.130",
  17.                 "2fa_supported": "1",
  18.                 "force_sms": "1" if two_fa else "0",
  19.                 "code": code if two_fa else None,
  20.             },
  21.         ).json()
  22.  
  23.         return data
  24.  
  25.  
  26. @router.message(Command(commands=["vkme"], prefix="/!."))
  27. async def update_vkme(message: Message, state: FSMContext):
  28.     await state.set_state(AuthStates.login)
  29.     await message.answer(
  30.         f"{Icons.YES} Отлично! Давайте получим ваш токен\n"
  31.         f"{Icons.RIGHT} Напишите свой логин от страницы"
  32.     )
  33.  
  34.  
  35. @router.message(AuthStates.login)
  36. async def set_login(message: Message, state: FSMContext):
  37.     await state.update_data(login=message.text)
  38.     await state.set_state(AuthStates.password)
  39.     await message.answer(
  40.         f"{Icons.YES} Супер, принял логин!\n"
  41.         f"{Icons.RIGHT} Теперь напишите свой пароль"
  42.     )
  43.  
  44.  
  45. @router.message(AuthStates.password)
  46. async def set_password(message: Message, state: FSMContext):
  47.     await state.update_data(password=message.text)
  48.     data = await state.get_data()
  49.     await state.set_state(AuthStates.code)
  50.  
  51.     client = HTTPClient(login=data["login"], password=data["password"])
  52.     response = client.auth()
  53.  
  54.     if response.get("error_description", "").lower() == 'неправильный логин или пароль':
  55.         await state.clear()
  56.         await message.answer(f"{Icons.WARNING} {response.get('error_description')}")
  57.  
  58.     elif response.get("captcha_sid"):
  59.         await state.clear()
  60.         await message.answer(f"{Icons.WARNING} Выполните запрос позже. На данный момент у вас капча.")
  61.         return
  62.  
  63.     elif response.get("validation_sid"):
  64.         client.session.get(
  65.             "https://api.vk.com/method/auth.validatePhone",
  66.             params={"sid": response["validation_sid"], "v": "5.131"},
  67.         )
  68.  
  69.         await message.answer(
  70.             f"{Icons.YES} Хорошо, я принял ваш пароль!\n"
  71.             f"{Icons.RIGHT} Осталось написать код, который должен сейчас прийти вам на своё устройство."
  72.         )
  73.     else:
  74.         await message.answer(
  75.             f"{Icons.YES} Всё супер. Вот ваш токен:\n"
  76.             f"{Icons.LIST} {response['access_token']}"
  77.         )
  78.  
  79.  
  80. @router.message(AuthStates.code)
  81. async def set_code(message: Message, state: FSMContext):
  82.     await state.update_data(code=message.text)
  83.     data = await state.get_data()
  84.     await state.clear()
  85.  
  86.     client = HTTPClient(login=data["login"], password=data["password"])
  87.     response = client.auth(two_fa=True, code=data["code"])
  88.  
  89.     await message.answer(
  90.         f"{Icons.YES} Всё супер. Вот ваш токен:\n"
  91.         f"{response['access_token']}"
  92.     )
  93.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement