diff --git a/docs/source/additional.rst b/docs/source/additional.rst index 4ce9987..21de486 100644 --- a/docs/source/additional.rst +++ b/docs/source/additional.rst @@ -12,6 +12,9 @@ Bitcoin: Litecoin: ``ltc1qxajsvz0lw44aa5nytuch8cp2g8x7a4cdase4y7`` +Monero: + ``84ymMfpw3vxFxsgmYbFURMiZLgQCmhKsZNiZiqZRbpH2WRka2UDjyDVZpX8XH1cZ9d5EghvPXrF5hEuzvK5NvHGE8za4Gmk`` + Как убрать "Этот бот создан с помощью ..." ---------------- Напишите нам на `@civsocit_feedback_bot `_. @@ -20,6 +23,7 @@ Litecoin: История изменений ---------------- +- `2024-03-15` Тэги - `2024-03-02` Рассылки - `2024-03-01` Непрерывные потоки сообщений (опция) - `2024-02-17` Опция смены режима работы автоответчика: автоответчик отвечает на КАЖДОЕ сообщение diff --git a/docs/source/quick_start.rst b/docs/source/quick_start.rst index 9cd5c9e..7cdfae9 100644 --- a/docs/source/quick_start.rst +++ b/docs/source/quick_start.rst @@ -115,3 +115,14 @@ BotFather - это официальный бот Telegram, создающий д Если у вас возникли вопросы по использованию бота, или вы нашли ошибку - напишите нам `@civsocit_feedback_bot `_. + +Тэги пользователей +------------------ + +Пользователям можно проставлять теги. Например, в ответ на сообщение пользователя написать: + +``` +/tag #important +``` + +Тогда в user info (см. раздел опции) помимо информации о пользователе будет тег #important diff --git a/server/custom.py b/server/custom.py index f9bc2f7..fb76b84 100644 --- a/server/custom.py +++ b/server/custom.py @@ -40,6 +40,10 @@ def _message_unique_id(bot_id: int, message_id: int) -> str: return f"{bot_id}_{message_id}" +def _tag_uid(bot_id: int, user_id: int) -> str: + return f"tag_{bot_id}_{user_id}" + + def _thread_unique_id(bot_id: int, chat_id: int) -> str: return f"thread_{bot_id}_{chat_id}" @@ -89,6 +93,9 @@ async def send_user_message(message: types.Message, super_chat_id: int, bot): user_info += f" | lang: {message.from_user.locale}" if message.forward_sender_name: user_info += f" | fwd: {message.forward_sender_name}" + tag = await _redis.get(_tag_uid(bot.pk, message.from_user.id), encoding="utf-8") + if tag: + user_info += f" | tag: {tag}" # Добавлять информацию в конец текста if message.content_type == types.ContentType.TEXT \ @@ -216,6 +223,14 @@ async def handle_operator_message(message: types.Message, super_chat_id: int, bo else: await banned_user.delete() return SendMessage(chat_id=message.chat.id, text=_("Пользователь разбанен")) + if message.text.startswith("/tag "): + tag = message.text.replace("/tag ", "")[:20].strip() + if tag: + await _redis.set(_tag_uid(bot.pk, chat_id), tag, pexpire=ServerSettings.redis_timeout_ms()) + return SendMessage(chat_id=message.chat.id, text=_("Тег выставлен")) + else: + await _redis.delete(_tag_uid(bot.pk, chat_id)) + return SendMessage(chat_id=message.chat.id, text=_("Тег убран")) try: await message.copy_to(chat_id)