您可以使用这个基本示例来开始。我建议使用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']);
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 API是通过HTTP GET/POST实现的,详情请参考官方帮助文档。
如果有新消息
当使用WebHook(并且已经配置好),您的bot将触发来自telegram服务器的HTTP POST请求到您配置的url,在您自己的服务器上解析由PHP脚本提供的新消息。
在您的PHP脚本中,解析通过HTTP POST传输的新消息,然后使用HTTP POST将消息发送回telegram服务器。
因此,仅在从telegram获取消息时存在差异,所有发送到telegram的响应均通过HTTP GET/POST进行,详情请参见官方API中的发出请求部分。
有些人在github上制作了一些非官方的PHP api:
在Telegram应用程序中搜索BotFather
向他发送/newbot命令。遵循他的说明。
他会给你一个token,类似于123456789:ABCDefGHIJKLmnopQRstUVwXYz
打开浏览器窗口,在地址栏中输入此类内容:https://api.telegram.org/bot<token>/getMe
例如,使用上面的虚假token: https://api.telegram.org/bot123456789:ABCDefGHIJKLmnopQRstUVwXYz/getMe
它应该以JSON格式返回您的机器人信息。这表明访问Bot API只是发出HTTP请求而已。
在Telegram应用程序中搜索您的机器人。向它发送一条消息。
在浏览器窗口中,输入:https://api.telegram.org/bot<token>/getUpdates
记得更换token。您应该看到刚才发送的消息。注意from
和chat
字段。那就是您。
然后,您可以尝试一些库。为了保持语言平衡,我建议使用我创建的Python框架telepot。该项目页面有很多文档和示例。
最后,即使在库的帮助下,我也鼓励您阅读底层的Bot API文档。理解它可以帮助您充分利用其功能。
祝你好运。
针对脚本无法运行超过30秒的问题:
使用set_time_limit(0);使其永久运行。但请注意,任何无限时间循环都有一定的危险性;像CPU占用率高或内存泄漏等副作用会影响您的服务器。这就是为什么许多ISP不允许此设置的原因。
我对 Telegram API 也很新,但你可以从访问此 URL 开始,其中应替换 (token) 为由 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的网站才能开始使用Telegram API。