diff --git a/docs/source/options.rst b/docs/source/options.rst
index 8d86274..2c2b919 100644
--- a/docs/source/options.rst
+++ b/docs/source/options.rst
@@ -21,7 +21,7 @@ Olgram пересылает сообщения так, чтобы сообщен
Включите потоки в настройках бота Olgram Опции->Потоки сообщений
-.. user_info:
+.. _user_info:
Данные пользователя
-------------------
@@ -36,3 +36,8 @@ Olgram пересылает сообщения так, чтобы сообщен
идентификатор #id остаётся неизменным для одного и того же аккаунта.
Включить эту функцию можно в настройках бота Olgram Опции->Данные пользователя
+
+.. note::
+
+ Включение этой опции меняет текст политики конфиденциальности вашего feedback бота (команда /security_policy)
+ и может отпугнуть некоторых пользователей. Не включайте эту опцию без необходимости.
diff --git a/server/custom.py b/server/custom.py
index df05dc5..51c1315 100644
--- a/server/custom.py
+++ b/server/custom.py
@@ -35,6 +35,24 @@ def _thread_uniqie_id(bot_id: int, chat_id: int) -> str:
return f"thread_{bot_id}_{chat_id}"
+async def _on_security_policy(message: types.Message, bot):
+ text = "Политика конфиденциальности\n\n" \
+ "Этот бот не хранит ваши сообщения, имя пользователя и @username. При отправке сообщения (кроме команд " \
+ "/start и /security_policy) ваш идентификатор пользователя записывается в кеш на некоторое время и потом " \
+ "удаляется из кеша. Этот идентификатор используется только для общения с оператором; боты Olgram " \
+ "не делают массовых рассылок.\n\n"
+ if bot.enable_additional_info:
+ text += "При отправке сообщения (кроме команд /start и /security_policy) оператор видит ваши имя " \
+ "пользователя, @username и идентификатор пользователя. "
+ else:
+ text += "В зависимости от ваших настроек конфиденциальности Telegram, оператор может видеть ваш username, " \
+ "имя пользователя и другую информацию"
+
+ return SendMessage(chat_id=message.chat.id,
+ text=text,
+ parse_mode="HTML")
+
+
async def send_user_message(message: types.Message, super_chat_id: int, bot):
"""Переслать сообщение от пользователя, добавлять к нему user info при необходимости"""
if bot.enable_additional_info:
@@ -149,6 +167,10 @@ async def message_handler(message: types.Message, *args, **kwargs):
return SendMessage(chat_id=message.chat.id,
text=bot.start_text + ServerSettings.append_text())
+ if message.text and message.text == "/security_policy":
+ # На команду security_policy нужно ответить, не пересылая сообщение никуда
+ return _on_security_policy(message, bot)
+
super_chat_id = await bot.super_chat_id()
if message.chat.id != super_chat_id:
diff --git a/server/server.py b/server/server.py
index 569c435..1ea5eb2 100644
--- a/server/server.py
+++ b/server/server.py
@@ -1,4 +1,5 @@
from aiogram import Bot as AioBot
+from aiogram.types import BotCommand
from olgram.models.models import Bot
from aiohttp import web
from asyncio import get_event_loop
@@ -35,6 +36,11 @@ async def register_token(bot: Bot) -> bool:
res = await a_bot.set_webhook(url_for_bot(bot), certificate=certificate, drop_pending_updates=True,
max_connections=10)
+ await a_bot.set_my_commands([
+ BotCommand("/start", "(Пере)запустить бота"),
+ BotCommand("/security_policy", "Политика конфиденциальности")
+ ])
+
await a_bot.session.close()
del a_bot
return res