调用 Telegram API 创建一个 feedreader 机器人

Calling Telegram API to create a feedreader bot

我看到了新的 API 机器人可以创建客户机器人,我看到了一些来源,例如 this and this I have also read about @fatherbot which is about registering bots,I also searched about some examples about telegram bots such as this 一个,我知道如何在 phppython 但无法找到如何调用 api 方法以及从哪里获取 start.Does 有人知道如何开始吗?

我也是 Telegram API 的新手,但您可以从访问此 URL 开始,您应该在其中将 (token) 替换为您自己生成的令牌 buy BotFather:

https://api.telegram.org/bot(token)/METHOD_NAME

例如,如果您想开始处理通过 PHP 脚本发送给您的机器人的请求,您应该这样调用:

https://api.telegram.org/bot(token)/setWebhook?url=https://yourdomain.com/path_to_your_script/

请注意,您必须拥有支持 SSL 的网站才能开始使用电报 API。

根据Official Bot API

Getting updates

There are two mutually exclusive ways of receiving updates for your bot 
— the getUpdates method on one hand and Webhooks on the other.

因此 PHP 机器人脚本根据接收模式以不同的方式工作

使用 getUpdates

bot API 的访问是通过 HTTP GET/POST,官方帮助中有详细说明。

  • 使用无限循环从电报中读取消息,使用 HTTP GET/POST
  • 如果有新消息

    • 解析消息
    • 使用 HTTP 发送消息 GET/POST
    • 睡几秒钟

使用 WebHook

当使用 WebHook(并且配置良好)时,发送给您的机器人的新消息将触发从电报服务器到您配置的 url 的 HTTP POST 请求,在您自己的服务器上,由您的 PHP脚本。

在您的 PHP 脚本中,解析来自 HTTP POST 的新消息,并使用 HTTP POST 将消息发回电报服务器。


因此,差异只存在于从电报中获取消息时,所有发送到电报的响应都是通过 HTTP GET/POST,详情请参见官方 提出请求 部分 API.

有些人在 github 上发了一些非官方的 PHP api:

您可以使用这个基本示例来开始。我建议使用类似 curl 的方法添加更多润色并添加一些错误处理。

<?php

$bot_id = "<bot ID generated by BotFather>";

# Note: you want to change the offset based on the last update_id you received
$url = 'https://api.telegram.org/bot' . $bot_id . '/getUpdates?offset=0';
$result = file_get_contents($url);
$result = json_decode($result, true);

foreach ($result['result'] as $message) {
    var_dump($message);
}

# You can send a message like this:
# The chat_id variable will be provided in the getUpdates result
# TODO: urlencode your message
$url = 'https://api.telegram.org/bot' . $bot_id . '/sendMessage?text=message&chat_id=0';
$result = file_get_contents($url);
$result = json_decode($result, true);

var_dump($result['result']);

您可以将我的新库用于 telegram 的 bot api! https://github.com/tekook/TelegramLibrary

它具有新 api 的所有功能,并且是一个易于使用且基于事件的库!

玩得开心!

关于 getUpdates API 和无限循环,php 服务器不能让代码执行超过 30 秒。 ,因此无限循环无法正常工作。

作为脚本无法 运行 超过 30 秒的答案:

使用set_time_limit(0);让它永远持续下去。但是请注意,任何无限时间循环都有些危险; cpu 猪或内存泄漏等副作用会影响您的服务器。这就是为什么许多 ISP 不允许此设置的原因。

我建议初学者这样开始:

  1. 在您的 Telegram 应用程序中搜索 BotFather

  2. 向他发送 /newbot 命令。按照他的指示去做。

  3. 他会给你一个令牌,类似123456789:ABCDefGHIJKLmnopQRstUVwXYz

  4. 打开浏览器window,在地址栏中输入以下形式的内容:https://api.telegram.org/bot<token>/getMe
    例如,使用上面的假标记:https://api.telegram.org/bot123456789:ABCDefGHIJKLmnopQRstUVwXYz/getMe
    它应该 return 您的机器人信息 JSON 格式。这表明访问Bot API无非是发出HTTP请求。

  5. 在 Telegram 应用程序上搜索您的机器人。给它发消息。

  6. 在浏览器window上输入:https://api.telegram.org/bot<token>/getUpdates
    请记住替换令牌。您应该会看到刚刚发送的消息。请注意 fromchat 字段。那就是你。

  7. 然后,您可以试用一些库。为了在这里提供一些语言平衡,我建议 telepot,这是我创建的一个 Python 框架。项目页面有很多文档和示例。

最后,即使有图书馆的帮助,我也鼓励您阅读底层的 Bot API documentations。了解它可以帮助您充分利用它的力量。

祝你好运。