Для реализации реферальной системы в 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/
Как должна выглядеть реферальная ссылка?
И как достать из команды /start ID того кто пригласил?
Aiogram 3