如何使私人电报机器人只能由其所有者访问?

时间:2017-09-02 15:27:35

标签: telegram telegram-bot

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

5 个答案:

答案 0 :(得分:10)

您可以在设置中执行此操作,您需要自行检查,如果.message.from.id不等于您的,请退出程序。

您可以通过/setjoingroup停用加入群组,但不能邀请僵尸程序进行分组。

答案 1 :(得分:4)

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

答案 2 :(得分:4)

几周前,我开始研究电报的机器人。为此,我已经阅读了规范,无法通过botfather创建私有bot。唯一的方法是使用自定义命令(例如/ password)将密码发送给漫游器,然后保留客户端的聊天ID(当然,密码正确时...)。您的机器人只需要接受来自记忆/修正的聊天ID的命令,就像您对其他任何应用程序所采用的经典方式一样。

答案 3 :(得分:2)

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

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

来自文档:

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

答案 4 :(得分:1)

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

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