Пригласительные ссылки в Telegram
GrooshaСсылки делятся на 2 типа: первичные и дополнительные.
У каждого админа (включая ботов) может быть не более одной первичной ссылки и сколько угодно вторичных.
Первичная ссылка не имеет никаких лимитов, но, поскольку она одна, то генерация новой первичной ссылки (в Bot API это метод exportChatInviteLink) приводит к отзыву предыдущей.
Дополнительная ссылка (метод createChatInviteLink) может иметь ограничения по времени и по количеству вступлений. Важно: "количество вступлений" означает не совсем то, что можно сразу подумать. Суть в чём.
Предположим, вы генерируете дополнительную ссылку с количеством вступлений, равным единице.
• Пользователь Алиса вошла по этой ссылке, осталось 0 вступлений.
• Пользователь Алиса вышла из группы, у этой ссылки стало 1 вступление.
• Пользователь Боб теперь снова может зайти по этой ссылке, у ссылки останется 0 вступлений.
Что можно сделать. чтобы ссылка была реально одноразовой?
При вступлении в группу админ-бот, слушающий апдейт типа chat_member, получает информацию об участнике, а также о пригласительной ссылке, по которой он зашёл. Если ссылка отображается целиком (в поле creator указан сам бот и нет "..." в поле invite_link), то эта ссылка принадлежит боту и он может её отозвать методом revokeChatInviteLink.
Дополнительно можно на своей стороне проверять (требуется написание доп. кода), что вошёл по ссылке именно тот Telegram ID, кому бот кидал эту пригласительную ссылку. И банить тех, кто зашёл по чужой ссылке.