Реферальная система в Telegram ботах (telebot)

Всем привет! Наверняка вы видели в различных ботах реферальную ссылку типа https://t.me/?start=. Обычно в качестве числа указывается Telegram ID реферера. В этой статье я расскажу как обрабатывать такие ссылки в своем боте.

Для разработки ботов я использую Python библиотеку pytelegrambotapi.

Процесс создания бота через @BotFatherопущу, приступлю сразу к коду. Есть файл config.py с переменной TOKEN, в которой хранится токен бота. В файле bot.py будем «химичить». Напишем обработчик команды /start и выведем все, что хранится в объекте сообщения.

Нас интересует строчка ‘text’: ‘/start’. Попробуем теперь перейти по ссылке вида https://t.me/?start=test и изменим 10-ю строчку на print(msg.text)

В консоли вывелось /start test . Делаем вывод, что в msg.text хранится необходимая нам информация из реферальной ссылки, которую необходимо обработать.

Приступим к обработке. Учитываем, что не всегда пользователь нажимает /start по реферальной ссылке, поэтому текста после /start может и не быть. Отличительным символом служит пробел (вспоминаем /start test ). Значит будем проверять наличие ID реферера по нему.

Если пользователь перейдет по ссылке https://t.me/?start=test test2, То test2 не попадет в msg.text, потому что там имеется пробел, который говорит, что test2 не является частью ссылки. Именно поэтому в msg.text находится только один символ пробела. А значит если он имеется, то и есть некоторая информация из реферальной ссылки. Поэтому в первой ветке мы создаем список ( msg.text.split() ), и берем его второй элемент (всем ведь известно, что нумерация списка идет с нуля, да?).

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

Здесь, используя try. except мы преобразуем при помощи int() информацию в число. Если в переменной referer хранится не число, то int() вызовет ошибку ValueError

Теперь в referer записано число. Но тут появляется загвоздка: функция int() может перевести строку «-101» в число -101. То есть на данном этапе в referer может храниться отрицательное число. Почему это не важно, расскажу чуть позднее.

Пользователь может вставить в ссылку свой TG ID. Реферальная система подразумевает под собой некий бонус за переход, поэтому таким образом можно выдать самому себе бонус. Предусмотрим это. ID пользователя получаем, используя user_id = msg.from_user.id

Допустим, что имеется функция get_all_users(), которая возвращает список всех пользователей бота. Делаем это для того, чтобы не назначить в качестве реферера пользователя, которого не существует.

Что необходимо делать в случае, если у пользователя и так уже есть реферер? Не будем ведь при каждом использовании реферальной ссылки выдавать бонус за приведенного реферала, это нас попросту разорит. Поэтому необходимо написать проверку. Напишем функцию check_if_has_a_referer() , которая вернет True при наличии у пользователя реферера и False при его отсутствии. Логично ее написать в начале для оптимизации.

Telegram бот для AirDrop-кампании и раздачи монет

* AirDrop предусматривает под собой некую поощрительную программу (стимулирование) пользователей за совершение определенных действий (подписки в социальных сетях, привлечение рефералов и т.д.).

В этот раз моими клиентами стали два блокчейн проекта, которыйе занимаются разработкой и продвижением NFT игры «FlokiCyberPunk» и приложения для знакомств «TinGram»

Цель AirDrop кампаний: привлечение целевой аудитории (расширение комьюнити), популяризация игры «FlokiCyberPunk» и приложения «TinGram»

Сделать реферального бота на нескольких языках, чтобы провести AirDrop кампанию и привлечь больше новых пользователей в проекты.

Получить удобную базу участников со всеми начислениями для дальнейшего использования.

Предусмотреть клиентский функционал, для простого и быстрого редактирования текстов.

Весь разработанный функционал бота собран в конструкторе Salebot, тк данная платформа обладает широким функционалом и позволяет собирать ботов любой сложности.

Всем желающим по промокоду freedays — 10 дней бесплатного использования максимального тарифа (промокод неограничен в количестве проектов)

Выбор языка на входе в бот

Мультиязычный бот для участников из разных стран.

Несложные математические примеры, чтобы отсеять ботов при помощи которых могут накручивать себе рефералов.

Подробная инструкция по участию в AirDrop

Один из важных моментов в каждом боте — четко прописанная инструкция для пользователей. Это позволяет облегчить работу технической поддержки и увеличить доходимость пользователей до конца.

Проверка заданий и начисление «монет»

Баллы начисляются только в случае выполнения задания.

Если пользователь решает пропустить какое-то задание, то он сможет вернуться к нему в любое время.

Реферальная система в Telegram ботах

Всем привет! Наверняка вы видели в различных ботах реферальную ссылку типа https://t.me/?start=. Обычно в качестве числа указывается Telegram ID реферера. В этой статье я расскажу как обрабатывать такие ссылки в своем боте.

Для разработки ботов я использую Python библиотеку pytelegrambotapi.

Процесс создания бота через @BotFather опущу, приступлю сразу к коду. Есть файл config.py с переменной TOKEN, в которой хранится токен бота. В файле bot.py будем «химичить». Напишем обработчик команды /start и выведем все, что хранится в объекте сообщения.

Нас интересует строчка ‘text’: ‘/start’. Попробуем теперь перейти по ссылке вида https://t.me/?start=test и изменим 10-ю строчку на print(msg.text)

В консоли вывелось /start test . Делаем вывод, что в msg.text хранится необходимая нам информация из реферальной ссылки, которую необходимо обработать.

Приступим к обработке. Учитываем, что не всегда пользователь нажимает /start по реферальной ссылке, поэтому текста после /start может и не быть. Отличительным символом служит пробел (вспоминаем /start test ). Значит будем проверять наличие ID реферера по нему.

Если пользователь перейдет по ссылке https://t.me/?start=test test2, То test2 не попадет в msg.text, потому что там имеется пробел, который говорит, что test2 не является частью ссылки. Именно поэтому в msg.text находится только один символ пробела. А значит если он имеется, то и есть некоторая информация из реферальной ссылки. Поэтому в первой ветке мы создаем список ( msg.text.split() ), и берем его второй элемент (всем ведь известно, что нумерация списка идет с нуля, да?).

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

Здесь, используя try. except мы преобразуем при помощи int() информацию в число. Если в переменной referer хранится не число, то int() вызовет ошибку ValueError

Теперь в referer записано число. Но тут появляется загвоздка: функция int() может перевести строку «-101» в число -101. То есть на данном этапе в referer может храниться отрицательное число. Почему это не важно, расскажу чуть позднее.

Пользователь может вставить в ссылку свой TG ID. Реферальная система подразумевает под собой некий бонус за переход, поэтому таким образом можно выдать самому себе бонус. Предусмотрим это. ID пользователя получаем, используя user_id = msg.from_user.id

Допустим, что имеется функция get_all_users(), которая возвращает список всех пользователей бота. Делаем это для того, чтобы не назначить в качестве реферера пользователя, которого не существует.

Что необходимо делать в случае, если у пользователя и так уже есть реферер? Не будем ведь при каждом использовании реферальной ссылки выдавать бонус за приведенного реферала, это нас попросту разорит. Поэтому необходимо написать проверку. Напишем функцию has_referrer() , которая вернет True при наличии у пользователя реферера и False при его отсутствии. Логично ее написать в начале для оптимизации.

Источник https://temofeev.ru/info/articles/referalnaya-sistema-v-telegram-botakh-telebot/

Источник https://vc.ru/crypto/379626-telegram-bot-dlya-airdrop-kampanii-i-razdachi-monet

Источник https://habr.com/ru/post/561112/