@WizardLavka_bot – Telegram бот для продажи Чудесного и Невероятного.
Вход не для всех, вы же понимаете...
Стек технологий: Aiogram, PostgresSQL, Redis, Docker Compose, Qiwi Api, Requests.
- Использование БД PostgreSQL, Redis. Первая хранит таблицы с данными о пользователях и счетах системы Qiwi, вторая нужна для хранения информации о "состоянии" пользователя – FSM.
- Проект запускается в Docker Compose.
- Работа с Qiwi Api для выставления счетов и проверки их оплаты. Реализация через Requests.
- Управление каталогом через чат. Добавить товар /add.
- Поиск товаров осуществляется в inline mode, т.е. через сообщение вида @WizardLavka_bot QUERY
- Реализована корзина, в которой можно изменять количество товаров.
- Реферальная система – каждый пользователь имеет уникальный реферальный код и ссылку. Чтобы стать покупателем необходимо либо пройти по реферальной ссылке, либо ввести код вручную. Владелец реферального кода получает монеты, которые списываются при оформлении заказа.
В корне скачанного репозитория создать файл .env и заполнить его согласно примеру – .env_example.
Обращу лишь внимание на переменную DB_DUMP=. В ней нужно указать абсолютный путь, где будут храниться данные БД Postgre, Redis. Например, если указать /home/logofios/projects/dump/wizard_lavka_bot, то в этом каталоге будут созданы: /wizard_lavka_telegram_bot_redis, /wizard_lavka_telegram_bot_pgdata
В файле /bot/config.py внести id администраторов. Узнать id проще всего у @MyTidBot.
admins = [
23466746,
# Latand
362089194
]
После этого можно запускать проект:
sudo docker-compose build
sudo docker-compose up
В самый первый запуск, скорее всего, потребуется выполнить docker-compose up дважды, т.е.:
sudo docker-compose build
sudo docker-compose up
ctrl+c
sudo docker-compose up
Это связано с тем, что БД ещё не успеют проинициализироваться к тому моменту, когда к ним начнёт подключаться бот. ¯\(ツ)/¯
- Заменить requests на aiohttp.
- Добавить админам возможность удалять товары (кнопка предусмотрена, но нет обработки её нажатия).
- Ограничить количество приглашаемых покупателей для каждого пользователя. Сейчас – можно приглашать сколько угодно.
Изменить InlineQueryAnswer – убрать реферальную ссылку. Кнопка должна СРАЗУ выдавать товар. Если пользователь УЖЕ начал общение с ботом. Иначе – ничего не происходит.- Переработать момент с инициализацией переменной Telegraph(?).
- Инициализацию БД перенести из bot.py в repository.py.
Заменить polling на вебхуки.(Смысла нет, пока отмена)