Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Реферальная система Aiogram, Python

рах яхъ Ученик (212), на голосовании 1 месяц назад
Учусь писать ботов на Aiogram
Как должна выглядеть реферальная ссылка?

И как достать из команды /start ID того кто пригласил?

Aiogram 3
Голосование за лучший ответ
CausonQ Мудрец (13237) 2 месяца назад
У команды start возможен единственный параметр https://t.me/your_bot?start=airplane
Что ты туда положишь, то и сможешь прочитать.
Сначала выдаешь уникальное значение пользователю, формируешь ссылку. После перехода по ссылке, берешь значение этого параметра и смотришь какому пользователю это значение было присвоено. Так и узнаешь кто пригласил
Мистер Хакернов Ученик (228) 2 месяца назад
Реферальная ссылка в Telegram-боте на Aiogram может выглядеть с использованием уникального ID пользователя в качестве реферального кода: 
* Пример:  https://t.me/bot_username?start=1234567890 . 
Чтобы достать ID того, кто пригласил, можно использовать функцию  get_refer_id  из пакета  utils  Aiogram: 
* Пример кода:  refer_id = get_refer_id(command.args) . 
Для генерации реферальной ссылки также можно использовать метод глубокой привязки: 
* Пример:  https://t.me/my_telegram_bot?start=ref01 . Пользователь будет отправлен боту, и после нажатия кнопки  Start  значение  ref01  будет передано обработчику команды  start .
НОВОСТИ ДНЯ Мудрец (14226) 2 месяца назад
У команды start возможен единственный парамет... Пример: htt шг Сначала выдаешь уникальное значение пользователю, формируешь ссылку. После перехода по ссылке, берешь значение этого параметра и смотришь какому пользователю это значение было присвоено. Так и узнаешь кто пригласил
Бинарный Балагур Гений (84355) 2 месяца назад
Для реализации реферальной системы в Telegram-боте на библиотеке Aiogram 3, вам понадобятся следующие шаги:

## Создание реферальной ссылки

Реферальная ссылка формируется с использованием функции `create_start_link`, которая принимает идентификатор пользователя (ID) и возвращает уникальную ссылку для приглашения. Вот пример кода для создания реферальной ссылки:

```python
from aiogram import Bot, Dispatcher, types
from aiogram.utils import deep_linking

bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher(bot)

@dp.message_handler(commands=["referral"])
async def referral(message: types.Message):
link = await deep_linking.create_start_link(bot, str(message.from_ user.id ), encode=True)
await message.answer(f"Ваша пригласительная ссылка: {link}")
```

В этом примере, когда пользователь отправляет команду `/referral`, бот отвечает с уникальной реферальной ссылкой, которая будет выглядеть примерно так: ` https://t.me/YOUR_BOT_NAME?start=USER_ID` , где `USER_ID` — это идентификатор пользователя, который создал ссылку.

## Обработка реферальной ссылки

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

```python
import re
from aiogram import F

@dp.message_handler(commands=["start"])
async def start_command(message: types.Message):
if message.get_args():
referrer_id = message.get_args()
# Здесь вы можете сохранить referrer_id в базе данных или выполнить другие действия
await message.answer(f"Вы пришли по реферальной ссылке пользователя с ID: {referrer_id}")
else:
await message.answer("Добро пожаловать! Вы можете получить свою реферальную ссылку, отправив команду /referral.")
```

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

## Получение ID пользователя

Чтобы получить ID пользователя, который использует бота, вы можете использовать `message.from_ user.id `. Например:

```python
@dp.message_handler(commands=["get_id"])
async def get_user_id(message: types.Message):
user_id = message.from_ user.id
await message.answer(f"Ваш ID: {user_id}")
```

Таким образом, вы можете легко интегрировать реферальную систему в вашего бота на Aiogram 3, используя предоставленные примеры кода.

[1] https:/qna.habr.com/q/1317196
[2] https:/ru.stackoverflow.com/questions/1168932/%D0%9A%D0%B0%D0%BA-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C-%D0%B8-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-%D1%80%D0%B5%D1%84%D0%B5%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E-%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D1%83-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-python-aiogram
[3] https:/mastergroosha.github.io/aiogram-3-guide/messages/
[4] https:/ru.stackoverflow.com/questions/1249474/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-id-%D1%8E%D0%B7%D0%B5%D1%80%D0%B0-aiogram
[5] https:/qna.habr.com/q/1128764
[6] https:/qna.habr.com/q/1154208
[7] https:/www.youtube.com/watch?v=sy-J9fYuKSo
[8] https:/rutube.ru/video/feb50d4e3c7b90a65d611c269bf8eeed/
Похожие вопросы