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

How to make a private Telegram bot accessible only by its owner?

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

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

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

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

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

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

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

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

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

来自文档:

  1. 使用合适的用户名创建一个机器人,例如@ExampleComBot
  2. 为收到的消息设置网络钩子
  3. 生成足够长度的随机字符串,例如$memcache_key = "vCH1vGWJxfSeofSAs0K5PA"
  4. 将键为 $memcache_key 的值 123 放入内存缓存 3600 秒(一小时)
  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 中向他们发送消息。