Как мы реализовали реферальную программу в Telegram

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Эта статья для тех кто ищет быструю ману, как и что реализовать в ТГ.

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

Придумали реферальную пирамиду - приведи друга и получи 40% от его платежа и 10% пожизненно от его пополнений. Что очень круто, ты можешь быть использовать любой платный тариф бесплатно да и еще просто запросить вывод средств. Но так как мы заперты в рамки Telegram и не имели опыта в этом, мы задались вопросом - как можно сделать реферальную ссылку на бота? - в статье я продемонстрирую пример реализации на python

from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

def start(update: Update, context: CallbackContext) -> None:
    ref_id = update.message.text.split()[1] if len(update.message.text.split()) > 1 else None
    if ref_id:
        # здесь у вас может быть код для учета реферальных ссылок
        context.bot.send_message(chat_id=update.effective_chat.id, text=f"Приветствую! Вас пригласил пользователь с ID: {ref_id}")
    else:
        context.bot.send_message(chat_id=update.effective_chat.id, text="Приветствую! Вы пришли сюда сами.")

def main() -> None:
    updater = Updater("TOKEN", use_context=True)

    dispatcher = updater.dispatcher

    dispatcher.add_handler(CommandHandler("start", start))

    updater.start_polling()

    updater.idle()

if __name__ == '__main__':
    main()

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

Реферальные ссылки можно создать просто добавив ID реферала к команде /start в ссылке на вашего бота. Например: https://t.me/your_bot?start=REF_ID.

Для того, чтобы выводить пригласительную ссылку при выполнении команды /reflink, вы можете просто добавить новый обработчик команд в вашего бота. Вот как это можно сделать:

from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

def reflink(update: Update, context: CallbackContext) -> None:
    # здесь вы можете генерировать идентификатор реферала на основе id пользователя
    ref_id = update.effective_user.id
    ref_link = f"https://t.me/your_bot?start={ref_id}"
    context.bot.send_message(chat_id=update.effective_chat.id, text=f"Ваша реферальная ссылка: {ref_link}\nСкопируйте и поделитесь этой ссылкой с друзьями.")

def main() -> None:
    updater = Updater("TOKEN", use_context=True)

    dispatcher = updater.dispatcher

    dispatcher.add_handler(CommandHandler("reflink", reflink))

    updater.start_polling()

    updater.idle()

if __name__ == '__main__':
    main()
```

Ну и ясно что нужно все это как то хранить вы можете использовать, например, SQLite если ваш ссанный проект очень мал.

import sqlite3
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

# Создаем подключение к базе данных (или создаем новую базу данных, если она не существует)
conn = sqlite3.connect('referrals.db')
cursor = conn.cursor()

# Создаем таблицу для хранения информации о рефералах, если она еще не существует
cursor.execute("""
CREATE TABLE IF NOT EXISTS referrals (
    user_id INTEGER NOT NULL,
    ref_id INTEGER NOT NULL
)
""")

def start(update: Update, context: CallbackContext) -> None:
    ref_id = update.message.text.split()[1] if len(update.message.text.split()) > 1 else None
    if ref_id:
        # Записываем информацию о реферале в базу данных
        cursor.execute("INSERT INTO referrals (user_id, ref_id) VALUES (?, ?)", (update.effective_user.id, ref_id))
        conn.commit()
        context.bot.send_message(chat_id=update.effective_chat.id, text=f"Приветствую! Вас пригласил пользователь с ID: {ref_id}")
    else:
        context.bot.send_message(chat_id=update.effective_chat.id, text="Приветствую! Вы пришли сюда сами.")

def reflink(update: Update, context: CallbackContext) -> None:
    ref_id = update.effective_user.id
    ref_link = f"https://t.me/your_bot?start={ref_id}"
    context.bot.send_message(chat_id=update.effective_chat.id, text=f"Ваша реферальная ссылка: {ref_link}\nСкопируйте и поделитесь этой ссылкой с друзьями.")

def main() -> None:
    updater = Updater("TOKEN", use_context=True)

    dispatcher = updater.dispatcher

    dispatcher.add_handler(CommandHandler("start", start))
    dispatcher.add_handler(CommandHandler("reflink", reflink))

    updater.start_polling()

    updater.idle()

if __name__ == '__main__':
    main()

а ну и если вы так же хотите начислять 40% за первый платеж и 10% пожизненно то просто табличку создайте на свой вкус с балансами и юзеайте формулы крч вот

def process_payment(user_id, amount):
    # Проверяем, были ли уже платежи от этого пользователя
    cursor.execute("SELECT * FROM payments WHERE user_id = ?", (user_id,))
    previous_payments = cursor.fetchall()

    # Если это первый платеж, начисляем 40% комиссии
    if not previous_payments:
        commission = amount * 0.4
    # Если это не первый платеж, начисляем 10% комиссии
    else:
        commission = amount * 0.1

    # Начисляем комиссию рефереру
    cursor.execute("SELECT ref_id FROM referrals WHERE user_id = ?", (user_id,))
    ref_id = cursor.fetchone()
    if ref_id:
        cursor.execute("UPDATE users SET balance = balance + ? WHERE id = ?", (commission, ref_id))

    # Записываем информацию о платеже в базу данных
    cursor.execute("INSERT INTO payments (user_id, amount) VALUES (?, ?)", (user_id, amount))
    conn.commit()

Пример бота и реализация

https://t.me/blacktemple_space

Источник: https://habr.com/ru/articles/810635/


Интересные статьи

Интересные статьи

Эксперты «Лаборатории Касперского» рассказали об актуальной мошеннической схеме, связанной с криптовалютой Toncoin (TON) через Telegram. Эта схема работает по принципу финансовой пирами...
Как провальная идея соцсети для спортсменов превратилась в самый популярный Телеграм-бот для админов чатов. 
VK открывает новый набор на бесплатную образовательную программу «IT‑дайвинг» от VK Education. Стать её участниками могут старшеклассники и студенты 1–2 курсов вузов из любого насе...
Это пятая, заключительная статья из серии. В ней мы выложим получившегося бота на сервер.Эта статья направлена именно на новичков, в ней я постараюсь объяснить тему ботов на примере сбора обратной свя...
Активные пользователи Телеграма, особенно те, кто подписан на Павла Дурова, наверняка что-то слышали о том, что Телеграм проводил в этих ваших интернетах конкурс для iOS, Android и JavaScript раз...