- BrainTools - https://www.braintools.ru -

Что мы внедрили в Дайджест, чтобы пользователи остались и платили

После выхода первой статьи о проекте «Дайджест» мы получили много обратной связи — как от пользователей, так и от коллег из продуктового сообщества. В этом посте рассказываем о функциональных обновлениях, которые мы реализовали в последние месяцы. Все они направлены на повышение стабильности, персонализации и удобства взаимодействия с ботом.

Пользовательские чаты: группировка подписок и управление рассылкой

Мы реализовали возможность создания персональных Telegram-чатов, в которые автоматически добавляется бот и получает административные права. Это позволяет пользователю:

  • создать отдельную группу, например, «новости по работе» или «личные медиа»;

  • привязать к чату определённые каналы;

  • получать дайджесты в рамках выбранного чата;

  • централизованно управлять группой подписок.

Под капотом: чаты создаются через Telethon (CreateChannelRequest), бот подключается и становится админом (EditAdminRequest), а управление осуществляется через хендлеры на Aiogram. Вся логика [1] хранения реализована на уровне addchat_id в таблице users_subscribes, что позволяет чётко понимать, какие каналы к какому чату относятся.

Round-robin очередь: честная обработка новых подписок

Ранее при высокой нагрузке могло происходить «залипание» — когда у одного активного пользователя десятки новых каналов, и он занимал всё внимание [2] воркеров. Теперь используется round-robin-очередь, в которой сначала обрабатывается по одной подписке от каждого пользователя, затем — по второй и т.д.

Преимущества:

  • равномерная обработка каналов;

  • предсказуемое время ожидания;

  • отсутствие приоритетов на основе объёма.

Технически это реализовано на уровне DAO (AsyncUserSubscribeDAO.get_channels_with_unsent_messages()), который агрегирует подписки и упорядочивает их по числу необработанных сообщений.

Лемматизация в фильтре дублей: борьба с повторяющимися постами

Одна из частых проблем — дублирование новостей в слегка изменённой форме. Теперь мы добавили семантический анализ и лемматизацию в модуль фильтрации:

  • Используется модель spaCy (ru_core_news_sm);

  • Все тексты приводятся к базовой форме (леммы);

  • Учитываются только первые строки;

  • Применяется коэффициент схожести (similarity > 0.8), чтобы выявить смысловые повторы.

Всё это работает в рамках функции check_similar_news, что позволяет исключать вторичные сообщения и делать дайджест чище. Особенно это актуально для новостных Telegram-каналов, где часто повторяются одни и те же формулировки в течение дня.

Обновление тарифной сетки

Для более прозрачной модели монетизации мы переработали тарифные планы. Теперь структура выглядит так:

Тариф

Лимит каналов

Фильтр рекламы

Фильтр дублей

Комментарии

Trial

до 10

Безлимитен по времени, но с ограничениями

Lite

до 100

Базовый платный тариф

Pro

до 300

Для активных пользователей

Ultima

до 500

Максимальный объём

Что это дало на практике

После релиза описанных функций:

  • Количество жалоб на дубли снизилось на 47%;

  • Конверсия в платную подписку выросла на 9.1% у активных пользователей.

Если вы работаете с большим количеством Telegram-каналов — попробуйте обновлённый «Дайджест». Теперь с чётким управлением, фильтрами и гибкой логикой доставки.

Автор: maxxxxxxit

Источник [3]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/16047

URLs in this post:

[1] логика: http://www.braintools.ru/article/7640

[2] внимание: http://www.braintools.ru/article/7595

[3] Источник: https://habr.com/ru/articles/916952/?utm_source=habrahabr&utm_medium=rss&utm_campaign=916952

www.BrainTools.ru

Rambler's Top100