【发布时间】:2020-05-18 12:41:54
【问题描述】:
我做了什么:
我使用TelegrafJS 框架开发了一个Telegram 机器人。该机器人允许用户订阅付费频道,该频道是私有的。
所以付款完成后,机器人会发送邀请链接让用户加入频道。
问题
现在假设付费用户将邀请链接发送给另一个用户(未付费),非付费用户将像付费一样获得付费频道的访问权限。
在考虑解决方案之前,有必要了解Telegram的邀请链接限制:
- 无法将用户添加到没有邀请链接的频道;
- 无法创建一次性邀请链接;
- 无法创建个人邀请链接(只有一个用户可以使用);
- 邀请链接缓存在 Telegram 服务器上,如果您重置它们太快,它们会变得不稳定(尝试使用您的 Telegram 应用在 10 秒内重置链接 2-3 次 - 你会明白我的意思)。
我认为的解决方案
我想在一个内联按钮后面显示邀请链接,所以用户会看到 CLICK HERE 按钮 3 秒,然后这将被撤销并创建另一个链接。这并不能消除不付费订阅就可以访问付费频道的问题,但会让不公平用户的生活更加困难。
可能的其他问题:当用户点击链接时:
抱歉,此频道似乎不存在。
这意味着频道的邀请链接目前不稳定。它通常发生在连续点击几次加入之后,或者如果多个用户同时尝试加入。
尝试次数过多,请稍后再试
表示用户最近点击了太多无效的邀请链接。很可能,他在此之前有很多消息“对不起,此频道似乎不存在”,或者连续加入了太多频道/组。
结论
有没有更安全的方法来处理这个问题?
【问题讨论】:
-
如果你有付费用户的 tg 句柄数据库,你不能在未经授权的用户加入后立即踢掉他们吗?
-
@Nijeesh 我想到了这一点,不幸的是,Telegram API 尚不支持该频道的此功能,但仅适用于群组。
-
您可以禁止用户进入频道。这是api doc
-
有没有办法处理使用 webhook 加入的新用户?
-
截至今天,
new_user_joined的活动仅适用于我认为的团体。但我认为,您可以编写一个后台作业来比较特定时间间隔内的用户列表,并根据结果执行操作。
标签: node.js telegram telegram-bot node-telegram-bot-api