【问题标题】:Use Telegram client for bot testing (not bot api)使用 Telegram 客户端进行机器人测试(不是机器人 api)
【发布时间】:2016-08-21 20:16:24
【问题描述】:

我现在正在构建一个 Telegram Bot,并正在使用 Telegram Client 手动对其进行测试。 有没有一种方法可以像构建机器人一样发送客户端消息?

我知道我可以在代码中构建单元测试,这不是我想要的。

【问题讨论】:

  • 您可能会更改基本网址(而不是 https://api.telegram.org 您自己的服务器),并回复正确的内容。
  • 问题是没有客户端 API 并且 Bots 无法发起对话,所以我看不出这是如何工作的。
  • 基本上,您复制 Telegram API。

标签: telegram telegram-bot


【解决方案1】:

我问了同样的问题,但没有找到答案。所以我做了两个库来测试电报机器人:

  1. 如果您使用node-telegram-bot-api 制作机器人,则可以使用telegram-test。它捕获机器人请求并允许假装我们从客户端获得了有效的答案。
  2. telegram-test-api 可以与任何机器人和任何技术堆栈一起使用。它是一个模拟 Telegram API 的网络服务器。您可以使用任何客户端向它发出客户端请求,协议非常简单。

这两个项目目前都处于深度 alpha 版本,但我还没有看到更好的东西。您可以阅读有关这些项目的文章(俄语)here

【讨论】:

    【解决方案2】:

    或者,您可以使用 MTProto Telegram 用户帐户库,例如 PHP 中的 MadelineProto、Python 3 中的 TelethonPyrogram。您可以使用这些库来自动化用户帐户来测试您的机器人。

    请注意,如果您过于频繁地发送消息,您可能会遇到洪水禁令。

    【讨论】:

      【解决方案3】:

      有没有一种方法可以像构建机器人一样发送客户端消息?

      这可以通过Telegram API(与 Telegram Bot API 不同)来完成,它基本上是一个用于构建您自己的 Telegram 客户端的 API。首先,您应该注册一个“应用程序”,然后您可以像使用任何其他客户端一样登录到您的应用程序。

      现在,您可能不应该挖掘 API 本身,而是使用库来节省时间。最受欢迎的是Telethon,您可以找到各种examples 的用法。根据您创建机器人使用的语言,您可能想要使用其他一些库,但大多数专用库实际上是 Telethon 的包装器,例如 Gramjs(但我建议先尝试 Telethon,因为它的文档更多专用的,并且更容易用谷歌搜索它的用例)。

      不过,您应该记住,这种方法适用于仅涉及一个用户的单元测试(您可以使用您的帐户登录),但对于多用户场景来说很尴尬,并且不适合高负载测试。

      下面是一个简单的例子,说明您可以使用 Telethon 做什么:

      from telethon import TelegramClient
      
      # you will get these when registering your client at https://my.telegram.org/apps
      api_id = 12345
      api_hash = '0123456789abcdef0123456789abcdef'
      
      client = TelegramClient('arbitrary_session_name', api_id, api_hash)
      client.start()
      
      print(client.get_me().stringify())
      
      client.send_message('username', 'Hello! Talking to you from Telethon')
      

      【讨论】:

        猜你喜欢
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-30
        • 2020-08-29
        • 1970-01-01
        • 2016-04-13
        • 2019-10-25
        相关资源
        最近更新 更多