смотри, у тебя есть идентификатор пользователя. Никто не запрещает тебе записать его в БД и выдавать определённый статус.
К примеру, моим ботом запрещено пользоваться, пока ты не предоставишь свой номер телефона (есть кнопка "поделиться своим номером").
Суть такая: пользователь пишет /start. я в бд загоняю его ID и пишу статус 0. Затем предлагаю поделиться контактом.
если он сделает всё что угодно, кроме "поделиться номером", то бот ему отправит сообщение: "вы не поделились номером" и снова предложит поделиться им. Круг будет повторяться, пока чел не скажет свой номер телефона. И вот тогда я уже в БД поставлю статус 1. Теперь при сообщении от пользователя я буду проверять: стоит ли у него статус 1 или нет. Если да, то он может дальше пользоваться ботом.