$ sudo teach IT
Модуль 1 · Введение

Урок 1.1 — Как проходить курс

Добро пожаловать в мир Crypto Pay API! Этот урок — ваш навигатор по курсу. Мы расскажем, как устроен курс, что такое aiosend и Crypto Pay API, и как получить максимум пользы от обучения.

👋

Приветствие

Привет, друг! 👋

Если ты читаешь эти строки — ты уже сделал первый и самый важный шаг: решил научиться работать с Crypto Pay API с помощью Python. Это решение откроет перед тобой двери в мир криптовалютных платежей, Telegram-ботов и финансовой автоматизации. Каждый день через @CryptoBot проходят миллионы транзакций, и теперь у тебя есть возможность стать частью этой экосистемы.

Этот курс создан, чтобы максимально упростить твой вход в тему. Я помню, как сам когда-то разбирался с документацией Crypto Pay API и думал: «Почему нет нормальной Python-обёртки, которая скрыла бы всю рутину HTTP-запросов и JSON?» — и тут я наткнулся на aiosend. Библиотека, написанная vovchic17, выросла из личного проекта в полноценный инструмент с тысячами установок. В этом курсе я делюсь всеми знаниями, которые помогут тебе освоить работу с этой библиотекой.

В этом курсе нет «воды». Каждая минута твоего времени — это конкретные знания, которые ты сразу можешь применить на практике. Мы не будем просто пересказывать документацию — мы будем понимать, как работает Crypto Pay API изнутри, почему aiosend устроен именно так, и как писать красивый, профессиональный, production-ready код для приёма криптовалютных платежей.

К концу курса ты сможешь создавать полноценные платёжные решения на Python: от простого инвойса для доната до сложной системы с вебхуками, балансами, массовыми переводами и интеграцией с популярными Telegram-библиотеками (aiogram, pyTelegramBotAPI, python-telegram-bot, Pyrogram, Telethon). И всё это — с помощью одной библиотеки: aiosend.

⚡

Что такое Crypto Pay API

Crypto Pay API — это официальный API платежной системы @CryptoBot (на английском — @send). @CryptoBot — это популярный Telegram-бот, созданный командой @CryptoBot, который позволяет пользователям отправлять и получать криптовалюты прямо внутри Telegram. С 2021 года он обслуживает миллионы транзакций, а его API используется тысячами разработчиков по всему миру.

Поддерживаемые криптовалюты: USDT, TON, BTC, ETH, LTC, BNB, TRX, USDC (и JET для тестовой сети). А также множество фиатных валют для номинации счетов: USD, EUR, RUB, BYN, UAH, GBP, CNY, KZT, UZS, GEL, TRY, AMD, THB, INR, BRL, IDR, AZN, AED, PLN, ILS.

Crypto Pay API предоставляет разработчикам следующие возможности:

💰
Создание счетов (Invoices) — выставить пользователю счёт на оплату в криптовалюте или фиате. Можно указать сумму, описание, скрытое сообщение после оплаты, кнопку после оплаты, срок действия и многое другое.
📋
Создание чеков (Checks) — выпустить чек на определённую сумму, который может активировать любой пользователь (или только указанный). Чеки работают по принципу «кто первый забрал — тому и досталось».
✈️
Переводы (Transfers) — отправлять монеты с баланса вашего приложения напрямую пользователю Telegram. Пользователь должен хотя бы раз запустить @CryptoBot.
📊
Баланс и статистика — получать текущий баланс приложения по каждому активу, курсы обмена валют, статистику по инвойсам (конверсия, объём, уникальные пользователи).
🔔
Уведомления (Webhooks / Polling) — получать информацию об оплатах в реальном времени через вебхуки (Crypto Pay присылает POST-запрос на твой сервер) или через polling (твой код периодически опрашивает API на наличие новых оплат).
🔍
Получение курсов и списков валют — получать актуальные курсы обмена между криптовалютами и фиатами, а также список всех поддерживаемых валют с их свойствами.

API работает на основе простых HTTP-запросов. Ты отправляешь GET или POST-запрос на сервер https://pay.crypt.bot/api/ (или https://testnet-pay.crypt.bot/api/ для тестовой сети), передаёшь токен в заголовке Crypto-Pay-API-Token, и получаешь JSON-ответ. Звучит просто, но есть множество нюансов: правильное формирование заголовков, обработка ошибок (а их у API немало), управление асинхронностью, таймауты, повторные попытки при сбоях — именно здесь на помощь приходит aiosend.

🔍 Как это работает «под капотом»

