For use EN docs, open ReadmeEN.md Автоматическая и ручная покупка подарков в Telegram на основе Aiogram.
Реализовано по принципам Clean Architecture.
Официальный бот репозитория ещё не готов. Все боты, использующие этот репозиторий, не являются официальными. Используйте на свой страх и риск.
Отправка подарков в Telegram‑каналы не поддерживается.
Из-за новых попыток Telegram ограничивать работу Bot API при выпуске новых подарков, возможности этого репозитория могут быть ограничены в некоторых ситуациях. К сожалению, user-bot решения также периодически блокируются. Универсальных альтернатив у меня на данный момент нет — придётся искать и тестировать их самостоятельно.
- ✨ Особенности
- 🛠 Технологии
- 📂 Структура проекта
- ⚙️ Настройка окружения
- ⬇️ Установка
- 🔧 Конфигурация
- ⚙️ Настройки автопокупки
▶️ Запуск- 📱 Команды и кнопки
- 💡 Примеры использования
- 🌐 Локализация
- 👤 Автор
- 📝 Лицензия
| Сеть | Токен | Адрес / Тег |
|---|---|---|
| 🟥 TRON (TRC20) | USDT | TPoRfLVf4bYhZhcqLaY1UXneWD7FsP8n9U |
| 🌐 TON | ANY_TOKEN | EQBVXzBT4lcTA3S7gxrg4hnl5fnsDKj4oNEzNp09aQxkwj1fТЕГ: 845065 |
| 🪐 Solana | USDT | 6Y5Ke1iudDqSVFMD6iRw6rVNaG61oeiMhuNfpz4tXWb8 |
| 🐬 BSC (BEP20) | USDT | 0xe2ea80596e8d2cca8353c0c54753b15f03d11a4b |
| 🏗️ Polygon | USDT | 0xe2ea80596e8d2cca8353c0c54753b15f03d11a4b |
| 🔥 Ethereum (ERC20) | USDT | 0xe2ea80596e8d2cca8353c0c54753b15f03d11a4b |
🙏 Спасибо за вашу поддержку!
- 💳 Депозит — пополнение баланса
- 🎁 Ручная покупка — указать ID подарка, Telegram ID и количество
- 🤖 Автопокупка — автоматический скан и покупка по фильтрам
- 🕓 История — полный список транзакций
- 🔕 Не беспокоить — вкл/выкл уведомления о новых подарках
- Python 3.12.10
- Aiogram 3.21.0
- aiohttp 3.12.14
- aiosqlite 0.21.0
- APScheduler 3.11.0
- Loguru 0.7.3
- Pydantic 2.11.7 + pydantic‑settings 2.10.1
- SQLAlchemy 2.0.41
app/
├── application/ # use_cases: реализация бизнес-логики
│ └── use_cases/
├── core/ # конфигурация и логирование
│ ├── config.py
│ └── logger.py
├── domain/ # доменные сущности и DTO
│ └── entities/
├── infrastructure/ # интеграции и хранилища
│ ├── db/ # SQLAlchemy + SQLite
│ ├── scheduler/ # APScheduler
│ ├── services/ # HTTP‑клиенты, внешние API
│ └── telegram/ # низкоуровневое Telegram API
├── interfaces/ # абстракции репозиториев и сервисов
│ ├── repositories/
│ ├── services/
│ └── telegram/ # логика бота
└── main.py # точка входа (python -m app.main)
-
Установите Python 3.12.10
-
Клонируйте репозиторий и перейдите в него
-
Создайте файл
.envв корне:Переменная Описание BOT_TOKENТокен вашего бота (без кавычек) DATABASE_URLsqlite+aiosqlite:///user_data.dbCHECK_GIFTS_DELAY_SECONDSИнтервал проверки (в секундах)
BOT_TOKEN=YOUR_TOKEN
DATABASE_URL=sqlite+aiosqlite:///user_data.db
CHECK_GIFTS_DELAY_SECONDS=3
Видео по установке репозитория: Клик
# Если не знакомы с Git:
# 1. Скачайте ZIP-архив:
# https://github.com/neverwasbored/TgGiftBuyerBot/archive/refs/heads/main.zip
# 2. Распакуйте:
# Windows: ПКМ → "Извлечь все"
# Linux/macOS: unzip main.zip
# 3. Перейдите в папку:
# cd TgGiftBuyerBot-main
# Или клонировать репозиторий:
git clone https://github.com/neverwasbored/TgGiftBuyerBot.git
cd TgGiftBuyerBot
# Быстрый старт!
Запустите setup_and_run для вашей системы!
# Создать виртуальное окружение (Windows)
python -m venv venv
venv\Scripts\activate
# Или (Linux/macOS)
python3.12 -m venv venv
source venv/bin/activate
# Установить зависимости
pip install -r requirements.txt- Миграции не используются — таблицы создаются автоматически при первом запуске.
- В
.envуказывайте только свойBOT_TOKEN; остальные параметры подходят по умолчанию.
Для обеспечения безопасности, конфиденциальности и удобства отладки рекомендуется запускать бота локально на вашем компьютере.
Автопокупка позволяет боту самостоятельно искать и приобретать новые подарки по вашим критериям — без лишних запросов!
-
Цена (от / до)
Задайте диапазон цены в звёздах. Бот будет рассматривать только подарки, цена которых попадает в этот интервал. -
Supply
Общее количество выпущенных подарков (supply). Бот будет учитывать только подарки с указанным supply. -
Циклы автопокупки
Количество «проходов» по списку новых подарков.
Например, при 3 новых подарках, где 2 подходят под фильтры, и 2 циклах бот совершит 4 покупки (2×2), пока хватает баланса.
# При активном виртуальном окружении
python -m app.main| Команда | Описание |
|---|---|
/start |
Запустить бота |
/help |
Справка и помощь |
| Элемент | Действие |
|---|---|
| 💳 Депозит | Пополнить баланс |
| 🎁 Купить подарок | Ручная покупка (ввод: ID_подарка, Telegram_ID, количество) |
| 🤖 Автопокупка | Вкл/выкл автопокупку; задаются фильтры: – Цена от/до – Supply – Количество циклов автопокупки |
| 🕓 История | Показать список всех транзакций |
| 🔕 Не беспокоить | Отключить/включить уведомления о новых подарках |
- Запуск бота:
/start - Ручная покупка: нажмите 🎁 и введите, например:
12345, 67890, 2 - Автопокупка: нажмите 🤖, установите:
- Цена: от 50 до 200 звёзд
- Supply: 10
- Циклы: 3
- Просмотр истории: нажмите 🕓
- Управление уведомлениями: 🔕 «Не беспокоить»
Чтобы воспользоваться командой /refund:
- Откройте базу данных (файл
user_data.dbв корне проекта). Мой выбор - Sqlite Browser (Программа для редактирования бд) - В таблице
usersизмените полеstatusвашего аккаунта сUSERнаADMIN. - Перейдите в таблицу
transactionsи скопируйтеtelegram_payment_charge_idнужной транзакции. - Вернитесь в бота и выполните команду:
/refund <telegram_payment_charge_id>
Альтернатива: вывод средств через Telegram‑бота. Требуется не менее 1000 звёзд на балансе для вывода.
Поддерживаются русский и английский языки.
Язык определяется автоматически по языковым настройкам Telegram или через /help.
Этот проект лицензируется под MIT License.