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