diff --git a/.dockerignore b/.dockerignore index 7ea3ebf..70a38ec 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,3 +2,4 @@ venv config.json *.yaml +docs/ diff --git a/README.md b/README.md index 7dfa0a2..2b043e8 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ ### Для разработчиков: сборка и запуск проекта Вам потребуется собственный VPS или любой хост со статическим адресом или доменом. -* Создайте файл .env и заполните его по образцу example.env. Вам нужно заполнить переменные: +* Создайте файл .env по образцу example.env. Вам нужно заполнить переменные: * BOT_TOKEN - токен нового бота, получить у [@botfather](https://t.me/botfather) * POSTGRES_PASSWORD - любой случайный пароль * WEBHOOK_HOST - IP адрес или доменное имя сервера, на котором запускается проект diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..d0c3cbf --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/images/start.jpg b/docs/images/start.jpg new file mode 100644 index 0000000..f2ea816 Binary files /dev/null and b/docs/images/start.jpg differ diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..9534b01 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/source/about.rst b/docs/source/about.rst new file mode 100644 index 0000000..9d597c5 --- /dev/null +++ b/docs/source/about.rst @@ -0,0 +1,38 @@ +О проекте +=================================== + +Зачем нужен Olgram? +------------ + +Olgram - это конструктор ботов обратной связи. Такие боты могут вам пригодиться, например: + +Пример 1. Вы администрируете Telegram-канал и хотите дать своим подписчикам возможность связаться с вами, +но не хотите оставлять свои личные контакты. Тогда вы можете создать бота обратной связи: подписчики будут писать +боту, вы будете отвечать через бота анонимно. + +Пример 2. Вы организуете небольшой call-центр в Telegram или группу технической поддержки. С помощью бота обратной +связи вы можете принимать заявки от пользователей в общий чат ваших специалистов, обсуждать эти заявки и отвечать +пользователям прямо из этого чата. + +.. note:: + + Olgram - молодой развивающийся проект. Мы готовы расширить функционал бота под ваш сценарий использования, если он + не является слишком узкоспециализированным и пригодится другим пользователям. Напишите нам по этому вопросу + `@civsocit_feedback_bot `_. + +Почему не Livegram? +------------ + +Наше принципиальное отличие от `Livegram `_ это открытость и безопасность. + +* Olgram не хранит сообщения, которые вы пересылаете через него +* Код нашего проекта `полностью открыт `_ +* Вы можете развернуть Olgram на своём собственном сервере (читайте :doc:`developer`) +* Наши сервера находятся в Германии, мы не подконтрольны российскому или белорусскому правительству + +Всё это позволяет вам использовать Olgram (в отличие от Livegram) в политических и других серьёзных проектах. + +.. note:: + + Если у вас возникли вопросы по использованию бота, или вы нашли ошибку - напишите + нам `@civsocit_feedback_bot `_. diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..668847a --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,35 @@ +# Configuration file for the Sphinx documentation builder. + +# -- Project information + +project = 'Olgram' +copyright = '2021, Civsocit' +author = 'civsocit' + +release = '0.1' +version = '0.1.0' + +# -- General configuration + +extensions = [ + 'sphinx.ext.duration', + 'sphinx.ext.doctest', + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.intersphinx', +] + +intersphinx_mapping = { + 'python': ('https://docs.python.org/3/', None), + 'sphinx': ('https://www.sphinx-doc.org/en/master/', None), +} +intersphinx_disabled_domains = ['std'] + +templates_path = ['_templates'] + +# -- Options for HTML output + +html_theme = 'sphinx_rtd_theme' + +# -- Options for EPUB output +epub_show_urls = 'footnote' diff --git a/docs/source/developer.rst b/docs/source/developer.rst new file mode 100644 index 0000000..8be0bf8 --- /dev/null +++ b/docs/source/developer.rst @@ -0,0 +1,34 @@ +Для разработчиков +================= + +Сборка и запуск +--------------- +Вы можете развернуть Olgram на своём сервере. Вам потребуется собственный VPS или любой хост со статическим адресом +или доменом. + +1. Создайте файл .env и заполните его по образцу `example.env `_ +Вам нужно заполнить переменные: + +* ``BOT_TOKEN`` - токен нового бота, получить у `@botfather `_ +* ``POSTGRES_PASSWORD`` - любой случайный пароль +* ``WEBHOOK_HOST`` - IP адрес или доменное имя сервера, на котором запускается проект + +2. Сохраните файл `docker-compose.yaml `_ +и соберите его: + +.. code-block:: console + + (bash) $ sudo docker-compose up -d + +Готово, ваш собственный Olgram запущен! + +Дополнительно +------------- + +В docker-compose.yaml приведена минимальная конфигурация. Для использования в серьёзных проектах мы советуем: + +* Приобрести домен и настроить его на свой хост +* Наладить реверс-прокси и автоматическое обновление сертификатов - например, с помощью `Traefik `_ +* Скрыть IP сервера с помощью `Cloudflire `_, чтобы пользователи ботов не могли найти IP адрес хоста по Webhook бота. + +Пример более сложной конфигурации есть в файле `docker-compose-full.yaml `_ diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..e5a6aa2 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,22 @@ +Добро пожаловать в документацию Olgram +=================================== + +**Olgram** `@olgrambot `_ это конструктор, который позволяет создавать боты обратной связи +в Telegram. После подключения к Olgram пользователи вашего бота смогут писать сообщения, которые будут +пересылаться вам в чат, где вы сможете на них ответить. Читайте больше о проекте в главе :doc:`about`. + +Откройте главу :doc:`quick_start` чтобы приступить к созданию своего первого бота! + +Оглавление +-------- + +.. toctree:: + + about + quick_start + developer + +.. note:: + + Если у вас возникли вопросы по использованию бота, или вы нашли ошибку - напишите + нам `@civsocit_feedback_bot `_. \ No newline at end of file diff --git a/docs/source/quick_start.rst b/docs/source/quick_start.rst new file mode 100644 index 0000000..43111a5 --- /dev/null +++ b/docs/source/quick_start.rst @@ -0,0 +1,27 @@ +Быстрый старт +===== + +Как создать бота +------------ + +Перейдите по ссылке `@Olgram `_ и нажмите Запустить: + + +.. image:: ../images/start2.jpg + :width: 300 + +TODO: дальше + +Как изменить текст приветствия +---------------- + +По-умолчанию ваш бот после запуска отправляет приветственное сообщение: + + Здравствуйте! Напишите свой вопрос, и мы ответим вам в ближайшее время + +TODO: дальше + +Как привязать бота к групповому чату +---------------- + +По-умолчанию вам бот пересылает сообщения от пользователей вам в личные сообщения. \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..dc0d281 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,8 @@ +[build-system] +requires = ["flit_core >=3.2,<4"] +build-backend = "flit_core.buildapi" + +[project] +name = "olgram" +authors = [{name = "civsocit", email = "feedback@civsoc.it"}] +dynamic = ["version", "description"]