如何管理私人频道中的邀请链接?

时间:2020-02-02 15:38:54

标签: node.js telegram telegram-bot node-telegram-bot-api

我做了什么:

我使用TelegrafJS框架开发了一个Telegram机器人。该漫游器允许用户订阅付费频道,该频道是私有频道。

因此,付款完成后,漫游器会发送邀请链接,让用户加入频道。

问题

现在假设付费用户将邀请链接发送给另一个用户(未付费),则非付费用户将获得对付费频道的访问权限,就像付费一样。

在考虑解决方案之前,有必要了解有关Telegram邀请链接的限制:

  • 无法在没有邀请链接的情况下将用户添加到频道;
  • 无法创建一次性邀请链接;
  • 无法创建个人邀请链接(只有一个用户可以使用);
  • 邀请链接缓存在Telegram服务器上,如果您重置它们的速度太快(使用Telegram应用程序尝试在10秒内将链接重置2-3次,您会明白我的意思)。

我认为是解决方案的

我想在一个嵌入式按钮后面显示邀请链接,因此用户将看到 CLICK HERE 按钮3秒钟,然后将其撤消并创建另一个链接。这并不能消除没有付费订阅就可以访问付费频道的问题,但会使不公平用户的生活更加困难。

其他可能的问题:当用户单击链接时,得到:

抱歉,该频道似乎不存在。

这意味着该频道的邀请链接目前处于不稳定状态。通常在行中多次单击加入后,或者如果多个用户试图同时加入,就会发生这种情况。

尝试过多,请稍后再试

这表示用户最近点击了太多无效邀请链接。最有可能的是,他在此消息之前有很多消息“对不起,该渠道似乎不存在”,或者连续加入了太多的渠道/组。

结论

有没有更安全的方式来处理此问题?

5 个答案:

答案 0 :(得分:1)

鉴于Telegram API的局限性,我能想到的最好的选择是拥有一个唯一的链接,该链接可以重定向到您的机器人的邀请链接。

这个有点刺耳的API可能看起来很酷。

答案 1 :(得分:1)

如何在只有付费用户才能访问的网站上生成一个带有过期时间的链接。当他们点击链接时,您的服务器会通过 302 重定向响应响应邀请链接。

示例:[加入电报] https://myserver.com/generateInviteLink?expiretime={Date.now}+10minutes

响应 http 302位置:T.me/invite/key 当请求时间为< expiretime 时,否则抛出错误

端点 generateinvitelink 也应该受到密码保护。并且密钥应该被加密

我知道跟踪其 http 请求的用户将能够访问该 URL,但对于某些用户来说它会起作用。

答案 2 :(得分:0)

通过userbot API,您的机器人可以充当秘密渠道的创建者(不受限制的管理员)的用户。因此,该管理员可以查看加入/离开该频道的订户的频道日志。该日志持续24小时。受邀用户加入秘密频道后,便可以删除joinchat-Button,并可以撤消joinchat URL。否则,如果其他用户加入此秘密频道,他们将被踢出。

答案 3 :(得分:0)

当count = count + 1创建新的邀请链接时,您可以计算私人聊天(频道或群组)中的成员数。

答案 4 :(得分:0)

好吧,为什么不从添加成员选项中亲自添加它们。让他们打开他们的隐私设置一分钟并添加它们。将您的链接保密,没有人会知道。