Python. Aiogram. Deep Linking. Как можно реализовать проверку зашел ли друг пользователя в бота?
В общем у меня есть бот, и я решил создать в нем некую «систему уровней».
В боте будет три уровня, например,
- Bronze (3 друга)
- Silver (5 друзей)
- Gold (10 друзей)
Чтобы поднять уровень нужно добавить несколько друзей в бота (Чтобы друзья перешли по ссылки выданной ботам), ранее я задавал похожий вопрос и мне предложили использовать «Deep Linking» (Глубокие ссылки).
Почитав официальную документацию telegram – https://core.telegram.org/bots/features#deep-linking
Я понял, что можно передать некоторые параметры в команду /start Например,
https://t.me/Логин_бота?start=параметр
Больше я ничего не нашел.
Подскажите как мне реализовать формирование специальной ссылки и проверку перешел ли по ней друг пользователя, возможно с использованием БД для хранения количества переходов по «специальной ссылки». Реально ли это запихнуть в Inline кнопку?
Если есть возможности объясните все максимально подробно, я только недавно начал учить aiogram.
Ответы (1 шт):
Да, в комменте к вопросу эта же ссылка и указана, я как-то упустил...
А в документации Aiogram вы читали про Deep Linking
Когда кто-то переходит по ссылке вида http://t.me/blablabot?start=blabla
в самом боте появляется кнопка Старт, вне зависимости того, был ли ранее этот бот запущен. И при нажатии на Старт, боту передается команда /start и сам параметр, выглядит это так:
/start blabla
Что бы получить переданный параметр, используем command.args
Пример из документации:
from aiogram.utils.deep_linking import decode_payload
from aiogram.filters import CommandStart, CommandObject
from aiogram.types import Message
@router.message(CommandStart(deep_link=True))
async def handler(message: Message, command: CommandObject):
args = command.args
payload = decode_payload(args)
await message.answer(f"Your payload: {payload}")
В переменную args вкладываем наши blabla и делаем то, что нам нужно: записываем в БД тому к кому этот параметр относится, что хотим в общем