# Fragment-py

Python библиотека для работы с Telegram Stars, TON кошельками и аккаунтами Fragment.

## Установка

```bash
pip install fragment-py
```

## Настройка

Сначала настройте параметры аккаунта:

```python
from Fragment import Fragment

# Настройка параметров аккаунта
Fragment.account.hash = "your_hash_here"
Fragment.account.stel_ssid = "your_stel_ssid_here"
Fragment.account.stel_dt = "-180"
Fragment.account.stel_token = "your_stel_token_here"
Fragment.account.stel_ton_token = "your_stel_ton_token_here"
Fragment.account.toncenter_api_key = "your_toncenter_api_key_here"
Fragment.account.wallet_seed = "your_wallet_seed_here"
```

## Примеры использования

### 1. Получение хеша пользователя по никнейму

```python
# Получение хеша пользователя
nickname = "kompromizzdev"
result = Fragment.user.nick_to_hash(nickname)
print(f"Result for {nickname}:")
print(result)

# Доступ к recipient
recipient = result["found"]["recipient"]
print(f"Recipient: {recipient}")
```

### 2. Работа с Telegram Stars

#### Получение цены Stars

```python
# Получение текущей цены Stars
stars = "5050"
price_result = Fragment.stars.price(stars)
print(f"Price for {stars} stars:")
print(price_result)

# Доступ к цене в TON и USDT
ton_price = price_result["cur_price"]["TON"]
usdt_price = price_result["cur_price"]["USDT"]
print(f"TON: {ton_price}, USDT: {usdt_price}")
```

#### Инициализация платежа

```python
# Инициализация платежа Stars
recipient = "LE8nypspi4yC4-H3AUf4xkjrU8tR4sYs02S63HEkPxs"
amount = 50
pay_init_result = Fragment.stars.pay_init(recipient, amount)
print(pay_init_result)

# Получение req_id для дальнейшего использования
req_id = pay_init_result["req_id"]
```

#### Получение информации о платеже

```python
# Получение детальной информации о платеже
pay_info_result = Fragment.stars.pay_info(req_id)
print(pay_info_result)

# Доступ к данным транзакции
transaction = pay_info_result["transaction"]
messages = transaction["messages"][0]
address = messages["address"]
amount = messages["amount"]
payload = messages["payload"]
```

### 3. Работа с TON

#### Получение случайного lite сервера

```python
# Получение случайного lite сервера TON
lite_server = Fragment.ton.lite_server_random()
print(lite_server)
```

#### Проверка баланса кошелька

```python
# Проверка баланса TON кошелька
wallet_address = "UQASiZT7lXjYEYzNSIreLb0ahF9u6KOAQ-Cc5kOuna8XbDxg"
balance_result = Fragment.ton.wallet.balance(wallet_address)
print(balance_result)

# Доступ к балансу
balance_ton = balance_result["balance"]["ton"]
balance_nano = balance_result["balance"]["nano"]
print(f"Balance: {balance_ton} TON ({balance_nano} nanoTON)")
```

#### Отправка TON

```python
# Синхронная отправка TON
result = Fragment.ton.wallet.v4r2.send_sync(
    destination_address="UQCVVC0gYFFf8ka-eOGISTCtQV0lWiVF80TTrGkj43lZRxO6",
    amount=0.01,
    payload="50 Telegram Stars \n\nRef#Im2y5itd6"
)
print(result)
```

### 4. Управление аккаунтом

#### Получение списка сессий

```python
# Получение списка активных сессий
sessions_data = Fragment.account.session_list()
print(json.dumps(sessions_data, indent=2, ensure_ascii=False))
```

#### Получение профиля

```python
# Получение информации о профиле
profile_data = Fragment.account.profile()
print(json.dumps(profile_data, indent=2, ensure_ascii=False))

# Доступ к данным профиля
username = profile_data["username"]
wallet = profile_data["wallet"]
verified = profile_data["verified"]
```

### 5. Premium подписки

