Skip to content

Latest commit

 

History

History
executable file
·
170 lines (124 loc) · 9.24 KB

README-ua.md

File metadata and controls

executable file
·
170 lines (124 loc) · 9.24 KB

Телеграм-бот з функціональністю підписки 🤖

Documentation:


Вступ

Цей репозиторій містить вихідний код Telegram-бота, розробленого для впровадження функціональності підписки. Незалежно від того, чи хочете ви керувати підписками, доставляти своєчасні оновлення чи спілкуватися зі своєю аудиторією, цей бот, написаний на Python за допомогою фреймворку aiogram версії 2 та асинхронної оболонки SQLite3 під назвою aiosqlite, підходить для всіх ваших потреб. 🤖📱

Основна функціональність підписки

Цей Telegram-бот вже має фундаментальну систему підписки, включаючи перевірку підписки. Ви можете переглянути код, відповідальний за цю функціональність, в обробниках payment.py та модулі utils.

Підтвердження оплати

Процес перевірки оплати забезпечує, що користувачі сплатили необхідну суму підписки в USDT TRC20. Це досягається за допомогою змінних USDT_TRC20_WALLET_ADDRESS та SUBSCRIBE_AMOUNT_IN_USDT_TRC20, які визначені в файлі config.py.

Для перевірки оплати ви можете звертатися до коду в payment.py. Цей код перевіряє, чи здійснив користувач оплату принаймні вказаної суми в USDT TRC20 на визначену адресу гаманця. Користувачі, які сплатили, вважаються підписаними, тоді як ті, хто не сплатили або сплатили недостатньо, розглядаються як непідписані.

Управління підписками користувачів

У модулі utils ви знайдете функції та утиліти, пов'язані з управлінням підписками користувачів. Ці функції дозволяють вам:

  • Перевірити статус підписки користувача.
  • Керувати поновленням підписок на основі змінної NUMBER_DAYS_FROM_ONE_PAYMENT.
  • Налаштувати взаємодію з користувачем на основі його статусу підписки.

Використовуючи ці утиліти в коді вашого бота, ви можете забезпечити доступ користувачів до певних функцій або контенту лише при наявності у них підписки. Це дозволяє вам докладно керувати досвідом користувача і створювати сервіс на основі підписки.

Структура проекту

.
├── .env-dist
├── README.md
├── requirements.txt
└── src
    ├── bot
    │   ├── app.py
    │   ├── data
    │   ├── database
    │   ├── filters
    │   ├── handlers
    │   ├── keyboards
    │   ├── loader.py
    │   ├── logs
    │   ├── middlewares
    │   ├── statesgroup.py
    │   └── utils
    └── db
        └── database_schema.sql

Встановлення

Перед запуском бота переконайтеся, що у вас встановлено Python 3.8+ і виконайте ці кроки:

  1. Клонуйте

репозиторій на свій комп'ютер:

git clone https://github.com/ProgerOffline/subscribe.git
cd subscribe
  1. Створіть віртуальне середовище (рекомендовано, але не обов'язково):

    python -m venv venv
  2. Активуйте віртуальне середовище:

    source venv/bin/activate
  3. Оновіть pip в середовищі:

    pip3 install --upgrade pip
  4. Встановіть залежності, перераховані в файлі requirements.txt:

    pip install -r requirements.txt

Налаштування

Перед запуском бота вам потрібно налаштувати наступні параметри:

  1. Створіть бота в Telegram і отримайте його токен від BotFather.

  2. Відредагуйте файл .env-dist, вказавши отриманий токен та, за потреби, інші налаштування:

    BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
  3. Перейменуйте файл .env-dist на .env.

Запуск

Після налаштування ви можете запустити бота за допомогою наступної команди:

cd src/bot/
python3 app.py

Бот буде активним і готовим обробляти команди та запити користувачів в Telegram. Звісно, ось повний текст з доданою інформацією про файл конфігурації:

Звісно, ось повний текст з доданою інформацією:

Використання

Файл конфігурації

Для налаштування конкретних аспектів поведінки вашого бота ви можете використовувати файл config.py, який розташований у каталозі src/bot/data/. Цей файл включає наступні змінні:

# Адреса гаманця USDT TRC20, яка використовується для транзакцій
USDT_TRC20_WALLET_ADDRESS = 'TF8aSMqpwtniPN77wS2EZTTcUKaaJhyorb'

# Сума в USDT TRC20, необхідна для підписки
SUBSCRIBE_AMOUNT_IN_USDT_TRC20 = 5

# Кількість днів між кожним платежем за підпискою
NUMBER_DAYS_FROM_ONE_PAYMENT = 30

Ви можете використовувати ці змінні у своєму коді, щоб налаштувати поведінку вашого Telegram-бота відповідно до вказаних значень.

Управління підпискою користувача

У модулі handlers, який розташований в src/bot/handlers/, у вас є можливість створювати свої власні файли *.py та імпортувати їх у вашого бота, редагуючи файл __init__.py наступним чином:

# -*- coding: utf-8 -*-

from .start import *
from .payment import *

В будь-якому з ваших файлів обробників ви можете реалізувати фільтри, щоб визначити, чи підписаний користувач, чи ні. Ось приклад:

# -*- coding: utf-8 -*-

from filters.user_not_subscribed import UserNotSubscribedFilter
from filters.user_subscribed import UserSubscribedFilter

# Команда "start" для підписаних користувачів
@dp.message_handler(UserSubscribedFilter(), commands=['start'], state="*")
...

# Та ж команда, але для користувачів, які не підписані на бота
@dp.message_handler(UserNotSubscribedFilter(), commands=['start'], state="*")
...

Це дозволяє вам обробляти повідомлення по-різному в залежності від того, чи підписаний користувач, чи ні, надаючи більше гнучкості в поведінці вашого бота.