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

16 telegram telegram-bot

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

Sea*_*ean 11

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

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

  • 退出程序是否会阻止机器人在我的私人频道或群组上工作?我不应该忽略来自无法识别的源的 /start 命令吗? (2认同)

hit*_*uct 9

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

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

来自文档:

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


小智 8

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


小智 6

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


Dev*_*cie 5

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

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