Когда ты вызываешь await cp.create_invoice(100, "USDT"), aiosend:
1. Берёт твой токен и формирует HTTP-заголовок Crypto-Pay-API-Token: 1234:abc...
2. Определяет сеть (MAINNET или TESTNET) по токену
3. Формирует POST-запрос к https://pay.crypt.bot/api/createInvoice с JSON-телом {"amount": 100, "asset": "USDT"}
4. Отправляет запрос через aiohttp (асинхронно)
5. Получает JSON-ответ, проверяет поле ok
6. Десериализует result в Pydantic-модель Invoice
7. Возвращает тебе готовый объект Invoice

⚠️ Важно понимать

Crypto Pay API — это не блокчейн и не криптовалютная биржа. Ты не отправляешь транзакции напрямую в сеть Bitcoin или Ethereum. Вместо этого ты работаешь через централизованный сервис @CryptoBot, который управляет кошельками пользователей и берёт на себя все сложности блокчейн-транзакций. Это похоже на платёжный шлюз вроде Stripe или PayPal, но для криптовалют: ты создаёшь счёт, пользователь платит через бота, а API уведомляет тебя об успешной оплате. Все внутренние перемещения средств между кошельками @CryptoBot происходят мгновенно и без комиссий сети.

📦

Что такое aiosend

aiosend — это современная Python-библиотека (обёртка) для Crypto Pay API, опубликованная на PyPI под лицензией MIT. Она создана, чтобы разработчики могли работать с API @CryptoBot без необходимости вручную формировать HTTP-запросы, разбирать JSON-ответы и обрабатывать ошибки. Библиотека написана на чистом Python с использованием pydantic для моделей данных и aiohttp для асинхронных HTTP-запросов.

Название библиотеки составлено из двух частей: "aio" (асинхронный ввод-вывод, от asyncio) и "send" (отсылка/перевод — основная функция сервиса). Хотя библиотека полностью поддерживает и синхронный режим работы, её главная сила и предназначение — в асинхронной работе с asyncio.

Ключевые возможности aiosend:

✅ Асинхронный и синхронный режимы

Работай как с async/await (через asyncio), так и в классическом синхронном стиле (через .sync). Выбирай под свою задачу: для Telegram-ботов — async, для простых скриптов — sync.

✅ Полная типизация (Type Hints)

Все методы и модели полностью аннотированы типами. Pydantic-модели обеспечивают валидацию данных на лету. MyPy-совместимость, автодополнение в любой современной IDE (VS Code, PyCharm). Минимум ошибок на пустом месте.

✅ Invoice и Check Polling

Встроенные механизмы опроса статуса оплат без необходимости настраивать вебхуки и иметь публичный сервер. Просто создаёшь инвойс, подписываешься на событие, и aiosend сам проверяет, не оплачен ли он.

✅ Вебхуки (Webhook)

Полноценная поддержка вебхуков на базе aiohttp. Получай уведомления об оплатах мгновенно, без задержек опроса. Требуется публичный HTTPS-сервер.

✅ Magic Filters из aiogram 3.x

Мощные и знакомые фильтры для событий. Фильтруй оплаты по сумме, активу, пользователю и любым другим полям с помощью простого и выразительного синтаксиса.

✅ Dependency Injection (DI)

Внедрение зависимостей для удобной интеграции с другими библиотеками. Особенно полезно при работе с aiogram 3.x — ты можешь получать экземпляр CryptoPay прямо в хендлерах.

✅ Shortcut Methods

Сокращённые методы на объектах: invoice.update(), invoice.delete(), invoice.poll(), invoice.qr, check.get_image(). Удобно и интуитивно.

✅ Поддержка всех методов API

Все 13 официальных методов Crypto Pay API реализованы и задокументированы. Полная функциональность «из коробки».

