0.1.3 versiya · O‘rnatish buyruqlari aniq versiyalarni ishlatadi.
Node.js / TypeScript SDK: Telegram Stars va Premium
Mustaqil Fragment Donor Node.js / TypeScript SDK’ni o‘rnatish, username, Stars/Premium va rate limit bilan ishlash.
Xarid so‘rovi wallet mnemonic va Fragment sessiya/cookie ma’lumotini API operatoriga yuboradi.
Runtime: Node.js 20+. Paket registrda PUBLISHED bo‘lgach o‘rnating; ungacha public source ichidagi typescript katalogidan build/install qiling.
Klient Node.js / TypeScript uslubidagi naming bilan username, Stars xaridi, Premium sovg‘asi va balansni beradi. So‘rovlar form-urlencoded. Balans decimal string sifatida, qo‘shimcha maydonlar esa yo‘qolmasdan saqlanadi.
Backend’da timeout va hamyon credentiallarini sozlang. Read retry alohida yoqilib chegaralanadi; xaridlar hech qachon avtomatik qaytarilmaydi. Aniq constructor va xato turlari paket README’sida bor.
O‘rnatish
npm install fragment-donor-sdk@0.1.3Misol
// Trusted server example. Opt in and choose exactly one purchase kind.
import {
ApiError,
FloodWaitError,
FragmentDonorClient,
WalletCredentials,
} from "fragment-donor-sdk";
const allowPurchase = process.env.FRAGMENT_ALLOW_PURCHASES === "yes";
const purchaseKind = process.env.FRAGMENT_PURCHASE_KIND;
if (allowPurchase && !["stars", "premium"].includes(purchaseKind)) {
throw new Error(
"Set FRAGMENT_PURCHASE_KIND=stars or premium; no purchase sent",
);
}
const client = new FragmentDonorClient();
const username = process.env.FRAGMENT_USERNAME ?? "durov";
try {
console.log("Username:", (await client.getUserInfo(username)).username);
if (process.env.FRAGMENT_MNEMONIC) {
const credentials = new WalletCredentials({
mnemonic: process.env.FRAGMENT_MNEMONIC,
cookie: process.env.FRAGMENT_COOKIE,
providerKey: process.env.TONCONSOLE_API_KEY,
});
const balance = await client.walletBalance({ credentials });
console.log("TON:", balance.ton, "USDT:", balance.usdt_ton);
if (allowPurchase && purchaseKind === "stars") {
// One intentional operation; NEVER retry automatically.
await client.buyStars(username, 50, { credentials });
} else if (allowPurchase && purchaseKind === "premium") {
await client.buyPremium(username, 3, { credentials });
}
}
} catch (error) {
if (error instanceof FloodWaitError)
console.log("FLOOD_WAIT seconds:", error.retryAfter);
else if (error instanceof ApiError)
console.log(
error.name,
error.status,
"unknown purchase outcome:",
error.purchaseOutcomeUnknown,
);
else throw error;
}
Davom eting
Telegram Stars API’da 429, Retry-After va flood wait · API integratsiyasida hamyon credentiallarini himoyalash · Fragment Donor API va SDK haqida savollar