Веб-интерфейс senjun.ru.
Для полноценной работы сайта нужно, чтобы рядом работали сервисы handyman и watchman_cpp.
Склонировать проект:
git clone https://github.com/senjun-team/scene.gitНастроить окружение:
cd scene
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txtСоздать свой конфиг и заполнить его значениями:
cd scene
cp conf-template.json conf.jsonВнутри conf.json как минимум нужно задать свой пароль для бд, с которой работает проект. В отладочных целях другие поля кастомизировать не обязательно.
Для работы проекту требуедся бд. Можно поднять PostgreSQL в докере:
docker run -e POSTGRES_PASSWORD=senjun_pass -p 5432:5432 -v postgres-senjun-data:/var/lib/postgresql/data -d postgresЗаходим внутрь контейнера, запускаем psql
docker exec -it CONTAINER_ID bash
psql -U postgresСоздаем бд для проекта:
CREATE DATABASE scene;
CREATE USER scene WITH password 'scene';
ALTER ROLE scene SET client_encoding TO 'utf8';
ALTER ROLE scene SET default_transaction_isolation TO 'read committed';
ALTER ROLE scene SET timezone TO 'UTC';
ALTER DATABASE scene OWNER TO scene;
GRANT ALL PRIVILEGES ON DATABASE scene TO scene;
Проводим миграцию табличек:
cd ..
python manage.py makemigrations
python manage.py migrateНастраиваем кеш. Он нужен для рейт-лимита на аутентификационные апи:
python3 manage.py createcachetableСоздаем пользователя, под которым можно будет логиниться на сайте:
cd scene
python3 manage.py shellПопав в шел джанги, пишем:
from django.contrib.auth.models import User
user = User.objects.create_user(username='login', email='mail@example.com', password='password')
user.save()После этого запускаем проект:
python3 manage.py runserver --insecure 127.0.0.1:8001По адресу http://127.0.0.1:8001/ открывается сайт. Можно логиниться.
Получение внутреннего id пользователя:
curl -X POST -d '{"key":"key_from_conf", "user_id":522727992}' "http://127.0.0.1:8001/v1/get_user_id/telegram_bot/"Синхронизация учеток пользователя в боте и на сайте:
curl -X POST -d '{"key":"key_from_conf", "user_id":522727992, "activation_key":"9c7kjbb-_l6)rt6%mf1p$p#z*81a2in04!2w)%wuo65we)=0mh"}' "http://127.0.0.1:8001/sync_tg_bot_with_site/"При синхронизации внутренний id пользователя в боте не изменится. Изменится внутренний id пользователя на сайте. В качестве "user_id" нужно передавать айди пользователя из телеграма (не внутренний).
Варианты ответов:
- Пустой json. Какая-то ошибка, скорее всего связанная с попытками опрокинуть сцену.
{"status":0}- json с полем status. Если status=0, то все ок и синхронизация произошла успешно. Нужно перезапросить новый внутрнний id пользователя. Если 1, тоactivation_keyзаэкспайрился (ему больше суток). Другие коды - опять же какая-то ошибка, скорее всего связанная с опрокидыванием.