Кейсы 6 мин чтения

Реферальный бот-конкурс приглашений: кейс разработки

Розничная сеть попросила механику «приведи друга» с призами за приглашённых. Рассказываю, как я построил бота с честным засчётом, защитой от накруток и правильной привязкой участников.

реферальный ботконкурс приглашенийгеймификацияритейл
TL;DR: Сделал реферального бота-конкурс для розничной сети: за каждые N реально активных приглашённых участник получает материальный приз. Ключевая идея архитектуры — «привязка вечная, засчёт живой»: приглашённый закреплён за пригласившим навсегда, но в счётчик попадает, только пока реально подписан на канал. Плюс антифрод без автоблокировки, поддержка нескольких городов и админка выдачи с соблюдением 152-ФЗ. Бот выдержал реальный поток участников без сбоев.

Ко мне обратилась розничная сеть с классической, на первый взгляд, задачей: запустить конкурс «приведи друга» в мессенджере. Участник приглашает знакомых в канал бренда, и за каждую группу приглашённых получает приз — забрать можно на точке выдачи. Идея простая, но как только начинаешь прикидывать механику всерьёз, всплывает добрый десяток вопросов, из-за которых подобные конкурсы обычно либо превращаются в манипуляцию цифрами, либо тонут в спорах «а мне засчитали или нет».

Коротко: для розничной сети нужна была механика «приведи друга» с материальными призами. Проблема в том, что типовые конкурсы легко накручиваются, а приглашённые отписываются сразу после выдачи. Я построил бота с принципом «привязка вечная, засчёт живой», мягким антифродом, поддержкой нескольких городов и админкой выдачи. Результат — конкурс с честным учётом, запущенный в массы и выдержавший реальный поток без сбоев.

Проблема: как честно посчитать приглашённых

Заказчик уже видел, как выглядят провальные версии такой механики у других. Самая частая беда — люди зовут друзей, те подписываются, приз выдают, а через день половина приглашённых отписывается от канала. Формально приз забрали, а канал никакого прироста аудитории не получил. Вторая беда — накрутка: создают фейковые аккаунты, подписывают на пару минут, засчитывают, отписываются, повторяют. Третья — путаница с привязкой: если человека пригласили один, потом позвал другой, кому засчитывать? И наконец, все эти конкурсы требуют работы с персональными данными, а значит — вопрос 152-ФЗ вставал не отвлечённо, а конкретно: что именно мы собираем, где хранится, как удалить.

Мне нужно было спроектировать систему, где приз получают за реальных, живых подписчиков, где нельзя перехватить чужого приглашённого, и где модератор в любой момент видит, кто и что заработал, без необходимости вручную сверять таблицы.

Что былоЧто сделаноРезультат
Приглашённые отписывались сразу после выдачи призаЖивой засчёт: в счётчик попадают только реально подписанные на каналПриз привязан к живой аудитории, а не к разовому клику
Споры «чей это приглашённый» при повторных приглашенияхВечная привязка: один аккаунт закреплён за первым пригласившим навсегдаПерехват чужого приглашённого невозможен, спорные ситуации сняты
Накрутка фейковыми аккаунтами и активными лидерами вперемешкуФлаг всплеска для модератора вместо автоблокировки, правило «только новые подписчики»Накрутка отсекается, честные лидеры не наказаны
Ручная сверка выдач и заявок из разных городовАдминка с вкладками готовности, участников, статистики и городовМодератор видит, кто и что заработал, без ручных таблиц
Открытый вопрос по 152-ФЗ и персональным даннымЭкран согласия, политика, кнопка удаления данных, хостинг в РФЮридическая сторона закрыта с самого старта

Решение: бот-конкурс с прозрачной механикой

Я предложил механику на пороговых призах: участник получает приз за каждые N активных приглашённых из своего города, призы кратны порогу — заработано ровно столько, сколько целых порогов набрано делением количества активных приглашённых на N. Всё, что уже выдано, назад не отбирается — это важно психологически: люди должны быть уверены, что полученный приз у них останется, даже если завтра часть их приглашённых отпишется.

