Как управлять приглашением по ссылке в приватном канале? - PullRequest
2 голосов
/ 02 февраля 2020

Что я сделал:

Я разработал бот Telegram с использованием Telegraf JS framework. Этот бот позволяет пользователю подписаться на платный канал, этот канал приватизирован.

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

Проблема

Теперь предположим, что платящий пользователь отправит ссылку приглашения другому пользователю (который не заплатил), а не платящий пользователь получит доступ к платному каналу, как если бы он платный.

Прежде чем думать о решении, необходимо знать ограничение на количество приглашений Telegram:

  • Невозможно добавить пользователь на канал без ссылки приглашения;
  • Невозможно создать одноразовую ссылку приглашения;
  • Невозможно создать личную ссылку приглашения (которую может использовать только один пользователь) ;
  • Приглашающие ссылки кэшируются на серверах Telegram и становятся нестабильными, если вы сбрасываете их слишком быстро (попробуйте сбросить ссылку 2-3 раза за 10 секунд с помощью приложения Telegram - вы поймете, что я имею в виду).

То, что я считал решением

Я думал показать ссылку приглашения за встроенной кнопкой, чтобы пользователь увидел ЩЕЛКНИТЕ ЗДЕСЬ кнопку в течение 3 секунд, после чего она будет отменена и будет создана другая ссылка. Это не снимает проблему доступа к платному каналу без оплаты подписки, но усложняет жизнь недобросовестным пользователям.

Возможна и другая проблема: когда пользователь нажимает на полученную ссылку:

Извините, этот канал, по-видимому, не существует.

Это означает, что в настоящее время ссылка приглашения на канал нестабильна. Обычно это происходит после нажатия Join несколько раз подряд ИЛИ, если несколько пользователей пытаются присоединиться одновременно.

Слишком много попыток, повторите попытку позже

Это означает, что в последнее время пользователь нажал слишком много недействительных ссылок приглашения. Скорее всего, у него было много сообщений: «Извините, этот канал, кажется, не существует» прямо перед этим или присоединился к слишком многим каналам / группам подряд.

Заключение

Есть ли более безопасный способ справиться с этим?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Через userbot API ваш бот может выступать в роли пользователя, который является создателем (неограниченным администратором) секретного канала. Таким образом, этот администратор может просматривать журнал подписчиков канала, которые присоединяются к этому каналу или покидают его. Этот журнал длится 24 часа. Как только приглашенный пользователь присоединился к секретному каналу, кнопка joinchat может быть удалена, а URL-адрес joinchat может быть отозван. В противном случае, если другие пользователи присоединятся к этому секретному каналу, их могут выгнать.

0 голосов
/ 07 февраля 2020

Учитывая ограничения API Telegram, лучший вариант, который я могу придумать, - это иметь уникальную ссылку, которая перенаправляет на ссылку приглашения вашего бота.

Для этого может показаться интересным API.

...