6

我做了什么:

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

所以付款完成后,机器人会发送邀请链接让用户加入频道。

问题

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

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

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

我认为的解决方案

我想在一个内联按钮后面显示邀请链接,所以用户会看到CLICK HERE按钮 3 秒,然后这将被撤销并创建另一个链接。这并没有消除无需付费订阅即可访问付费频道的问题,但它使不公平用户的生活更加困难。

可能的其他问题:当用户点击链接时:

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

这意味着该频道的邀请链接目前不稳定。它通常发生在连续单击多次加入之后,或者如果多个用户同时尝试加入。

尝试次数过多,请稍后再试

这意味着用户最近点击了太多无效的邀请链接。很可能,他在此之前收到了很多消息“对不起,此频道似乎不存在”,或者连续加入了太多频道/组。

结论

有没有更安全的方法来处理这个问题?

4

6 回答 6

2

鉴于 Telegram API 的限制,我能想到的最佳选择是拥有一个独特的链接,该链接重定向到您的机器人的邀请链接。

bitly API 可能看起来很酷。

于 2020-02-07T19:33:05.757 回答
1

就目前而言(自 2021 年 3 月 9 日起),有多种方法可用于处理有限的聊天/频道邀请链接。

您可以使用 createChatInviteLink 方法创建唯一的邀请链接,限制加入某些用户号码。

请参阅官方 Telegram Bot API 文档

于 2021-09-03T08:04:48.293 回答
1

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

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

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

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

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

于 2021-02-26T23:06:29.370 回答
0

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

于 2020-10-23T12:48:14.057 回答
0

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

于 2021-03-30T17:14:55.973 回答
0

通过 userbot API,您的机器人可以充当秘密通道的创建者(无限管理员)的用户。因此,该管理员可以查看频道的订阅者加入/离开该频道的日志。此日志持续 24 小时。一旦被邀请的用户加入了秘密频道,就可以删除joinchat-Button,并且可以撤销joinchat URL。否则如果其他用户加入这个秘密频道,他们可以被踢。

于 2020-02-07T23:05:30.830 回答