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

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 从链接中获取唯一密钥并保护您的机器人。 拒绝任何没有密钥的人访问您的代码。

来自文档:

    使用合适的用户名创建机器人,例如@ExampleComBot 为传入消息设置 webhook 生成一个足够长的随机字符串,例如$memcache_key = "vCH1vGWJxfSeofSAs0K5PA" 将值 123 和键 $memcache_key 放入 Memcache 360​​0 秒(一小时) 向我们的用户显示按钮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 中向他们发送消息。

【讨论】:

回复您刚刚删除的问题:查看top-level await。 Webpack 支持它。 const go = await import(/*...*/); 在你的路由模块的顶层。

以上是关于如何使私人电报机器人只能由其所有者访问?的主要内容,如果未能解决你的问题,请参考以下文章

电报机器人可以读取频道消息吗

如何限制对电报机器人的访问

允许机器人访问电报组消息[重复]

我无法访问我在电报机器人中使用 getupdates 发送的消息

电报机器人可以访问有关用户的哪些信息?

Discord 中所有私人消息的 JSON