调用Telegram API创建feedreader bot

时间:2015-06-25 08:39:39

标签: php api telegram telegram-bot

我见过机器人的新API已启用创建自定义机器人,我已经看到一些来源,如thisthis我也读过有关注册机器人的@fatherbot ,我还搜索了一些关于电报机器人的例子,例如this一个,我知道如何在phppython中编写代码,但无法找到如何调用api方法以及从何处获取start.Does任何人都知道如何开始?

7 个答案:

答案 0 :(得分:11)

您可以使用此基本示例来帮助您前进。我建议使用像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']);

答案 1 :(得分:4)

根据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 bot脚本通过接收模式以不同的方式工作

使用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:

答案 2 :(得分:3)

您可以将我的新库用于电报的机器人api! https://github.com/tekook/TelegramLibrary

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

玩得开心!

答案 3 :(得分:3)

我建议初学者以这种方式开始:

  1. 在电报应用中搜索 BotFather

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

  3. 他会给你一个令牌,比如123456789:ABCDefGHIJKLmnopQRstUVwXYz

  4. 打开浏览器窗口,在地址栏中输入以下格式:https://api.telegram.org/bot<token>/getMe
    例如,使用上面的假令牌:https://api.telegram.org/bot123456789:ABCDefGHIJKLmnopQRstUVwXYz/getMe
    它应该以JSON格式返回您的机器人信息。这表明访问Bot API只不过是发出HTTP请求。

  5. 在电报应用中搜索您的机器人。发送消息。

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

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

  8. 最后,即使在图书馆的帮助下,我也鼓励您阅读基础 Bot API documentations 。了解它可以帮助您充分利用它。

    祝你好运。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我对Telegram API也很陌生,但你可以开始访问这个URL,你应该用你自己的令牌替换(令牌)买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。

答案 6 :(得分:0)

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

使用set_time_limit(0);让它永远持续下去。但是请注意,任何无限时间循环都有点危险; cpu hogs或内存泄漏等副作用会在你的服务器上吃掉。这就是为什么许多ISP不允许这种设置。