使用Telegram客户端进行机器人测试(不是bot api)

Pun*_*rud 8 telegram telegram-bot

我现在正在构建一个Telegram Bot,并使用Telegram Client手动测试它.有没有办法可以像我建立机器人一样发送客户端消息?

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

Jeh*_*lio 12

我问了同样的问题而没有找到答案.所以我制作了两个用于测试电报机器人的库:

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

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


Yak*_*ovL 5

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

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

现在,您可能不应该挖掘 API 本身,而是使用库来节省时间。最流行的是Telethon,您可以找到其使用的各种示例。根据您用来创建机器人的语言,您可能想要使用一些其他库,但大多数专用库实际上是 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')
Run Code Online (Sandbox Code Playgroud)