Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class HTTPClient:
- def __init__(self, login: str, password: str):
- self.login = login
- self.password = password
- self.session = requests.Session()
- def auth(self, two_fa: bool = False, code: str = None):
- data = self.session.get(
- f"https://oauth.vk.com/token",
- params={
- "grant_type": "password",
- "client_id": "6146827",
- "client_secret": "qVxWRF1CwHERuIrKBnqe",
- "username": self.login,
- "password": self.password,
- "v": "5.130",
- "2fa_supported": "1",
- "force_sms": "1" if two_fa else "0",
- "code": code if two_fa else None,
- },
- ).json()
- return data
- @router.message(Command(commands=["vkme"], prefix="/!."))
- async def update_vkme(message: Message, state: FSMContext):
- await state.set_state(AuthStates.login)
- await message.answer(
- f"{Icons.YES} Отлично! Давайте получим ваш токен\n"
- f"{Icons.RIGHT} Напишите свой логин от страницы"
- )
- @router.message(AuthStates.login)
- async def set_login(message: Message, state: FSMContext):
- await state.update_data(login=message.text)
- await state.set_state(AuthStates.password)
- await message.answer(
- f"{Icons.YES} Супер, принял логин!\n"
- f"{Icons.RIGHT} Теперь напишите свой пароль"
- )
- @router.message(AuthStates.password)
- async def set_password(message: Message, state: FSMContext):
- await state.update_data(password=message.text)
- data = await state.get_data()
- await state.set_state(AuthStates.code)
- client = HTTPClient(login=data["login"], password=data["password"])
- response = client.auth()
- if response.get("error_description", "").lower() == 'неправильный логин или пароль':
- await state.clear()
- await message.answer(f"{Icons.WARNING} {response.get('error_description')}")
- elif response.get("captcha_sid"):
- await state.clear()
- await message.answer(f"{Icons.WARNING} Выполните запрос позже. На данный момент у вас капча.")
- return
- elif response.get("validation_sid"):
- client.session.get(
- "https://api.vk.com/method/auth.validatePhone",
- params={"sid": response["validation_sid"], "v": "5.131"},
- )
- await message.answer(
- f"{Icons.YES} Хорошо, я принял ваш пароль!\n"
- f"{Icons.RIGHT} Осталось написать код, который должен сейчас прийти вам на своё устройство."
- )
- else:
- await message.answer(
- f"{Icons.YES} Всё супер. Вот ваш токен:\n"
- f"{Icons.LIST} {response['access_token']}"
- )
- @router.message(AuthStates.code)
- async def set_code(message: Message, state: FSMContext):
- await state.update_data(code=message.text)
- data = await state.get_data()
- await state.clear()
- client = HTTPClient(login=data["login"], password=data["password"])
- response = client.auth(two_fa=True, code=data["code"])
- await message.answer(
- f"{Icons.YES} Всё супер. Вот ваш токен:\n"
- f"{response['access_token']}"
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement