如何与 Telegram API 交互

Posted

技术标签:

【中文标题】如何与 Telegram API 交互【英文标题】:How to interact with Telegram API 【发布时间】:2015-09-22 13:38:05 【问题描述】:

在阅读了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 吗? 在 C# 中使用 Spotify 的 API(通过 URI 和 JSON 响应)并构建了一个 Spotify 演示播放器应用程序。不过从未接触过 Telegram 的 API。 @RamtinSoltani 你找到解决办法了吗? 因为 tg api 是关于底层网络和密码学的 【参考方案1】:

如果你真的想从头开始了解 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作者的写作风格

祝你好运。

【讨论】:

有安卓的库吗? 与其他 API 一样,我们有一个由 API 提供者编写的特定代码,用于将那段代码包含到您的应用程序中,并且 API 已准备好使用。 Telegram API 有这样的东西吗?我只想从头开始。【参考方案2】:

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

有效负载值可以是您想要的任何值,例如您可能用于验证真人的缓存键等。

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

【讨论】:

感谢您的回答。我的主要目标是编写一个简单的 Telegram 客户端,它能够向联系人发送消息(通过检查电话号码是否在 Telegram 中注册)。我想在 C# 中做到这一点。您最推荐哪种方法? Bot API可以用来调用Telegram API中的方法(或者类似Bot API的方法)吗? 如果你想创建一个可以与 Telegram 集成的应用程序(想想 Slack 和 Slack 集成),Bot API 可以很好地工作,比如在你的 Telegram 聊天中看到 Jenkins/Travis CI 构建通知。不必为机器人分配一个号码。如果你想创建一个允许人与人之间发送消息的客户端,那么你必须使用普通的 Telegram API。不幸的是,我很难让它正常工作,我只能建议你看看样本github.com/zhukov/webogram 或github.com/enricostara/telegram.link @ChrisBrand 我知道这是一篇旧帖子,但是您对正常的 Telegram API 有什么运气吗?尝试使用 nodejsPOST 发送到 Telegram API 时,我收到“getaddrinfo ENOTFOUND api.telegram.org api.telegram.org:443”错误。当我在 Postman 中执行此操作时,它工作正常【参考方案3】:

我一直在寻找一种快速的解决方案来与 Telegram API(不是受限的 bot API)交互并将其与 python 项目集成。找到了以下 python 客户端实现,这是一个很大的帮助。希望它可以帮助某人。正如其他人所提到的,电报 API 很难理解,但是您可以在很短的时间内开始使用 Telethon,而无需预先了解电报 API 协议。

https://github.com/LonamiWebs/Telethon

要安装 Telethon,只需输入:

pip install telethon

这是一个简短的代码,展示了使用 API 打印最近的聊天记录是多么容易:

该示例取自 Telethon github 页面。

【讨论】:

以上是关于如何与 Telegram API 交互的主要内容,如果未能解决你的问题,请参考以下文章

在函数内获取变量更新(Telegram bot、Python3、python-telegram-bot 库、多处理)

如何通过 Telegram Bot API 在消息中发送嵌入图像和文本

如何使用 Telegram Bot API 获取 Telegram 频道用户列表

如何收听Telegram Bot错误? (Google App Script + Webhooks)

如何使用 Telegram API 接收图像?

Telegram Bot(用 python 编码)与 AWS API Gateway 集成