Fragment Donor SDKИсходный код

Версия 0.1.3 · Команды установки используют точные версии.

Go SDK для Telegram Stars и Premium

Установка независимого SDK Fragment Donor для Go: username, подарки Stars/Premium и rate limit.

При покупке mnemonic кошелька и сессия/cookie Fragment передаются оператору API.

Runtime: Go 1.23+. Устанавливайте пакет из реестра только после статуса PUBLISHED; до этого используйте сборку каталога go из public source.

Клиент предлагает username, покупку Stars, подарок Premium и баланс с naming, принятым в Go. Запросы используют form-urlencoded. Баланс сохраняется decimal-строкой, дополнительные поля не удаляются.

Настройте timeout и данные кошелька на backend. Повтор чтения включается явно и ограничен; покупки никогда не повторяются автоматически. Точный constructor и типы ошибок приведены в README пакета.

Установка

go get github.com/usnuz/fragment-donor-sdk/go@v0.1.3

Пример

package main

import (
    "context"
    "errors"
    "os"
    "time"
    donor "github.com/usnuz/fragment-donor-sdk/go"
)

func main() {
    client, err := donor.NewClient(donor.Config{
        BaseURL: donor.DefaultBaseURL,
        Timeout: 30 * time.Second,
        ConnectTimeout: 5 * time.Second,
        Credentials: donor.Credentials{
            Mnemonic: os.Getenv("FRAGMENT_MNEMONIC"),
            Cookie: os.Getenv("FRAGMENT_COOKIE"),
            WalletVersion: "auto", // auto, v5r1, v4r2, v3r2
            ProviderKey: os.Getenv("TONCONSOLE_API_KEY"), // optional provider key
        },
    })
    if err != nil { return }
    ctx := context.Background()
    user, err := client.GetUserInfo(ctx, "durov")
    _ = user
    if err != nil { return }
    balance, err := client.WalletBalance(ctx)
    _ = balance // TON and USDTTON are exact decimal strings.
    if err != nil { return }

    // Real-funds operations require both opt-in and one selected purchase.
    if os.Getenv("FRAGMENT_ALLOW_PURCHASES") != "yes" { return }
    switch os.Getenv("FRAGMENT_PURCHASE_KIND") {
    case "stars":
        _, err = client.BuyStars(ctx, "durov", 50, "usdt_ton")
    case "premium":
        _, err = client.BuyPremium(ctx, "durov", 3, "ton")
    default:
        return
    }
    var apiErr *donor.Error
    if errors.As(err, &apiErr) {
        if apiErr.OutcomeUnknown {
            _ = apiErr.Details["tx_hash"] // reconcile manually; do not repeat.
        }
        _ = apiErr.RetryAfter // communicate wait, never auto-replay purchase.
    }
}

Исходный код · go

Читайте дальше

Telegram Stars API: 429, Retry-After и flood wait · Защита данных кошелька при интеграции API · Вопросы об API и SDK Fragment Donor

OpenAPI 3.0 · Postman collection