【问题标题】:How to make a private Telegram bot accessible only by its owner?如何使私人电报机器人只能由其所有者访问?
【发布时间】:2018-02-11 09:48:55
【问题描述】:

我正在开发一个 Telegram 机器人,它应该只能由其所有者访问(只有所有者才能将其添加到组或在搜索中看到它)。是否可以通过 Telegram 服务(如 BotFather)来实现这一点,或者如果向机器人发送消息的人是所有者,我应该检查我的代码吗?

【问题讨论】:

    标签: telegram telegram-bot


    【解决方案1】:

    你可以在设置中这样做,你需要自己检查,如果.message.from.id不等于你的就退出程序。

    您可以通过/setjoingroup禁用加入群组,但您也不能邀请机器人加入群组。

    【讨论】:

    • 不会退出程序会阻止机器人在我的私人频道或群组上工作吗?我不应该忽略来自无法识别的源的 /start 命令吗?
    • @Eitan 我没听懂你。 :(
    【解决方案2】:

    BotFather 无能为力。 唯一的方法是在你的代码中检查它。

    【讨论】:

      【解决方案3】:

      您可以在代码中查看聊天 ID(9 位数字)。

      例如,如果您使用this 包装器创建机器人,则可以使用update.message.chat_id 获取聊天ID。您还可以检查名字 (update.message.from_user.first_name) 和姓氏 (update.message.from_user.last_name)。

      【讨论】:

        【解决方案4】:

        几周前我开始研究 Telegram 的机器人。为此,我在规范中阅读了无法从 botfather 创建私人机器人。唯一的方法是使用 /password 之类的自定义命令向机器人发送密码,然后保留客户端的聊天 ID(当然,当密码正确时......)。您的机器人只需要接受来自记忆/经过验证的聊天 ID 的命令,就像您以经典方式对任何其他应用程序一样。

        【讨论】:

          【解决方案5】:

          电报文档中描述了另一个选项。

          您可以使用deeplink 从链接中获取唯一密钥并保护您的机器人。 拒绝任何没有密钥的人访问您的代码。

          来自文档:

          1. 使用合适的用户名创建机器人,例如@ExampleComBot
          2. 为传入消息设置 webhook
          3. 生成一个足够长的随机字符串,例如$memcache_key = "vCH1vGWJxfSeofSAs0K5PA"
          4. 将值 123 和键 $memcache_key 放入 Memcache 360​​0 秒(一小时)
          5. 向我们的用户显示按钮https://t.me/ExampleComBot?start=vCH1vGWJxfSeofSAs0K5PA
          6. 配置 webhook 处理器以使用以 /start 开头的传入消息中传递的参数查询 Memcached。如果密钥存在,则将传递给 webhook 的 chat_id 记录为用户 123 的 telegram_chat_id。从 Memcache 中删除密钥。
          7. 现在,当我们要向用户 123 发送通知时,请检查他们是否有字段 telegram_chat_id。如果是,请使用 Bot API 中的 sendMessage 方法在 Telegram 中向他们发送消息。

          【讨论】:

          • 回复您刚刚删除的问题:查看top-level await。 Webpack 支持它。 const go = await import(/*...*/); 在你的路由模块的顶层。
          猜你喜欢
          • 2022-01-27
          • 2017-08-18
          • 1970-01-01
          • 1970-01-01
          • 2016-05-23
          • 2018-11-03
          • 1970-01-01
          • 2019-04-08
          • 2018-04-01
          相关资源
          最近更新 更多