Библиотека опубликована на PyPI (https://pypi.org/project/aiosend/) с открытым исходным кодом под лицензией MIT. Исходный код доступен на GitHub (https://github.com/vovchic17/aiosend), а полная документация — на Read the Docs (https://aiosend.readthedocs.io/). Версия на момент написания курса — 3.0.x (поддерживает Python 3.10+).

💡 Почему aiosend, а не requests напрямую?

Ты, конечно, можешь использовать requests или aiohttp для работы с Crypto Pay API напрямую. Но aiosend берёт на себя всю рутину: сериализацию/десериализацию, обработку ошибок (все 20+ типов ошибок API), управление HTTP-сессией, таймауты, автозакрытие соединений. Твой код становится в 5-10 раз короче и понятнее. Сравни сам:

Python · Сравнение: requests vs aiosend
# Без aiosend — 20+ строк кода, ручная обработка всего
import requests

TOKEN = "your_token"
url = "https://pay.crypt.bot/api/getMe"
headers = {"Crypto-Pay-API-Token": TOKEN}

try:
    response = requests.get(url, headers=headers, timeout=30)
    response.raise_for_status()
    data = response.json()
    if data["ok"]:
        app = data["result"]
        print(f"App name: {app['name']}")
        print(f"App ID: {app['app_id']}")
    else:
        error = data.get("error", {})
        print(f"API Error {error.get('code')}: {error.get('name')}")
except requests.exceptions.Timeout:
    print("Request timed out")
except requests.exceptions.RequestException as e:
    print(f"Network error: {e}")

# С aiosend — 4 строки, всё под капотом
from aiosend import CryptoPay

cp = CryptoPay(token="TOKEN")
app = cp.sync.get_me()
print(f"App name: {app.name}")

Разница колоссальная. И это только для простейшего метода getMe. Для более сложных методов (createInvoice с десятком опциональных параметров) разница в объёме кода становится ещё более впечатляющей.

Кроме того, aiosend предоставляет дополнительные удобства, которых нет в голом API:

  • Автоматическое определение сети — по формату токена библиотека сама понимает, MAINNET это или TESTNET
  • Валидация параметров — если ты передашь неверный актив (например, "XYZ"), pydantic выдаст ошибку ДО отправки запроса
  • Удобные enum's — Asset, Fiat, InvoiceStatus, CheckStatus и другие вместо строк-констант
  • Контекстный менеджер — async with CryptoPay(...) as cp для автоматического закрытия сессии
  • Интеграция с популярными библиотеками — готовые примеры для aiogram 3.x, 2.x, pyTelegramBotAPI, PTB, Pyrogram, Telethon
🗺️

Как устроен курс

Курс разделён на 9 модулей, каждый из которых посвящён конкретной теме работы с aiosend и Crypto Pay API. Внутри каждого модуля — несколько последовательных уроков. Идти нужно строго по порядку: каждый урок опирается на знания из предыдущего. Даже если тема кажется знакомой — всё равно прочитай урок, в нём могут быть важные детали.

Полная структура курса:

  • Модуль 1. Введение — как проходить курс, установка aiosend, получение токена, первое приложение (3 урока)
  • Модуль 2. Работа со счетами (Invoices) — создание, удаление, получение списков, фильтрация, статусы инвойсов
  • Модуль 3. Чеки (Checks) — создание, активация, управление чеками, привязка к пользователям
  • Модуль 4. Переводы (Transfers) — отправка средств пользователям, idempotency через spend_id, комиссии, лимиты
  • Модуль 5. Баланс и курсы — получение баланса, курсов валют, статистики приложения, работа с курсами обмена
  • Модуль 6. Обработка ошибок — APIError, APITimeoutError, WrongNetworkError, DeserializationError, best practices обработки
  • Модуль 7. События и вебхуки — invoice polling, check polling, webhook, filters, routers, конфигурация polling
  • Модуль 8. Интеграция с Telegram-ботами — aiogram 3.x, aiogram 2.x, pyTelegramBotAPI, python-telegram-bot, Pyrogram, Telethon
  • Модуль 9. Продвинутые темы — Dependency Injection, Shortcut Methods, Type Hints, Warnings, Best Practices, production-разработка, деплой

Каждый урок устроен по единому шаблону:

1. Теория — объяснение концепции простым языком, с примерами и аналогиями, таблицами, сравнениями и схемами работы.
2. Код — живые примеры на Python с aiosend, которые ты можешь запустить сам. Каждый пример сопровождается объяснением ключевых строк.
3. Практическая задача — примени знания на практике. Решишь — запомнишь тему навсегда.

🎯 Рекомендуемый темп обучения

Оптимально проходить 1 урок в день. Урок занимает примерно 40-60 минут: 15-20 минут теории с примерами, 15 минут практики с кодом (набрать и запустить примеры), 10 минут на тест, 15-20 минут на практическую задачу. Не торопись — дай знаниям улечься. Между уроками полезно делать паузу хотя бы в несколько часов, а лучше — до следующего дня.

⚠️ Предупреждение о последовательности

Не перескакивай через уроки! Каждый модуль логически продолжает предыдущий. Например, чтобы понять вебхуки из Модуля 7, нужно сначала разобраться с инвойсами из Модуля 2. А для Модуля 8 (интеграция с ботами) требуется понимание всех предыдущих тем. Исключение — если ты уже знаком с темой конкретного урока, можешь пробежать его по диагонали, но обязательно выполни практическую задачу.

📚

Подробное содержание модулей

Давай подробно разберём каждый модуль, чтобы ты понимал, чему именно научишься:

Модуль 1: Введение (3 урока)

Установка Python и aiosend, получение API-токена, знакомство с MAINNET и TESTNET, создание первого скрипта, структура проекта, работа с .env-файлами. Результат: ты сможешь подключиться к Crypto Pay API и получить информацию о своём приложении.

Модуль 2: Работа со счетами (Invoices)

Создание инвойсов в криптовалюте и фиате, настройка параметров (описание, скрытое сообщение, кнопка после оплаты, срок действия), удаление инвойсов, получение списка с фильтрацией по статусу, активу, дате. Разберём все нюансы: лимиты, комиссии, expired-статус.

Модуль 3: Чеки (Checks)

Создание чеков с привязкой к конкретному пользователю (по ID или username), активация чеков, удаление, получение списка. Разберём формат bot_check_url, хэши, статусы. Научимся генерировать изображения чеков.

Модуль 4: Переводы (Transfers)

Отправка средств пользователям, механизм idempotent requests (spend_id), комментарии к переводам, отключение уведомлений. Лимиты и комиссии. Получение истории переводов.

Модуль 5: Баланс, курсы и статистика

Получение баланса по каждому активу (available/onhold), курсы обмена валют, список поддерживаемых валют с их свойствами, статистика инвойсов (конверсия, объём, пользователи).

Модуль 6: Обработка ошибок

Все типы исключений aiosend: APIError (код + имя ошибки), APITimeoutError, WrongNetworkError, DeserializationError, CryptoPayError. Практические паттерны обработки, retry-логика, graceful degradation.

Модуль 7: События и вебхуки

Роутеры и наблюдатели событий, invoice polling (периодический опрос), check polling, webhook (настройка HTTP-сервера), фильтры по типу события и данным, payload-данные. Настройка интервалов polling.

Модуль 8: Интеграция с Telegram-ботами

Готовые примеры интеграции aiosend с популярными библиотеками: aiogram 3.x (рекомендуемый вариант), aiogram 2.x, pyTelegramBotAPI (синхронный и асинхронный), python-telegram-bot, Pyrogram, Telethon.

Модуль 9: Продвинутые темы

Dependency Injection (провайдеры, DI-контейнер), Shortcut Methods на типах, Type Hints и Literal-типы, Wrong Network Warning (предупреждение о неверной сети), AiohttpSession, Best Practices, подготовка к production (логирование, мониторинг, деплой).

🎯

Правила прохождения курса

Чтобы получить максимальную пользу от курса, следуй этим простым, но важным правилам:

📖 Правило 1: Читай внимательно

Не пролистывай текст. Каждый абзац написан с определённой целью — объяснить концепцию, предостеречь от ошибки или дать полезный совет. Если что-то непонятно — перечитай ещё раз. Если всё равно непонятно — загугли, загляни в документацию aiosend, открой официальную документацию Crypto Pay API. Программирование — это навык понимания, а не запоминания. Понимание приходит через многократное осмысление.

⌨️ Правило 2: Код — руками

Недостаточно просто читать примеры кода. Ты должен сам набирать каждый пример в своём редакторе. Мышцы пальцев запоминают синтаксис. Когда ты сам напишешь cp = CryptoPay(token="TOKEN"), await cp.get_me(), await cp.create_invoice(100, "USDT") — эти конструкции останутся с тобой навсегда. Если просто прочитаешь — забудешь через час. Не копируй из буфера обмена — набирай вручную, строка за строкой.

🧩 Правило 3: Решай задачи

В конце каждого урока есть практическая задача. Реши её обязательно. Если не получается — вернись к теории, разбери примеры, попробуй ещё раз. Не смотри в решение сразу (если оно есть) — дай себе время подумать. Минимум 15-20 минут самостоятельных попыток. Именно в моменте «я не знаю, как это сделать» происходит рост программиста. Преодоление этого барьера — и есть обучение.

🐢 Правило 4: Никакой спешки

Не пытайся пройти курс за один день или даже за неделю. Это марафон, а не спринт. В курсе 9 модулей и десятки уроков. Оптимальный темп — 1 урок в день. Между уроками делай перерывы, дай мозгу «переварить» информацию. Если чувствуешь, что устал — остановись, отдохни, вернись завтра. Качественное усвоение материала важнее скорости прохождения. Лучше пройти 1 урок и всё понять, чем 5 уроков и ничего не запомнить.

🧪 Правило 5: Экспериментируй

Не бойся менять код из примеров. Что будет, если передать неверный токен? А если создать инвойс без суммы? А если указать несуществующий актив? А если передать отрицательную сумму? Специально «ломай» код — так ты поймёшь границы библиотеки и научишься читать ошибки. Программист, который не боится экспериментировать, учится в 10 раз быстрее. Создай отдельную песочницу для экспериментов и пробуй всё, что придёт в голову.

⚠️ Важное предупреждение

Программирование — это трудно. Будут моменты, когда ты захочешь всё бросить, когда код не работает, а ошибка непонятна. Это нормально. Так бывает у всех — от новичка до senior-разработчика с 20-летним стажем. Разница только в том, что опытный программист не паникует, а спокойно ищет причину: читает ошибку, проверяет входные данные, гуглит, отлаживает. Этому ты тоже научишься в процессе курса. И помни: у aiosend есть комьюнити-чат в Telegram, где всегда помогут советом.

🤝 Правило 6: Задавай вопросы

Если что-то непонятно — не молчи. Программирование — это коллективная деятельность. Вопросы можно задавать:
— В Telegram-чате aiosend (aiosend.t.me)
— На Stack Overflow с тегом [aiosend]
— В комментариях к уроку (если они есть)
При формулировке вопроса описывай: что хотел сделать, что сделал, какой результат ожидал, какой результат получил, приложи код и текст ошибки. Хорошо сформулированный вопрос — это 50% ответа.

📝

Формат уроков

Каждый урок в этом курсе представляет собой HTML-страницу с хорошо структурированным содержимым. Вот из каких элементов состоит типичный урок:

🔷 Шапка урока (Header)

Градиентный заголовок с указанием модуля, номера урока, названия и кратким описанием. Цвет градиента соответствует модулю: сине-индиго (from-blue-600 to-indigo-500) для Модуля 1.

🔷 Информационные блоки

Разделы с иконками и заголовками (h2). Каждый раздел раскрывает одну концепцию. Внутри — объяснения, маркированные списки, нумерованные инструкции.

🔷 Примеры кода (Code Blocks)

Каждый пример в тегах <pre><code> с меткой сверху (например, "Python · Пример создания инвойса"). Код можно скопировать и запустить. Комментарии в коде объясняют ключевые строки.

🔷 Info-боксы (Tip / Warning)

Цветные блоки с левой рамкой: зелёные (💡 советы и рекомендации), жёлтые (⚠️ предупреждения), синие (🔍 технические детали), фиолетовые (🎯 цели).

🔷 Таблицы и сетки

Сравнение корректных и некорректных примеров (✅/❌) в двухколоночной сетке. Таблицы для структурирования параметров, кодов ошибок, типов данных.

🔷 Практическая задача

Финальное задание, которое требует написать код. Задача проверяет понимание всех концепций урока. Выполнение обязательно для закрепления материала.

💡 Как работать с кодом в уроках

В каждом уроке ты будешь видеть блоки кода на Python, Bash (команды терминала), JSON (примеры ответов API). Мы рекомендуем создать структуру директорий для курса: aiosend-course/module-01/ и внутри — папку для каждого урока. Так ты всегда сможешь вернуться к своим экспериментам и решениям задач.

Python · Пример кода в уроке (асинхронный)
import asyncio
from aiosend import CryptoPay


async def main() -> None:
    # Создаём экземпляр клиента с нашим токеном
    cp = CryptoPay(token="1234:ABCdefghijklmnop")  # замени на свой токен!

    # Вызываем метод getMe() — получаем информацию о приложении
    app = await cp.get_me()

    # Выводим основные поля объекта App
    print(f"Название приложения: {app.name}")
    print(f"ID приложения: {app.app_id}")
    print(f"Платёжный бот: @{app.payment_processing_bot_username}")


if __name__ == "__main__":
    # Запускаем асинхронную функцию
    asyncio.run(main())
Python · Пример кода в уроке (синхронный)
from aiosend import CryptoPay

# Синхронный режим — используем .sync
cp = CryptoPay(token="1234:ABCdefghijklmnop")

app = cp.sync.get_me()

print(f"Название приложения: {app.name}")
print(f"ID приложения: {app.app_id}")
🏆

Ожидаемый результат после курса

После прохождения этого курса ты:

✅
Будешь уверенно работать с Crypto Pay API через aiosend

От создания простых инвойсов до полноценной системы оплат с вебхуками, фильтрацией событий и интеграцией с Telegram-ботами.

✅
Поймёшь принципы асинхронного программирования в Python

async/await, event loop, корутины, конкурентность — перестанешь бояться этих терминов и начнёшь использовать их на практике.

✅
Научишься читать документацию и работать с API

Важнейший навык: 90% времени программист читает документацию, а не пишет код. Crypto Pay API — отличный пример хорошо задокументированного API.

✅
Сможешь интегрировать криптовалютные платежи в свои проекты

Telegram-боты, веб-сайты, мобильные приложения — любой проект можно монетизировать через Crypto Pay.

✅
Будешь готов к созданию production-решений

Поймёшь, как обрабатывать ошибки, управлять состоянием, настраивать вебхуки, работать с балансами и конкурентными запросами.

✅
Познакомишься с инструментарием Python-разработчика

pip, venv, dotenv, asyncio, pydantic, aiohttp — твой джентльменский набор для работы с API.

Но самое главное — ты поймёшь, как думает разработчик API-интеграций. Это не набор фактов, а особый способ мышления: понимание протоколов (HTTP, REST), умение читать JSON, знание HTTP-статусов (200, 400, 401, 500), способность отлаживать сетевые запросы с помощью curl или Postman. Этот навык останется с тобой навсегда и пригодится при работе с любым API — не только Crypto Pay.

🚀

Что ты сможешь создавать после курса

Вот лишь несколько примеров реальных проектов, которые ты сможешь реализовать:

🤖 Telegram-магазин с оплатой в криптовалюте

Пользователь выбирает товар в боте, получает инвойс на оплату, оплачивает USDT/TON/BTC через @CryptoBot, бот подтверждает оплату через polling/webhook и выдаёт товар (цифровой или информацию для доставки).

💸 Криптокошелёк с функцией переводов

Приложение, которое может отправлять средства пользователям, проверять баланс по каждому активу, вести историю входящих и исходящих транзакций.

🎁 Раздача чеков (Airdrop)

Создание сотен или тысяч чеков для массовой раздачи криптовалюты участникам сообщества. Автоматическая генерация, логирование, мониторинг активаций.

📊 Панель аналитики платежей

Сбор статистики по оплатам через getStats, построение графиков конверсии, отслеживание объёмов в USD, уникальных пользователей.

🔄 Криптообменник с конвертацией

Сервис, который принимает оплату в одной криптовалюте и автоматически конвертирует в другую (через swap_to). Пользователь платит в USDT, а получает TON.

🔐 Система донатов/подписок

Интеграция с Telegram-каналом или ботом: пользователи отправляют донаты или оплачивают подписку, после оплаты получают доступ к закрытому контенту.

🔗

Полезные ссылки

Вот ресурсы, которые пригодятся тебе на всём пути обучения. Сохрани этот список — ты будешь обращаться к нему постоянно:

📖
Официальная документация aiosend

aiosend.readthedocs.io — первоисточник по библиотеке. Установка, API (методы, типы, enums, ошибки), клиент (тулы, шорткаты, DI), события (роутеры, вебхуки, polling), примеры интеграции. Читай, когда хочешь углубиться в детали конкретного метода.

🤖
@CryptoBot — официальный бот для MAINNET

send.t.me — основной бот для работы с криптовалютами в Telegram. Через него пользователи оплачивают инвойсы, активируют чеки и получают переводы. Также доступен в веб-версии и как Telegram Mini App.

🧪
@CryptoTestnetBot — бот для TESTNET

@CryptoTestnetBot — тестовая версия @CryptoBot. Используй её для разработки и отладки. Тестовые монеты можно получить через кран (faucet) внутри бота.

💬
Telegram-чат aiosend (комьюнити)

aiosend.t.me — чат сообщества пользователей и разработчиков библиотеки. Задавай вопросы, делись опытом, получай помощь от автора (@vovchic17) и других разработчиков. Здесь же публикуются новости о новых версиях.

📦
PyPI: aiosend

pypi.org/project/aiosend — страница пакета на Python Package Index. Актуальная версия, зависимости (aiohttp, certifi, magic-filter, pydantic), история изменений (changelog).

🐙
GitHub: aiosend (исходный код)

github.com/vovchic17/aiosend — исходный код библиотеки. Можно читать, форкать, предлагать улучшения через Pull Requests, сообщать об ошибках через Issues.

📋
Crypto Pay API — официальная документация

help.send.tg/en/articles/10279948-crypto-pay-api — полное описание всех методов, типов, ошибок. Полезно, когда хочешь понять, что именно вызывает aiosend под капотом, или проверить актуальность параметров.

🔍
Stack Overflow

stackoverflow.com — если у тебя ошибка, с вероятностью 99% кто-то уже сталкивался с ней. Копируй текст ошибки в Google и добавляй "aiosend" или "Crypto Pay API".

💻
Python Official Documentation

docs.python.org — если нужно освежить знания Python: asyncio, dotenv, pip, venv, исключения.

⚠️ Совет по работе с документацией

Ошибки в aiosend выглядят понятно: APIError: INVOICE_NOT_FOUND. Скопируй название ошибки (INVOICE_NOT_FOUND) в документацию Crypto Pay API — и ты сразу поймёшь, что пошло не так. Умение читать ошибки и документацию — это суперсила разработчика. Не игнорируй её, не паникуй — анализируй.

🧠

Общие рекомендации по работе с API

Работа с любым API (в том числе Crypto Pay) требует соблюдения базовых принципов. Вот что нужно знать и помнить:

📡 HTTP-методы: GET vs POST

Crypto Pay API использует GET-запросы для методов, которые не требуют параметров (getMe, getBalance, getExchangeRates, getCurrencies), и POST — для методов, требующих передачи данных (createInvoice, createCheck, transfer, deleteInvoice, getInvoices с фильтрами). aiosend скрывает эту деталь, но полезно понимать, какие запросы отправляются «под капотом» — это поможет при отладке.

🔑 Аутентификация через токен

Для доступа к API используется токен, который передаётся в HTTP-заголовке Crypto-Pay-API-Token. Токен выдаётся при создании приложения в @CryptoBot (@CryptoTestnetBot). Токен — это секрет! Никогда не публикуй его в открытом коде, не коммить в Git, не передавай третьим лицам. Используй .env-файлы или переменные окружения.

📊 Коды ответов HTTP

200 OK — успешный запрос, тело ответа содержит JSON.
400 Bad Request — неверные параметры (например, не указан обязательный параметр).
401 Unauthorized — неверный или отсутствующий токен.
500 Internal Server Error — ошибка на стороне сервера @CryptoBot. В этом случае нужно повторить запрос позже.

🌐 Сети: MAINNET и TESTNET

Crypto Pay API работает в двух независимых сетях:
— MAINNET (реальные деньги, бот @CryptoBot, URL: https://pay.crypt.bot/api/)
— TESTNET (тестовые монеты, бот @CryptoTestnetBot, URL: https://testnet-pay.crypt.bot/api/)
Для разработки и тестирования всегда используй TESTNET. Переключение на MAINNET происходит автоматически при смене токена. aiosend определяет сеть по токену.

⚠️ Rate Limiting

Crypto Pay API имеет ограничения на количество запросов (rate limiting). Если ты отправляешь слишком много запросов за короткое время, API может вернуть ошибку 429 Too Many Requests. В aiosend встроена защита от этого, но в production-решениях рекомендуется добавить собственную retry-логику с экспоненциальной задержкой.

🐛

Как работать с ошибками

Ошибки — это нормальная часть разработки. Вот как комфорно с ними работать в контексте aiosend:

1️⃣
APIError — ошибка, возвращённая Crypto Pay API. Содержит code (int) и name (str). Примеры: INVOICE_NOT_FOUND, NOT_ENOUGH_BALANCE, ASSET_NOT_FOUND.
2️⃣
APITimeoutError — превышен таймаут ожидания ответа от сервера. Возникает при проблемах с сетью или перегрузке сервера.
3️⃣
WrongNetworkError — попытка использовать метод не в той сети. Например, вызвать transfer в TESTNET, когда он включён только в MAINNET.
4️⃣
DeserializationError — не удалось разобрать ответ от сервера. Возникает, если API вернул неожиданный формат данных. Редкая ситуация.
5️⃣
CryptoPayError — базовый класс для всех ошибок библиотеки. Остальные ошибки наследуются от него.

⚠️ Что делать, если код не работает?

1. Прочитай ошибку — в ней часто уже написана причина. Не игнорируй красный текст!
2. Проверь токен — правильный ли он? Не истёк ли? Тот ли бот (Testnet/Mainnet)?
3. Проверь сеть — MAINNET или TESTNET? Вызов transfer в TESTNET вызовет WrongNetworkError.
4. Проверь параметры — не передаёшь ли ты несуществующий актив? Не превышен ли лимит суммы?
5. Загугли текст ошибки — скопируй в Google с добавлением "aiosend" или "crypto pay api".
6. Спроси в Telegram-чате — комьюнити aiosend активно и дружелюбно.
7. Перечитай теорию урока — возможно, упустил важную деталь.
8. Отдохни — иногда решение приходит после перерыва.

Python · Пример обработки ошибок
from aiosend import CryptoPay
from aiosend.errors import APIError, APITimeoutError

cp = CryptoPay(token="TOKEN")

try:
    app = cp.sync.get_me()
    print(f"App: {app.name}")
except APIError as e:
    print(f"API error {e.code}: {e.name}")
except APITimeoutError:
    print("Request timed out, try again later")
except Exception as e:
    print(f"Unexpected error: {e}")
❓

Часто задаваемые вопросы (FAQ)

❓ Нужен ли опыт программирования для этого курса?

Желательно базовое знание Python: переменные, функции, импорты, установка пакетов через pip. Если ты совсем новичок — рекомендую сначала пройти любой базовый курс Python (хотя бы неделю-две), а потом возвращаться к aiosend.

❓ Нужно ли знать асинхронное программирование?

Нет, мы разберём основы async/await в уроке 1.3. Но если ты уже знаком с asyncio — это плюс.

❓ Можно ли использовать синхронный режим вместо async?

Да, aiosend поддерживает оба режима. Для простых скриптов и тестов удобен синхронный (cp.sync.get_me()), для Telegram-ботов и production — асинхронный.

❓ Сколько времени занимает курс?

При темпе 1 урок в день — примерно 6-8 недель. Можно быстрее (2 урока в день), но качество усвоения может снизиться.

❓ Нужен ли свой сервер для вебхуков?

Для изучения — нет, достаточно polling (опрос API). Для production — да, нужен сервер с HTTPS и публичным IP/доменом.

❓ Что если я застряну на задаче?

Не паникуй. Перечитай теорию, разбери примеры. Попробуй упростить задачу. Если ничего не помогает — напиши в Telegram-чат aiosend с описанием проблемы и кодом.

📌

Что важно запомнить

1️⃣
aiosend — это Python-обёртка для Crypto Pay API. Она берёт на себя всю работу с HTTP, JSON-сериализацией, валидацией через pydantic и обработкой ошибок.
2️⃣
Crypto Pay API — это платёжный шлюз, а не блокчейн. Все транзакции проходят через @CryptoBot. Пользователи платят внутри Telegram, а ты получаешь уведомления.
3️⃣
Курс состоит из 9 модулей. Иди последовательно, не перескакивай. Каждый урок опирается на предыдущий. Оптимальный темп — 1 урок в день.
4️⃣
Пиши код руками, решай задачи, экспериментируй. Без практики теория бесполезна. Не копируй — набирай сам. Меняй примеры, ломай код, учись на ошибках.
5️⃣
Не бойся ошибок. Ошибки — это подсказки. Читай их, гугли, разбирайся. Сообщество aiosend в Telegram всегда готово помочь.
6️⃣
Для тестирования используй TESTNET. Не работай с реальными деньгами, пока не разберёшься во всех деталях и не протестируешь всё в тестовой сети.
7️⃣
Документация — твой лучший друг. aiosend.readthedocs.io и help.send.tg — сохрани эти ссылки. Документация всегда актуальнее любого курса.
⚙️

Практическая задача

Задание: Изучить официальную документацию aiosend

Твоя задача — открыть официальную документацию aiosend и выполнить следующие шаги:

  1. Перейди на сайт aiosend.readthedocs.io и внимательно ознакомься со структурой документации.
  2. Найди раздел Installation — выпиши, какие 8 способов установки поддерживаются (минимум 5).
  3. Найди раздел API → Methods — выпиши все 12 методов, которые поддерживает aiosend. Для каждого кратко запиши, что он делает.
  4. Найди раздел API → Types — изучи структуру объекта App. Какие поля (атрибуты) у него есть? Запиши их названия.
  5. Найди раздел Client → Tools — выпиши дополнительные методы (tools), которые не входят в официальный API.
  6. Найди раздел Integration examples — посмотри пример интеграции с aiogram 3.x. Просто прочитай, не пытайся запустить.
  7. Создай текстовый файл aiosend_overview.txt в папке проекта и запиши туда краткую сводку (10-15 предложений) о том, что ты узнал из документации.

Это задание не требует написания кода — оно приучает тебя работать с документацией. Умение читать документацию — важнейший навык программиста, возможно, даже важнее умения писать код. Удели этому заданию минимум 20-30 минут.

Урок 1.1: Как проходить курс

9 вопросов