Пример работающего бота: Bot
Интернет магазин создан на базе API сервиса Moltin.
В представленной программе реализованы основные методы взаимодействия покупателя с магазином:
- просмотр списка доступных товаров
- просмотр информации о конкретном товаре
- возможность добавить товар в корзину или удалить из неё
- просмотр корзины
- оплата товаров в корзине
- создание заказа в CMS магазина
- отправка данных о заказе доставщику пиццы
- добавление информации о покупателе в CMS магазина
-
В модуле
api_store.py
реализованы функции для взаимодействия с API магазина -
В модуле
bot_tg.py
реализовано взаимодействие пользователя через интерфейс telegram с API магазина -
В модуле
logger.py
реализован класс собственного обработчика логов -
В модуле
geo_informer.py
реализованы функции получения данных о геолокации и расчета минимальных расстояний -
В модуле
upload_data.py
реализованы функции загрузки данных в CMS магазина
TELEGRAM_TOKEN=<Токен от бота Tg>
TELEGRAM_TOKEN_LOG=<Токен от бота Tg для отправки сообщения логгера>
CHAT_ID_LOG=<Id чата для получения сообщений логгера>
CLIENT_ID=<Уникальный идентификатор клиента API магазина>
CLIENT_SECRET=<Секретный ключ клиента API магазина>
DATABASE_PASSWORD=<Пароль доступа к базе Redis>
DATABASE_HOST=<Хост от базы Redis>
DATABASE_PORT=<Порт базы Redis>
YANDEX_GEO_TOKEN=<Токен от API геокодера Яндекса>
PROVIDER_TOKEN=<Токен сервиса приема платежей>
У вас должен быть установлен python версии не ниже 3.10.6
У вас должны быть установлены следующие пакеты: git
, python3-pip
, python3-venv
- Загрузите данные:
git clone git@github.com:Sergryap/pizza-payments.git
- Перейдите в созданную директорию:
cd pizza-payments-shop
- В корневой папке проекта создайте файл .env по описанию выше:
sudo nano .env
- Находясь в корневой папке проекта, создайте виртуальное окружение:
python3 -m venv venv
- Активируйте созданное виртуальное окружение:
source venv/bin/activate
- Установите необходимые библиотеки:
pip install -r requirements.txt
- Запустите бота:
python3 bot_tg.py
Бот facebook реализован в модуле fb_bot.py посредством технологии webhook.
Для запуска webhook (специального сайта на который приходят события от api facebook) выполните следующее:
- Установите nginx на своем удаленном сервере и пропишите в его настройках следующую конфигурацию:
server {
location /images/ {
alias /opt/facebook-bot-webhook/images/;
}
location / {
include '/etc/nginx/proxy_params';
proxy_pass http://127.0.0.1:8003/;
}
root /var/www/html;
server_name starburger-serg.store;
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/starburger-serg.store/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/starburger-serg.store/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = starburger-serg.store) {
return 301 https://$host$request_uri;
}
listen 80 ;
listen [::]:80 ;
server_name starburger-serg.store;
return 404;
}
При этом замените название домена на своё
- Настройте автоматическое обновление сертификатов для домена, создав два файла:
certbot-renewal.service:
[Unit]
Description=Certbot Renewal
[Service]
ExecStart=/usr/bin/certbot renew --force-renewal --post-hook "systemctl reload nginx.service"
certbot-renewal.timer:
[Unit]
Description=Timer for Certbot Renewal
[Timer]
OnBootSec=300
OnUnitActiveSec=1w
[Install]
WantedBy=multi-user.target
- Настройте автоматический запуск webhook:
Для этого создайте файл /etc/systemd/system/facebook-bot-webhook.service
:
[Unit]
Description=fb-webhook-site
[Service]
Type=simple
WorkingDirectory=/opt/facebook-bot-webhook
EnvironmentFile=/opt/facebook-bot-webhook/.env
ExecStart=/opt/facebook-bot-webhook/venv/bin/gunicorn -w 3 -b 127.0.0.1:8003 fb_bot:app
Restart=always
[Install]
WantedBy=multi-user.target
- В файл
.env
добавьте значения переменных:
HIERARCHY_ID=<HIERARCHY ID от магазина moltin>
FRONT_PAGE_NODE_ID=<NODE ID от вашего основного node для главного меню>
PAGE_ACCESS_TOKEN=<Токен от вашего приложения facebook>
VERIFY_TOKEN=<токен для верификации webhook - произвольная строка>
- Запустите бота, выполнив команды
systemctl daemon-reload
systemctl start facebook-bot-webhook.service
systemctl enable facebook-bot-webhook.service