diff --git a/src/common/tools.py b/src/common/tools.py index 4b45cd9..dcb3af3 100644 --- a/src/common/tools.py +++ b/src/common/tools.py @@ -46,6 +46,38 @@ class Tools: } else: return contact + + def generate_profile_tt( + self, id=1, phone=70000000000, avatarUrl=None, + photoId=None, updateTime=0, + firstName="Test", lastName="Account", options=[], + description=None, username=None + ): + contact = { + "id": id, + "updateTime": updateTime, + "phone": phone, + "names": [ + { + "name": f"{firstName} {lastName}", + "type": "TT" + } + ], + "options": options + } + + if avatarUrl: + contact["photoId"] = photoId + contact["baseUrl"] = avatarUrl + contact["baseRawUrl"] = avatarUrl + + if description: + contact["description"] = description + + if username: + contact["link"] = "https://tamtam.chat/" + username + + return contact def generate_chat(self, id, owner, type, participants, lastMessage, lastEventTime): """Генерация чата""" diff --git a/src/tamtam_tcp/processors.py b/src/tamtam_tcp/processors.py index 80bd05f..849ac1d 100644 --- a/src/tamtam_tcp/processors.py +++ b/src/tamtam_tcp/processors.py @@ -160,12 +160,6 @@ class Processors: # Обновляем состояние токена await cursor.execute("UPDATE auth_tokens set state = %s WHERE token_hash = %s", ("verified", hashed_token,)) - # # Создаем сессию - # await cursor.execute( - # "INSERT INTO tokens (phone, token_hash, device_type, device_name, location, time) VALUES (%s, %s, %s, %s, %s, %s)", - # (stored_token.get("phone"), hashed_login, deviceType, deviceName, "Epstein Island", int(time.time()),) - # ) - # Генерируем профиль # Аватарка с биографией photoId = None if not account.get("avatar_id") else int(account.get("avatar_id")) @@ -174,7 +168,7 @@ class Processors: # Собираем данные пакета payload = { - "profile": self.tools.generate_profile( + "profile": self.tools.generate_profile_tt( id=account.get("id"), phone=int(account.get("phone")), avatarUrl=avatar_url, @@ -184,12 +178,8 @@ class Processors: lastName=account.get("lastname"), options=json.loads(account.get("options")), description=description, - accountStatus=int(account.get("accountstatus")), - profileOptions=json.loads(account.get("profileoptions")), - includeProfileOptions=False, - username=account.get("username"), - type="TT" - ).get("contact"), + username=account.get("username") + ), "tokenAttrs": { "AUTH": { "token": token @@ -239,6 +229,7 @@ class Processors: await self._send_error(seq, self.proto.VERIFY_CODE, self.error_types.INVALID_TOKEN, writer) return + # Если авторизация только началась - отдаем ошибку if stored_token.get("state") == "started": await self._send_error(seq, self.proto.VERIFY_CODE, self.error_types.INVALID_TOKEN, writer) return @@ -247,7 +238,7 @@ class Processors: await cursor.execute("SELECT * FROM users WHERE phone = %s", (stored_token.get("phone"),)) account = await cursor.fetchone() - # Обновляем состояние токена + # Удаляем токен await cursor.execute("DELETE FROM auth_tokens WHERE token_hash = %s", (hashed_token,)) # Создаем сессию @@ -263,8 +254,8 @@ class Processors: # Собираем данные пакета payload = { - "userToken": "0", - "profile": self.tools.generate_profile( + "userToken": "0", # Пока как заглушка + "profile": self.tools.generate_profile_tt( id=account.get("id"), phone=int(account.get("phone")), avatarUrl=avatar_url, @@ -274,18 +265,16 @@ class Processors: lastName=account.get("lastname"), options=json.loads(account.get("options")), description=description, - accountStatus=int(account.get("accountstatus")), - profileOptions=json.loads(account.get("profileoptions")), - includeProfileOptions=False, - username=account.get("username"), - type="TT" - ).get("contact"), + username=account.get("username") + ), "tokenType": "LOGIN", "token": login } + # Создаем пакет packet = self.proto.pack_packet( cmd=self.proto.CMD_OK, seq=seq, opcode=self.proto.FINAL_AUTH, payload=payload ) + # Отправялем await self._send(writer, packet) \ No newline at end of file