Технически бот собран на Node.js и TypeScript, работает через long-polling, данные хранятся во встроенной базе без внешних зависимостей — для конкурса такого масштаба это осознанный выбор в пользу простоты обслуживания, а не избыточной инфраструктуры.

Вечная привязка, живой засчёт

Центральная идея всей архитектуры — разделить два понятия, которые в лоб выглядят одинаково, но на деле разные: привязку и засчёт.

  • Привязка — кто кого пригласил. Она фиксируется один раз и навсегда: один аккаунт мессенджера может быть приглашённым только у одного человека. Даже если приглашённый отпишется от канала и потом кто-то другой пришлёт ему ссылку, перехватить его нельзя — система помнит первую привязку.
  • Засчёт — попадает ли приглашённый в счётчик прямо сейчас. Это живой статус: подписан на канал — засчитывается, отписался — засчёт снимается, снова подписался — снова засчитывается. Привязка при этом не трогается ни разу.

Такое разделение решает сразу обе исходные проблемы. Накрутка через кратковременную подписку не работает — как только человек отписывается, счётчик у пригласившего уменьшается, и порог для нового приза отодвигается. А спор «чей это приглашённый» вообще не возникает — привязка закреплена раз и навсегда с первого касания.

Антифрод без наказания честных лидеров

Отдельный вопрос — как ловить накрутку, не наказывая при этом активных участников, которые действительно хорошо работают и приводят десятки людей. Жёсткая автоблокировка по порогам активности здесь вредна: у лидеров конкурса всплески приглашений — это норма, а не подозрительное поведение.

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

Несколько городов в одном боте

Сеть работает в нескольких городах, и приз нужно было выдавать в том городе, где реально живёт участник — иначе на складе в одном городе скопятся заявки жителей другого. Город привязывается к пригласившему и фиксируется в момент первого засчёта — то есть один раз, без последующих переключений туда-сюда. В админке появилась отдельная вкладка «Города» с разбивкой активности и выдач по каждому.

Админка выдачи призов и 152-ФЗ

Для повседневной работы модератора я собрал админку с четырьмя рабочими вкладками: «Готовы к выдаче» — список тех, кто набрал очередной порог и ждёт приз; «Участники» — карточка каждого с историей приглашённых и статусом засчёта; «Статистика» — общая динамика конкурса и флаги всплесков; «Города» и «Настройки» — параметры порога, тексты сообщений, список призов.

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

Что получил заказчик

Бот был запущен в массы и выдержал реальный поток участников без сбоев. Заказчик получил инструмент, где приз честно привязан к живой аудитории, а не к разовому клику по ссылке, где модератор не тонет в спорах о том, кому и что засчитано, и где юридическая сторона закрыта с самого старта, а не добавлена задним числом после жалобы.

Стоит отдельно объяснить, почему принцип «привязка вечная — засчёт живой» честен по отношению ко всем сторонам, а не только удобен бизнесу. Для приглашённого он означает, что его нельзя дважды «продать» разным пригласившим и втянуть в чужие споры: первый, кто его привёл, закреплён за ним навсегда, и это прозрачно. Для пригласившего честность в том, что его прогресс отражает реальность: если приведённые им люди остаются в канале и продолжают следить за брендом, счётчик растёт и держится; если аудитория была случайной и разбежалась, счётчик честно проседает, и порог для следующего приза отодвигается. Для бизнеса ценность в том, что призовой бюджет тратится не на воздух, а на живых подписчиков, которые остаются с брендом после конкурса. При этом уже выданные призы принципиально не отзываются — иначе участники перестали бы доверять механике и боялись бы, что заслуженная награда исчезнет из-за чужих действий. Эта асимметрия сделана намеренно: система строга к будущему прогрессу, но не пересматривает прошлое, и именно баланс этих двух правил делает конкурс одновременно честным и мотивирующим.

