【问题标题】:How to manage invite link in private channel?如何管理私人频道中的邀请链接?
【发布时间】: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


【解决方案1】:

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

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

请参考official Telegram Bot API documentation

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      响应 Http 302 位置:T.me/invite/key 当请求时间为

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 只有在您确定没有人离开群组时才有效。
        • 虽然 bot 可以捕获离开频道事件以减少计数器...
        【解决方案5】:

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

        【讨论】:

        • 你有这方面的例子吗?大家都说不可能
        • 你指的是哪一步?
        • 我的意思是:你能写一些代码(至少是一个简单的基本示例)来管理这个吗?
        • 我不是编码员,但根据我在电报上使用机器人和频道的用户体验有一个想法
        【解决方案6】:

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

        bitly API 可能看起来很酷。

        【讨论】:

        • 有趣的解决方案,但付费用户可以将链接分享给其他人。所以问题还没有完全解决……
        猜你喜欢
        • 2017-11-14
        • 2023-01-05
        • 1970-01-01
        • 2017-12-31
        • 2021-12-17
        • 2021-04-06
        • 2021-01-25
        • 1970-01-01
        • 2022-01-13
        相关资源
        最近更新 更多