```python
# Получение информации о ценах Premium подписки
premium_info = Fragment.premium.price()  # По умолчанию 12 месяцев
print(premium_info)

# Доступ к опциям подписки
for option in premium_info["options"]:
    duration = option["duration"]
    price_ton = option["price_ton"]
    price_usd = option["price_usd"]
    sale = option["sale"]
    print(f"{duration}: {price_ton} TON ({price_usd}) {sale}")
```

### 6. Декодирование payload

```python
# Декодирование payload из транзакции
payload = "te6ccgEBAQEAJwAASgAAAAA1MCBUZWxlZ3JhbSBTdGFycyAKClJlZiNJbTJ5NWl0ZDY"
decoded_result = Fragment.utils.decoder(payload)
print(decoded_result)

# Доступ к декодированному тексту
decoded_text = decoded_result["decoded"]
original_payload = decoded_result["payload"]
print(f"Decoded: {decoded_text}")
```

## Полный пример workflow

```python
from Fragment import Fragment
import json

# Настройка аккаунта
Fragment.account.hash = "your_hash"
Fragment.account.stel_ssid = "your_stel_ssid"
Fragment.account.stel_dt = "-180"
Fragment.account.stel_token = "your_stel_token"
Fragment.account.stel_ton_token = "your_stel_ton_token"
Fragment.account.toncenter_api_key = "your_toncenter_api_key"
Fragment.account.wallet_seed = "your_wallet_seed"

# 1. Получение recipient по никнейму
nickname = "kompromizzdev"
user_result = Fragment.user.nick_to_hash(nickname)
recipient = user_result["found"]["recipient"]

# 2. Инициализация платежа Stars
pay_init_result = Fragment.stars.pay_init(recipient, 50)
req_id = pay_init_result["req_id"]

# 3. Получение информации о платеже
pay_info_result = Fragment.stars.pay_info(req_id)
payload = pay_info_result["transaction"]["messages"][0]["payload"]

# 4. Декодирование payload
decoded_result = Fragment.utils.decoder(payload)
decoded_text = decoded_result["decoded"]

# 5. Отправка TON с декодированным payload
send_result = Fragment.ton.wallet.v4r2.send_sync(
    destination_address=pay_info_result["transaction"]["messages"][0]["address"],
    amount=float(pay_init_result["amount"]),
    payload=decoded_text
)

print("Transaction completed:", send_result)
```

## Структура ответов API

### Fragment.user.nick_to_hash()
```json
{
  "ok": true,
  "found": {
    "myself": true,
    "recipient": "LE8nypspi4yC4-H3AUf4xkjrU8tR4sYs02S63HEkPxs",
    "photo": "<img src=\"...\" />",
    "name": "User Name"
  }
}
```

### Fragment.stars.pay_init()
```json
{
  "req_id": "unique_request_id",
  "myself": true,
  "to_bot": false,
  "amount": "0.2774"
}
```

### Fragment.stars.pay_info()
```json
{
  "ok": true,
  "transaction": {
    "validUntil": 1759189331,
    "from": "0:128994fb9578d8118ccd488ade2dbd1a845f6ee8a38043e09ce643ae9daf176c",
    "messages": [
      {
        "address": "UQCFJEP4WZ_mpdo0_kMEmsTgvrMHG7K_tWY16pQhKHwoOtFz",
        "amount": "277400000",
        "payload": "te6ccgEBAQEAJwAASgAAAAA1MCBUZWxlZ3JhbSBTdGFycyAKClJlZiNJbTJ5NWl0ZDY"
      }
    ]
  }
}
```

### Fragment.utils.decoder()
```json
{
  "payload": "te6ccgEBAQEAJwAASgAAAAA1MCBUZWxlZ3JhbSBTdGFycyAKClJlZiNJbTJ5NWl0ZDY",
  "decoded": "50 Telegram Stars \n\nRef#Im2y5itd6"
}
```

## Лицензия

MIT License

## Поддержка

Если у вас есть вопросы или проблемы, создайте issue в репозитории.

## Донат :
TRC20: TPGYp2qozG9gdhLKHkbSM2un94L76BoroV
BTC: 1PhECm2PwMNq9Htj9zYMpp2n9EU3Kczyms
ETH: 0x4ef19c24dbe3254c70a469059b9a8a5879e90030