Добавлена авторизация через хэш в функции send_welcome. Упрощена логика получения токена и регистрации пользователя.

This commit is contained in:
Redsandyg 2025-06-03 10:57:31 +03:00
parent 9a3639b5ff
commit 9f215802a6

24
main.py
View File

@ -9,6 +9,7 @@ import aiohttp
from aiogram.fsm.context import FSMContext
from aiogram.fsm.storage.memory import MemoryStorage
from aiogram.fsm.state import State, StatesGroup
from hashlib import sha256
load_dotenv()
@ -116,24 +117,23 @@ async def send_welcome(message: types.Message):
login = message.from_user.username
token = None
error = None
hash_value = sha256(f"{tg_id}sold".encode()).hexdigest()
async with aiohttp.ClientSession() as session:
# 1. Пробуем получить токен
try:
async with session.post(f'{API_URL}/token', json={'tg_id': tg_id}) as resp:
if resp.status == 200:
data = await resp.json()
token = data.get('access_token')
# 1. Пробуем авторизоваться по hash
async with session.post(f'{API_URL}/tg_auth', json={'hash': hash_value}) as auth_resp:
if auth_resp.status == 200:
token = hash_value
else:
# 2. Если не ок — регистрируем
# 2. Если не найден — регистрируем
async with session.post(f'{API_URL}/register', json={'tg_id': tg_id, 'chat_id': chat_id, 'name': name, 'login': login}) as reg_resp:
if reg_resp.status == 200:
# 3. Пробуем снова получить токен
async with session.post(f'{API_URL}/token', json={'tg_id': tg_id}) as resp2:
if resp2.status == 200:
data = await resp2.json()
token = data.get('access_token')
# После регистрации снова пробуем авторизоваться
async with session.post(f'{API_URL}/tg_auth', json={'hash': hash_value}) as auth_resp2:
if auth_resp2.status == 200:
token = hash_value
else:
error = 'Ошибка авторизации (token после регистрации)'
error = 'Ошибка авторизации после регистрации'
else:
error = 'Ошибка регистрации пользователя'
except Exception as e: