如何与Telegram API交互

63

在阅读了http://core.telegram.org的文档后,我试图使用Telegram的API,但感到非常困惑。

我已经注册了我的应用程序,并获得了hash_id和其他所有的东西。 但是我不确定从哪里开始。

之前我曾经使用过Spotify的API,并能够使用http://api.spotify.com/v1/method?params:values表单与其互动。

我找不到Telegram API的URL。 我也在互联网上搜索了很多,但找不到任何有用的示例。

有人知道如何开始使用Telegram的API吗?

非常感谢任何帮助。


你在C#中使用过Spotify的API和Telegram的API吗? - Kiquenet
使用C#调用了Spotify的API(通过URI和JSON响应),并构建了一个Spotify演示播放器应用程序。但从未尝试过使用Telegram的API。 - Ramtin Soltani
@RamtinSoltani 你找到任何解决方案了吗? - Vahid Najafi
3
因为TG API关乎低级网络和加密。 - pouya
5个回答

37
如果你真的想从零开始了解Telegram API开发,我的建议是按照以下步骤进行操作:https://core.telegram.org/mtproto/auth_key以及https://core.telegram.org/mtproto/samples-auth_key。尝试成功生成一个AuthKey,这将使你熟悉基础知识,并帮助你构建在Telegram API上进一步工作所需的例程。我在这篇SO帖子中为您概述了入门的基础知识。此外,我认为在线API文档写得不是很好,但是按照上述步骤并阅读API文档,仅针对AuthKey生成,就可以让你熟悉API作者的语言和写作风格。祝好运!

有没有适用于安卓的库? - yadunath.narayanan
像其他API一样,我们有一个特定的代码,由API提供者编写,只需将该代码包含到您的应用程序中,API就可以使用了。Telegram API有这样的东西吗?我只想从头开始。 - Climb Tree

21

Telegram API并不像普通的HTTP / Rest API使用起来那么容易,您必须与其MTProto协议进行交互。您还需要执行各种加密和解密操作。 Telegram最近发布了一个新的Bot API,它在一个良好的HTTP API后面抽象出所有的复杂性。 以下是在NodeJS中使用https://github.com/arcturial/telegrambot的使用示例:

var TelegramBot = require('telegrambot');
var api = new TelegramBot('<YOUR TOKEN HERE>');

api.getUpdates({ offset: 0 }, function (err, updates) {
    // array of message updates since last poll
    console.log(updates);
});

api.sendMessage({ chat_id: 0, text: 'test' }, function (err, message) {
    // the chat_id is the id received in the getUpdates() call
});

您可以使用他们的BotFather应用程序生成令牌。你也可以使用他们的深度链接功能,在你的网站上添加一个链接来启动与机器人的对话,就像这样:

https://telegram.me/triviabot?start=payload

payload值可以是任何你想要的东西,比如一个缓存密钥,你可能会用它来验证一个真实的人等。

我知道这不直接回答你的问题,但从个人经验来看,我发现与Bot API交互比尝试实现正常API所需的所有复杂性更好。如果您坚持使用他们的正常API,IP地址为149.154.167.40:443(测试)和149.154.167.50:443(产品)。他们在https://my.telegram.org/apps下提供IP详细信息。


1
感谢您的回答。我的主要目标是编写一个简单的Telegram客户端,可以通过检查电话号码是否在Telegram中注册来向联系人发送消息。我想使用C#来完成这个任务。您推荐哪种方法最好?Bot API能否用于调用Telegram API中的方法(或类似于其的Bot API方法)? - Ramtin Soltani
4
如果您想创建一个可以与 Telegram 集成的应用程序(类似于 Slack 和 Slack 集成),比如在 Telegram 聊天窗口中看到 Jenkins/Travis CI 构建通知,那么 Bot API 是非常有效的。机器人不必被分配到一个号码上。如果您想创建一个允许人与人之间发送消息的客户端,则必须使用普通的 Telegram API。不幸的是,我尝试过普通的 Telegram API,但很难使其正常工作,我只能建议您查看一下样例 https://github.com/zhukov/webogram 或者 https://github.com/enricostara/telegram.link - Chris Brand
@ChrisBrand 我知道这是一个旧帖子,但你有没有尝试使用正常的Telegram API?当我尝试使用nodejs向Telegram API进行POST时,我遇到了“getaddrinfo ENOTFOUND api.telegram.org api.telegram.org:443”的错误。当我在Postman中操作时,它可以正常工作。 - deanwilliammills
Bot API不完整(您无法从Bot API调用许多API方法)。 - Green

12

我正在寻找一种快速与 Telegram API 进行交互(不是受限的机器人API),并将其集成到Python项目中的解决方案。我找到了以下Python客户端实现,这对我很有帮助。希望它能帮到某些人。正如其他人所提到的,Telegram API很难理解,但您可以使用Telethon在很短的时间内进行操作,而不需要预先了解 Telegram API 协议。

https://github.com/LonamiWebs/Telethon

要安装Telethon只需输入:

pip install telethon

以下是一个简短的代码示例,演示了如何轻松使用API打印最近的聊天记录:

在此输入图像描述这个示例来自 telethon 的 GitHub 页面。


1
对于.NET程序员来说,现在有WTelegramClient,它允许您调用Telegram客户端API(作为用户连接,而不是机器人)。
该库非常完整,但使用起来也非常简单。请参阅GitHub上的README以进行简单介绍。
它需要一个永久连接,但可以集成到ASP.net网站中。请参见此FAQ,其中包含一个示例网站。

-1

对于任何JavaScript使用者,可以在npm中使用Telegram包。

npm install telegram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接