Skip to content

neverwasbored/TgGiftBuyerBot

Repository files navigation

🚀 Telegram GiftBuyer Bot

Python 3.12
License: MIT

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/               # низкоуровневое Tele­gram API
├── interfaces/                 # абстракции репозиториев и сервисов
│   ├── repositories/
│   ├── services/
│   └── telegram/               # логика бота
└── main.py                     # точка входа (python -m app.main)

⚙️ Настройка окружения

  1. Установите Python 3.12.10

  2. Клонируйте репозиторий и перейдите в него

  3. Создайте файл .env в корне:

    Переменная Описание
    BOT_TOKEN Токен вашего бота (без кавычек)
    DATABASE_URL sqlite+aiosqlite:///user_data.db
    CHECK_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
– Количество циклов автопокупки
🕓 История Показать список всех транзакций
🔕 Не беспокоить Отключить/включить уведомления о новых подарках

💡 Примеры использования

  1. Запуск бота:
    /start
    
  2. Ручная покупка: нажмите 🎁 и введите, например:
    12345, 67890, 2
    
  3. Автопокупка: нажмите 🤖, установите:
    • Цена: от 50 до 200 звёзд
    • Supply: 10
    • Циклы: 3
  4. Просмотр истории: нажмите 🕓
  5. Управление уведомлениями: 🔕 «Не беспокоить»

🌐 Локализация


🔄 Команда /refund

Чтобы воспользоваться командой /refund:

  1. Откройте базу данных (файл user_data.db в корне проекта). Мой выбор - Sqlite Browser (Программа для редактирования бд)
  2. В таблице users измените поле status вашего аккаунта с USER на ADMIN.
  3. Перейдите в таблицу transactions и скопируйте telegram_payment_charge_id нужной транзакции.
  4. Вернитесь в бота и выполните команду:
    /refund <telegram_payment_charge_id>
    

⚠️ Важно: если на балансе бота меньше звёзд, чем в указанной транзакции, рефанд не выполнится.

Альтернатива: вывод средств через Telegram‑бота. Требуется не менее 1000 звёзд на балансе для вывода.

Поддерживаются русский и английский языки.
Язык определяется автоматически по языковым настройкам Telegram или через /help.


👤 Автор

neverwasbored


📝 Лицензия

Этот проект лицензируется под MIT License.

About

A Telegram bot that can automatically buy up new gifts according to set parameters, as well as a manual mode in which you can select the gift, recipient and quantity.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages