Асинхронный телеграм-бот с блэкджеком и админкой.
Бот, магазин для ваших товаров, на котором можно заработать. Оплата происходит через систему Юкасса. Есть админка с кучей функций, а также возможность подписки для пользователей (важные новости и товары).
Основное меню.
Навигационное меню включает в себя четыре раздела: каталог товаров, корзина, рассылка и админка (доступна только администраторам, другим пользователям нет доступа к ней).
Каталог товаров
Любой товар можно добавлять в корзину пока он не закончится на складе (бот пришлет уведомление). Выход из каталога товаров кнопка назад.
Рассылка
В боте есть возможность подписаться на спецальную рассылку. Вы будете получать новости о новых товарах, а также важные сообщения от администраторов.
Корзина
Есть возможность отмены покупки, в таком случае корзина очищается.
Здесь показан пример тестового платежа. После оплаты администраторы получают уведомление о заказе.
Админка
- Добавление нового товара, настройка названия, описания, цены, кол-ва на складе и фотографии. Можно уведомлять подписчиков о новинке.
- Возможность как удаления отдельных товаров, так и очищения всего магазина.
- Специальное сообщение (показывается всем подписичкам).
- Можно добавлять новых админов и добавлять существующих. Чтобы сделать человека админом, у него должен быть чат с ботом.
Настройка
Для начала нужно получить токен от бота в BotFather, а также токен от вашей Юкассы. Ее настройка проходит через Bot -> Payments -> Юкасса. Для тестовых платежей используйте токен, который можно сгенерировать через BotFather и получить туть.
Теперь необходимо настроить MongoDB. В конфигурационном файле указаны названия бд и коллекций по умолчанию, вы можете заменить их на свои. В кластере обязательно должна быть БД для корзины, туда будут лететь заказы, которые покупатели добавили в корзину, БД пользователей с двумя коллекциями (админы и подписчики), а также БД, в которой мы будем хранить товары.
Осталось дело за малым. Добавить админку. В разделе Database Access создайте пользователя с правами чтения и записи любой БД. Теперь внесите user_name и user_password в конфигурационный файл. Далее нам нужно добавить себя в БД пользователей Mongo, чтобы был доступ к админке в самом боте. Создайте в коллекции админов новый документ, внесите в него свой id (можно узнать здесь) и user_name. Пример показан ниже. На этом настройка магазина завершена!
Стек
Python: https://www.python.org/
Aiogram: https://github.com/aiogram/aiogram
Motor: https://github.com/mongodb/motor
MongoDB: https://www.mongodb.com/