iris_api 5.0.0
iris_api: ^5.0.0 copied to clipboard
Dart client for Iris API
Iris API Dart Client #
Неофициальный клиент на Dart для работы с Iris API — надежный, современный и простой в использовании. Полностью переработанная версия с поддержкой всех возможностей Iris API.
🚀 Новая архитектура v2.0.0 #
Автоматическое определение версии API #
Клиент теперь автоматически определяет актуальную версию API при инициализации:
// Старый способ (устарел)
final api = IrisApi(
botId: 123,
irisToken: 'abc',
apiVersion: '0.3', // ← Нужно было помнить версию
);
// Новый способ (рекомендуется)
final api = await IrisApi.create(
botId: 123,
irisToken: 'abc', // ← Версия определяется автоматически!
);
print(api.currentApiVersion); // "0.3" - всегда актуальная версия
Полный набор методов API #
Поддерживаются все возможности Iris API через специализированные классы:
- PocketMethods - операции с кошельком
- UserInfoMethods - информация о пользователях
- TradeMethods - торговая биржа
- UpdatesMethods - получение обновлений
- OtherMethods - вспомогательные методы
📦 Установка #
Добавьте зависимость в pubspec.yaml:
dependencies:
iris_api: ^5.0.0
Затем выполните:
dart pub get
# или
flutter pub get
🎯 Быстрый старт #
1. Инициализация клиента #
import 'package:iris_api/iris_api.dart';
void main() async {
// Автоматическое определение версии API
final api = await IrisApi.create(
botId: YOUR_BOT_ID,
irisToken: 'YOUR_IRIS_TOKEN',
);
print('API версия: ${api.currentApiVersion}');
}
2. Проверка баланса #
final balance = await api.getBalance();
print('💰 Баланс:');
print(' Ириски: ${balance.sweets}');
print(' Голда: ${balance.gold}');
print(' Донат-очки: ${balance.donateScore}');
print(' Telegram Stars: ${balance.tgstars}');
3. Перевод валюты #
// Отправить ириски
await api.giveSweets(
amount: 10.5,
userId: 123456789,
comment: 'Спасибо за помощь!',
);
// Отправить голду
await api.giveGold(
amount: 5,
userId: 123456789,
comment: 'На развитие',
);
// Отправить донат-очки
await api.giveDonateScore(
amount: 1,
userId: 123456789,
comment: 'За донат',
);
// Отправить Telegram Stars
await api.giveTgStars(
amount: 50,
userId: 123456789,
comment: 'Награда',
);
4.1 Telegram Stars #
// История Telegram Stars
final starsHistory = await api.getTgStarsHistory(limit: 100);
print('Записей в истории tgstars: ${starsHistory.length}');
// Оценка цены покупки
final price = await api.getTgStarsPrice(100);
print('100 tgstars стоят ${price.sweets} ирисок');
// Купить tgstars
final purchased = await api.buyTgStars(100);
print('Куплено tgstars: $purchased');
4. Информация о пользователях #
const userId = 123456789;
// Проверить на спам
final spamInfo = await api.checkUserSpam(userId);
print('Спам: ${spamInfo.spam}, Игнор: ${spamInfo.ignore}, Скам: ${spamInfo.scam}');
// Дата регистрации
final regDate = await api.checkUserReg(userId);
print('Дата регистрации: $regDate');
// Активность
final activity = await api.checkUserActivity(userId);
print('Данные активности: $activity');
// Звездность
final stars = await api.checkUserStars(userId);
print('Звезд: $stars');
// Мешок пользователя
final pocket = await api.checkUserPocket(userId);
print('Информация о мешке: $pocket');
📊 Торговые операции #
// Получить стакан заявок
final orderBook = await api.getOrderBook();
print('Заявки на покупку: ${orderBook.buy.length}');
print('Заявки на продажу: ${orderBook.sell.length}');
// Купить голду
await api.buyTrade(price: 0.5, volume: 10);
// Продать голду
await api.sellTrade(price: 0.5, volume: 10);
// Отменить заявки
await api.cancelPriceTrade(price: 0.5); // По цене
await api.cancelAllTrade(); // Все заявки
await api.cancelPartTrade(id: 1, volume: 5); // Часть заявки
// Сделки
final deals = await api.getDealsTrade(limit: 50);
print('Сделок получено: ${deals.length}');
trade/my_orders отсутствует в API v0.5, поэтому getOrdersTrade() оставлен только для обратной совместимости и возвращает пустой список.
🖼️ NFT #
// Передать NFT пользователю
await api.giveNft(
id: 10,
name: 'PlusPepe-1',
userId: 123456789,
comment: 'Подарок',
);
// Получить информацию о NFT
final nftInfo = await api.getNftInfo(
id: 10,
name: 'PlusPepe-1',
);
print('NFT: ${nftInfo.name}, owner: ${nftInfo.ownerId}');
// Получить список NFT
final nftList = await api.getNftList(limit: 50);
print('NFT в мешке: ${nftList.length}');
// История NFT
final nftHistory = await api.getNftHistory(limit: 50);
print('Записей истории NFT: ${nftHistory.length}');
🔄 История операций #
// История ирисок
final sweetsHistory = await api.getSweetsHistory();
print('Записей в истории ирисок: ${sweetsHistory.length}');
// История голды
final goldHistory = await api.getGoldHistory();
print('Записей в истории голды: ${goldHistory.length}');
// История донат-очков
final donateHistory = await api.getDonateScoreHistory();
print('Записей в истории донат-очков: ${donateHistory.length}');
📱 Дополнительные возможности #
Получение обновлений #
final updates = await api.getUpdates(limit: 50);
print('Получено обновлений: ${updates.length}');
Список агентов Iris #
final agents = await api.getIrisAgents();
print('Агентов Iris: ${agents.length}');
Генерация deep-ссылок #
// Создать ссылку для перевода голды
final goldLink = api.generateDeepLink(Currency.gold, 10, 'на подарок');
print('Ссылка для перевода: $goldLink');
// Ссылка для ирисок
final sweetsLink = api.generateDeepLink(Currency.sweets, 5);
print('Ссылка для ирисок: $sweetsLink');
Управление доступом к кошельку #
// Включить/выключить кошелек
await api.enableOrDisablePocket(true);
// Разрешить/запретить всем
await api.enableOrDisableAllPocket(true);
// Разрешить/запретить конкретному пользователю
await api.allowOrDenyUserPocket(123456789, true);
🛡️ Обработка ошибок #
Клиент включает расширенную систему обработки ошибок:
try {
await api.giveSweets(amount: 10, userId: 123456789);
} on IrisApiError catch (e) {
if (e.code == 429) {
print('⚠️ Слишком много запросов. Добавьте задержку.');
await Future.delayed(Duration(seconds: 3));
} else {
print('❌ Ошибка API: ${e.code} - ${e.message}');
}
} catch (e) {
print('❌ Неожиданная ошибка: $e');
}
⚡ Оптимизация запросов #
Для избежания ограничений API используйте задержки:
// Создание клиента с увеличенным таймаутом
final api = await IrisApi.create(
botId: YOUR_BOT_ID,
irisToken: 'YOUR_IRIS_TOKEN',
timeout: Duration(seconds: 10),
);
// Рекомендуемая задержка между запросами
await Future.delayed(Duration(seconds: 2));
📖 Полный список методов #
PocketMethods #
getBalance()- баланс кошелькаgiveSweets()- отправить ирискиgiveGold()- отправить голдуgiveDonateScore()- отправить донат-очкиgetSweetsHistory()- история ирисокgetGoldHistory()- история голдыgetDonateScoreHistory()- история донат-очковenablePocket()/disablePocket()- включить/выключить кошелекallowAllPocket()/denyAllPocket()- разрешить/запретить всемallowUser()/denyUser()- разрешить/запретить пользователю
UserInfoMethods #
checkUserSpam()- проверка на спам/скамgetRegistrationDate()- дата регистрацииgetUserActivity()- статистика активностиgetUserStars()- звездностьgetUserPocket()- содержимое мешка
TradeMethods #
buyGold()- купить голдуsellGold()- продать голдуgetOrderBook()- стакан заявокgetMyOrders()- устарел в API v0.5 (всегда пустой результат)cancelByPrice()- отменить по ценеcancelAll()- отменить всеcancelPart()- отменить частьgetDeals()- сделки
NftMethods #
give()- передать NFTinfo()- получить информацию о NFTlist()- получить список NFThistory()- история NFT
UpdatesMethods #
getUpdates()- получить обновленияupdateStream- поток обновлений
OtherMethods #
getIrisAgents()- список агентовgetLastVersion()- версия API
🔧 Настройка клиента #
final api = await IrisApi.create(
botId: YOUR_BOT_ID,
irisToken: 'YOUR_IRIS_TOKEN',
baseUrl: 'https://iris-tg.ru/api', // опционально
timeout: Duration(seconds: 30), // опционально
);
🚨 Важные изменения v2.0.0 #
- Автоматическое определение версии - больше не нужно указывать
apiVersion - Фабричный метод
create()- асинхронная инициализация - Разделение на классы методов - модульная архитектура
- GET/POST запросы - соответствие спецификации API
- Обработка rate limiting - рекомендации по задержкам
- Полный набор методов - все возможности Iris API
🤝 Поддержка #
При возникновении проблем или вопросов создавайте issue на GitHub.
📄 Лицензия #
MIT License