如何使私人电报机器人只能由其所有者访问?
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 获取唯一密钥并保护您的机器人。
拒绝任何没有密钥的人访问您的代码。
来自文档:
- 使用合适的用户名创建一个机器人,例如@ExampleComBot
- 为收到的消息设置网络钩子
- 生成足够长度的随机字符串,例如
$memcache_key = "vCH1vGWJxfSeofSAs0K5PA"
- 将键为
$memcache_key
的值 123 放入内存缓存 3600 秒(一小时)
- 向我们的用户显示按钮 https://t.me/ExampleComBot?start=vCH1vGWJxfSeofSAs0K5PA
- 配置 webhook 处理器以使用在以 /start 开头的传入消息中传递的参数查询 Memcached。如果密钥存在,则将传递给 webhook 的 chat_id 记录为用户 123 的
telegram_chat_id
。从 Memcache 中删除密钥。
- 现在,当我们要向用户 123 发送通知时,检查他们是否有字段
telegram_chat_id
。如果是,请使用 Bot API 中的 sendMessage
方法在 Telegram 中向他们发送消息。
我正在开发一个 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 获取唯一密钥并保护您的机器人。 拒绝任何没有密钥的人访问您的代码。
来自文档:
- 使用合适的用户名创建一个机器人,例如@ExampleComBot
- 为收到的消息设置网络钩子
- 生成足够长度的随机字符串,例如
$memcache_key = "vCH1vGWJxfSeofSAs0K5PA"
- 将键为
$memcache_key
的值 123 放入内存缓存 3600 秒(一小时) - 向我们的用户显示按钮 https://t.me/ExampleComBot?start=vCH1vGWJxfSeofSAs0K5PA
- 配置 webhook 处理器以使用在以 /start 开头的传入消息中传递的参数查询 Memcached。如果密钥存在,则将传递给 webhook 的 chat_id 记录为用户 123 的
telegram_chat_id
。从 Memcache 中删除密钥。 - 现在,当我们要向用户 123 发送通知时,检查他们是否有字段
telegram_chat_id
。如果是,请使用 Bot API 中的sendMessage
方法在 Telegram 中向他们发送消息。