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

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

C# / .NET SDK для Telegram Stars и Premium

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

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

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

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

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

Установка

dotnet add package FragmentDonor.Sdk --version 0.1.3

Пример

using FragmentDonor.Sdk;

// Read-only by default. Never dump or serialize credentials.
var mnemonic = Environment.GetEnvironmentVariable("FRAGMENT_MNEMONIC") ?? "";
using var client = new FragmentDonorClient(new ClientOptions
{
    Credentials = new WalletCredentials(mnemonic,
        Environment.GetEnvironmentVariable("FRAGMENT_COOKIE"))
    {
        ProviderKey = Environment.GetEnvironmentVariable("TONCONSOLE_API_KEY"),
    },
});
try
{
    var username = Environment.GetEnvironmentVariable("FRAGMENT_USERNAME") ?? "durov";
    var user = await client.GetUserInfoAsync(username);
    Console.WriteLine("Username: " + user.Username);
    if (!string.IsNullOrWhiteSpace(mnemonic))
    {
        var balance = await client.WalletBalanceAsync();
        Console.WriteLine("TON balance: " + balance.Ton);
        if (Environment.GetEnvironmentVariable("FRAGMENT_ALLOW_PURCHASES") == "yes")
        {
            // Exactly one deliberate real-money gift; never repeat blindly.
            var kind = Environment.GetEnvironmentVariable("FRAGMENT_PURCHASE_KIND");
            if (kind == "stars") await client.BuyStarsAsync(new StarsRequest(username, 50));
            else if (kind == "premium") await client.BuyPremiumAsync(new PremiumRequest(username, 3));
            else throw new ArgumentException("Select FRAGMENT_PURCHASE_KIND=stars or premium explicitly.");
        }
    }
}
catch (RateLimitException error) { Console.WriteLine($"Try later in {error.RetryAfter} seconds."); }
catch (ServiceUnavailableException error) { Console.WriteLine($"Try later in {error.RetryAfter} seconds."); }

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

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

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

OpenAPI 3.0 · Postman collection