Второй момент, который хочу раскрыть подробнее, — почему антифрод и работа с данными в таком проекте важнее, чем кажется на старте. Мягкий антифрод через флаг всплеска вместо автоблокировки — это не техническая мелочь, а сознательное решение не превращать самых активных участников в подозреваемых. Автоматика, которая банит за высокую активность, в конкурсе «приведи друга» бьёт ровно по тем, ради кого конкурс и затевался: по лидерам, которые действительно приводят десятки живых людей за короткий срок. Поэтому финальное слово всегда за модератором, а система лишь подсказывает, куда посмотреть, и хранит историю приглашённых, чтобы решение принималось по фактам, а не по эмоции. Правило «только новые подписчики» отсекает самый простой способ накрутки — прогон уже имеющейся аудитории по кругу. А проработанная сторона 152-ФЗ — экран согласия, ссылка на политику, кнопка полного удаления данных, минимум собираемых полей и хостинг в России — снимает с бизнеса риск, который в конкурсах с реальными призами и персональными данными легко недооценить до первой претензии. Всё это вместе и отличает работающий конкурс от красивой, но хрупкой на практике идеи.

Частые вопросы

Сколько стоит разработать реферального бота-конкурс? Стоимость зависит от механики: числа порогов и призов, нужен ли мультигород, глубины антифрода и объёма админки. Базовый бот-конкурс с честным засчётом собирается заметно дешевле, чем платформа с несколькими городами и расширенной статистикой. Точную вилку называю после короткого обсуждения задачи.

На каком стеке вы делаете такие боты? Node.js и TypeScript, работа через long-polling, данные во встроенной базе без тяжёлых внешних зависимостей. Для конкурса это разумный выбор: проще в обслуживании и дешевле в поддержке, чем избыточная инфраструктура, при этом стек спокойно держит реальный поток участников.

Можно ли адаптировать механику под мой бизнес? Да. Пороги, призы, тексты и список городов настраиваются, а сама логика «привязка вечная, засчёт живой» универсальна. Для одной точки мультигород отключается, и всё упрощается до единого счётчика без привязки к городу.

Сколько занимает разработка такого конкурса? Базовую версию с ботом и админкой можно собрать быстро, а сроки под расширенную механику — мультигород, детальная статистика, тонкий антифрод — обсуждаются отдельно и зависят от объёма. Ориентир по срокам даю сразу после уточнения требований.

Как устроена защита от накрутки? Двумя мерами: живой засчёт снимает приглашённого из счётчика, как только он отписался, а флаг всплеска подсвечивает подозрительную активность модератору, не блокируя честных лидеров автоматически. Плюс правило «только новые подписчики» отсекает прогон уже имеющейся аудитории.

Соответствует ли бот требованиям 152-ФЗ? Да. На входе участник даёт согласие на обработку данных со ссылкой на политику, собираем только необходимый минимум, есть кнопка полного удаления данных с отзывом согласия, хостинг — в России.

Коротко о главном

Механика «приведи друга» ломается не в идее, а в деталях учёта: что считать привязкой, что — засчётом, и как не наказать честных активных участников заодно с накрутчиками. Разделение «привязка вечная, засчёт живой» решает большинство типовых проблем таких конкурсов сразу, без сложной внешней инфраструктуры.

Если нужен реферальный бот, конкурс приглашений или похожая геймификация с честным учётом и юридически чистой обработкой данных — соберём под ключ.

Услуги по теме

Что я делаю под ключ

  • Реферальные боты и конкурсы приглашений
  • Лидерборды и начисление призов
  • Антифрод и честный засчёт
  • Админка: выдача, статистика, настройки
  • Согласия и 152-ФЗ
Обсудить проект

Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»

12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.

Готовы обсудить вашу задачу?

Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.

Готовые решения под ключ 449 готовых IT-решений для бизнеса Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультация Смотреть каталог