Версия 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."); }
Читайте дальше
Telegram Stars API: 429, Retry-After и flood wait · Защита данных кошелька при интеграции API · Вопросы об API и SDK Fragment Donor