Реферальная система в Telegram ботах
Всем привет! Наверняка вы видели в различных ботах реферальную ссылку типа https://t.me/?start=. Обычно в качестве числа указывается Telegram ID реферера. В этой статье я расскажу как обрабатывать такие ссылки в своем боте.
Для разработки ботов я использую Python библиотеку pytelegrambotapi.
Процесс создания бота через @BotFather опущу, приступлю сразу к коду. Есть файл config.py с переменной TOKEN, в которой хранится токен бота. В файле bot.py будем «химичить». Напишем обработчик команды /start и выведем все, что хранится в объекте сообщения.
import telebot import config bot = telebot.TeleBot(config.TOKEN) @bot.message_handler(commands=["start"]) def start_command_handler(msg): print(msg) if __name__ == '__main__': bot.polling(none_stop=True)
Нас интересует строчка ‘text’: ‘/start’. Попробуем теперь перейти по ссылке вида https://t.me/?start=test и изменим 10-ю строчку на print(msg.text)
В консоли вывелось /start test . Делаем вывод, что в msg.text хранится необходимая нам информация из реферальной ссылки, которую необходимо обработать.
Приступим к обработке. Учитываем, что не всегда пользователь нажимает /start по реферальной ссылке, поэтому текста после /start может и не быть. Отличительным символом служит пробел (вспоминаем /start test ). Значит будем проверять наличие ID реферера по нему.
@bot.message_handler(commands=["start"]) def start_command_handler(msg): user_id = msg.from_user.id referrer = None if " " in msg.text: referrer_candidate = msg.text.split()[1] # Идем далее
Если пользователь перейдет по ссылке https://t.me/?start=test test2, То test2 не попадет в msg.text, потому что там имеется пробел, который говорит, что test2 не является частью ссылки. Именно поэтому в msg.text находится только один символ пробела. А значит если он имеется, то и есть некоторая информация из реферальной ссылки. Поэтому в первой ветке мы создаем список ( msg.text.split() ), и берем его второй элемент (всем ведь известно, что нумерация списка идет с нуля, да?).
Хорошо, на этом этапе мы имеем текст из ссылки. Мы подразумеваем, что там число, но от пользователя можно поджидать чего угодно. Вдруг кому-то захочется «сломать» бота, указав в ссылке вместо ID реферера какой-то текст. Для этого проверим данные.
@bot.message_handler(commands=["start"]) def start_command_handler(msg): user_id = msg.from_user.id referrer = None # Проверяем наличие хоть какой-то дополнительной информации из ссылки if " " in msg.text: referrer_candidate = msg.text.split()[1] # Пробуем преобразовать строку в число try: referrer_candidate = int(referrer_candidate) # Идем далее except ValueError: pass
Здесь, используя try. except мы преобразуем при помощи int() информацию в число. Если в переменной referer хранится не число, то int() вызовет ошибку ValueError
Теперь в referer записано число. Но тут появляется загвоздка: функция int() может перевести строку «-101» в число -101. То есть на данном этапе в referer может храниться отрицательное число. Почему это не важно, расскажу чуть позднее.
Пользователь может вставить в ссылку свой TG ID. Реферальная система подразумевает под собой некий бонус за переход, поэтому таким образом можно выдать самому себе бонус. Предусмотрим это. ID пользователя получаем, используя user_id = msg.from_user.id
@bot.message_handler(commands=["start"]) def start_command_handler(msg): user_id = msg.from_user.id referrer = None # Проверяем наличие хоть какой-то дополнительной информации из ссылки if " " in msg.text: referrer_candidate = msg.text.split()[1] # Пробуем преобразовать строку в число try: referrer_candidate = int(referrer_candidate) # Проверяем на несоответствие TG ID пользователя TG ID реферера if user_id != referrer_candidate: # Идем дальше pass except ValueError: pass
Допустим, что имеется функция get_all_users(), которая возвращает список всех пользователей бота. Делаем это для того, чтобы не назначить в качестве реферера пользователя, которого не существует.
@bot.message_handler(commands=["start"]) def start_command_handler(msg): user_id = msg.from_user.id referrer = None # Проверяем наличие хоть какой-то дополнительной информации из ссылки if " " in msg.text: referrer_candidate = msg.text.split()[1] # Пробуем преобразовать строку в число try: referrer_candidate = int(referrer_candidate) # Проверяем на несоответствие TG ID пользователя TG ID реферера # Также проверяем, есть ли такой реферер в базе данных if user_id != referrer_candidate and referrer_candidate in get_all_users(): referer = referrer_candidate except ValueError: pass
Что необходимо делать в случае, если у пользователя и так уже есть реферер? Не будем ведь при каждом использовании реферальной ссылки выдавать бонус за приведенного реферала, это нас попросту разорит. Поэтому необходимо написать проверку. Напишем функцию has_referrer() , которая вернет True при наличии у пользователя реферера и False при его отсутствии. Логично ее написать в начале для оптимизации.
@bot.message_handler(commands=["start"]) def start_command_handler(msg): user_id = msg.from_user.id # Проверяем наличие закрепленного реферера за пользователем if not has_referrer(): referrer = None # Проверяем наличие хоть какой-то дополнительной информации из ссылки if " " in msg.text: referrer_candidate = msg.text.split()[1] # Пробуем преобразовать строку в число try: referrer_candidate = int(referrer_candidate) # Проверяем на несоответствие TG ID пользователя TG ID реферера # Также проверяем, есть ли такой реферер в базе данных if user_id != referrer_candidate and referrer_candidate in get_all_users(): referer = referrer_candidate except ValueError: pass
Надеюсь, что статья будет для вас полезна!
- реферальная система
- telebot
- telegrambot
- telegram
- реферальная ссылка
Реферальная ссылка Telegram Bot, Python
Необходимо приглашать друзей к боту по реф ссылкам, и при этом Пользователю который пригласил, давать бонусы. Дайте наводку, как можно организовать этот процесс. Обязательно ли создавать БД?
Отслеживать
задан 1 июн 2018 в 11:34
David Gederim David Gederim
61 1 1 золотой знак 2 2 серебряных знака 6 6 бронзовых знаков
Обязательно ли создавать БД? А какие есть еще варианты?
1 июн 2018 в 11:47
@gil9red Значит заносить ID пользователя в базу? Получается что основная работа идет с БД?
1 июн 2018 в 12:06
Ну да, без базы данных выйдет фигня. Можно сначала с sqlite3 попробовать
1 июн 2018 в 12:22
@gil9red, Хорошо, получается после генерации ссылки, надо как-то получать реф ссылку человека который перешел по ссылке?
4 июн 2018 в 6:44
Получается так. t.me/BotFather?start=123q124, есть такая ссылка, пусть «123q124» это сгенерированный реферальный номер, его надо как-то получить. Ведь при переходе по этой ссылке в телеге или в других местах, на направляет к боту, где мы должны нажать кнопку «Start». Так вот значение что после «=» должно передаться. Как его получить?
4 июн 2018 в 8:52
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Решил проблему гениально! http://t.me/BotFather?start=123q124, переходя по этой ссылке нас кидает в к боту, если мы её открываем в телеге, либо на веб-странице, которая потом редиректит в телегу. После того как мы появились у бота, нажимаем на кнопку «Start», В этот момент в боте выводим наши данные после » mt24″>
Отслеживать
ответ дан 4 июн 2018 в 16:30
David Gederim David Gederim
61 1 1 золотой знак 2 2 серебряных знака 6 6 бронзовых знаков
Объясните, а в чем магия message.text[7:] ?
4 июн 2018 в 18:13
@gil9red, мне необходимо было сделать рефферальную ссылку, как я и говорил ранее, Чтобы бот передал какие-то значения после нажатия кнопки старт, необходимо добавить после ?start «=» и после него значение указать. Дело в том, что необходимо было сравнивать это значение вытягивая значение с БД, с помощью print(message.text) мы получаем ответ такого вида: ‘/start значение_после_знака_равно’. И сравниванием с тем значением что в БД. `message.text. отображает вводимый пользователем текст боту.
4 июн 2018 в 19:44
Понятно, т.е. те 7 символов, что пропускаем это ?start= , а дальше уже идет идентификатор, который и нужен был
Готовая реферальная система в чат-боте Telegram и Viber (beta)
Команда JoinChat с радостью представляет новое обновление: теперь при создании чат-бота у вас есть возможность подключить реферальную систему!
Реферальная система — это…?
Реферальная система — это система выплаты вознаграждения за привлечение в чат-бот новых пользователей. С помощью реферальной ссылки ваши пользователи смогут приглашать своих друзей и получать баллы за их заказы. Вы можете настроить несколько уровней, в соответствии с которыми пользователи будут получать определенный процент начисления баллов при осуществлении заказов.
Для чего это владельцу бота?
Потенциальные покупатели скорее заинтересуются компанией, о которой услышат от знакомых, которым склонны доверять. По той же причине в рост пойдут продажи — решение о покупках через используемый знакомыми бот принимается быстрее. Вслед за этим увеличится контактная база, ведь наверняка кто-то из рефералов захочет подписаться на ваш бот. И еще усилится лояльность рефери, который в благодарность за рекомендацию получает презент в виде начисления баллов.
Для чего это клиенту?
Реферальная система позволит клиенту получать приятные скидки на любые товары и обращать внимание на продукцию, которую, возможно, без скидки он не решается себе позволить.
Подключение реферальной системы
Заходим в свою приборную доску (административную панель), открываем боковую вкладку Настройки — Общее.
В блоке “Статус реферальной системы” выбираем “Включено”. Нажимаем “Сохранить настройки”:
После этого у вас появится новая боковая вкладка Реферальная система:
Настройка реферальной системы
1. Настройка текста и кнопок
Во вкладке Реферальная система — Настройка текстов вы можете редактировать текст всех кнопок и сообщений, который предлагает наш шаблон по умолчанию:
Обратите внимание, что настройка «Наименования уровней» и «Наименование бонусов» — это наименования, которые будут при выведении статистики накопленных бонусов через кнопку «Подробнее» в чат-боте.
Данное сообщение о зачислении бонусов будут пользователи будут получать только по первому уровню.
Уровень 2 и выше будет зачислять бонусы без уведомления, так как следующие контакты могут быть не знакомы пользователю.
Сообщение может быть и вовсе без указания конкретного пользователя на первом уровне (на ваше усмотрение).
Отредактировав весь текст, нажимаем Сохранить.
2. Настройка выплат
Во вкладке Реферальная система — Настройка выплат настраиваем следующие пункты:
Курс баллов
- Укажите денежный эквивалент 1го балла. Например, 1 балл = 1 доллар.
По умолчанию значение «1» - Возможность списать баллы в %
Укажите, какой процент от суммы заказа можно оплатить баллами. Например, только 20% от общей суммы заказа, или же можно оплатить полностью, указав 100 или даже 200%.
По умолчанию значение «50» - Зачисление по статусу
Укажите статус заказа, после которому произойдет автоматическое начисление баллов пользователю. Например, когда заказ получил статус “Оплачено”.
3. Настройка уровней реферальной системы
3.1. Принцип работы уровней
Уровни работают по принципу пирамиды.
Уровень 1 — это когда пользователь А делится ссылкой с пользователем Б, пользователь Б делает заказ и пользователь А получает за это бонус.
Уровень 2 — это когда пользователь Б делится ссылкой с пользователем В, пользователь В делает заказ, и пользователь Б получает за это бонус по уровню 1, а пользователь А — по уровню 2.
3.2. Настройка и добавление уровня
По умолчанию у вас уже есть 3 уровня, процентное начисление которых по умолчанию стоит на 0. Значение 0 вам нужно отредактировать по своему усмотрению. Например, 15, 10, 5% и так далее…
Во вкладке Реферальная система — Настройка уровней нажимаем на кнопку “+ Добавить уровень”, либо редактируем готовый уровень через синюю кнопку:
Вводим процент отчислений, который пользователь будет получать при заказе референта:
Накрутка рефералов для бота телеграм
Реферальные программы являются одним из наиболее эффективных способов привлечения новых пользователей для ботов в Telegram. В этой системе текущие пользователи могут приглашать новых пользователей, получая за это некоторую форму вознаграждения. Это может быть бесплатный доступ к определенным функциям, бонусные баллы или что-то другое, в зависимости от того, как разработана программа.
Мир Telegram ботов постоянно расширяется, предоставляя возможности для бизнеса и личного использования. Однако, чтобы добиться успеха, важно иметь активных рефералов
Методы привлечения рефералов в бот телеграм
Привлечение новых участников в Telegram бот сложный и долгий процесс. Вот несколько проверенных методов:
- Создание интересного контента
- Поддержка соревнований и наград:
- Система бонусов
- Социальные сети и партнерские программы:
- Регулярное обновление контента
Индивидуально заниматься развитием своего телеграм канала в среде с высокой степенью конкуренции является непростой задачей. Для превращения вашего бота, аккаунта или чата в популярные площадки, необходимо постоянно вкладывать большие усилия в их маркетинг и привлечение новых подписчиков. Далеко не всем удается привлекать нужную аудиторию. Создание качественного и привлекательного материала не гарантирует успеха на платформе Telegram.
Начинающим и опытным авторам часто приходится прибегать к услугам специализированных платформ для увеличения числа рефералов. Это наиболее простой и эффективный способ улучшения показателей и достижения успеха в реферальных схемах.
Если вы хотите безопасно и недорого увеличить количество участников вашего канала, рекомендуем воспользоваться нашими услугами. Это позволит вам существенно улучшить статистические данные и эффективность вашей деятельности в Telegram.
Почему стоит заказать накрутку рефералов для бота Telegram в Sociogramm?
Sociogramm — это сервис, который предоставляет услуги по накрутке рефералов для ботов в Telegram. Почему стоит обратиться к нам:
- Опыт и экспертиза: наши специалисты имеют богатый опыт в области продвижения ботов в Telegram. Мы знаем, какие методы наиболее эффективны и безопасны.
- Полная безопасность: мы не используем ботов или автоматизированные методы. Вся накрутка выполняется только живыми пользователями, что исключает риски блокировки бота.
- Результаты в кратчайшие сроки: мы гарантируем увеличение активности и прирост рефералов в вашем боте в кратчайшие сроки.
- Выгодная фиксированная цена
Накрутка рефералов в бот телеграмм — это важная часть успешной стратегии продвижения. Мы даем гарантию, что с помощью нашего сервиса вы сможете увеличить активность и количество рефералов в вашем боте Telegram и не попасть в бан.