用PHP打造Telegram机器人:从零到第一次打招呼
\n\n当谈到为Telegram创建机器人时,首先想到的往往是Python。这很合理:Python有优雅的库python-telegram-bot、大量教程和庞大的社区。但如果你的主要技术栈是PHP呢?或者你想快速搭建一个简单的通知机器人,而不想为Python单独部署一个服务器?
好消息是:Telegram Bot API并不绑定于特定语言。它只是一个普通的HTTP接口,PHP处理起来毫不逊色。在本文中,我们将从零开始讲解如何用PHP创建Telegram机器人:从在BotFather注册,到能够响应命令、发送消息和处理回调请求的完整机器人。所有内容都配有真实代码示例,没有废话。
\n\n为什么用PHP开发Telegram机器人完全可行?
\n\n许多开发者对用PHP开发机器人持怀疑态度。他们认为PHP只是“临时搭建网站”的语言,不适合真正的API开发。但实际上,PHP作为服务器端处理器表现出色:它简单、可预测,并且能在任何主机上运行。对于不需要超高性能的机器人(大多数机器人正是如此),PHP是理想的选择。
\n\n此外,如果你已经有一个PHP网站,你可以将机器人部署在同一个主机上。无需额外的worker、守护进程或复杂配置。只需一个bot.php文件,挂在webhook上处理来自Telegram的请求即可。
开始前需要准备什么
\n\n- \n
- 支持PHP 7.4+的主机(任何主机都可以,即使是最便宜的共享主机)。 \n
- HTTPS访问——Telegram要求webhook通过安全协议运行。可以使用Let's Encrypt。 \n
- Telegram账号——显而易见,但没有它可不行。 \n
- PHP基础知识——了解函数、数组和cURL的工作原理即可。 \n
如果这些都准备好了,我们就开始吧。
\n\n第一步:在BotFather注册机器人
\n\n在Telegram中启动与@BotFather的对话——他是机器人的“总负责人”。发送命令:
\n\n/newbot\n\n系统会要求你输入机器人名称(将显示在联系人中)和用户名(必须以bot结尾)。之后你将获得一个令牌,格式如下:
1234567890:ABCdefGhIJKlmNoPQRsTUVwXYZ\n\n这是访问你机器人的密钥。不要告诉任何人——任何知道令牌的人都可以控制你的机器人。
\n\n我还建议立即使用/setuserpic和/setdescription命令设置头像和描述。这不是必须的,但能让机器人更友好。
第二步:选择获取更新的方式
\n\nTelegram Bot API提供两种方式:
\n\n- \n
- 轮询(long polling)——你不断向Telegram服务器询问“有新消息吗?”。这种方式可行,但需要脚本持续运行(例如通过cron)。 \n
- Webhook——当有新消息时,Telegram会主动向你的服务器发送POST请求。这种方式更方便、更快速。 \n
我们将使用webhook。首先,请确保你的服务器可以通过HTTPS从互联网访问。如果你没有SSL证书,可以使用Cloudflare(提供免费SSL)或花很少的钱购买证书。
\n\n设置webhook
\n\n向以下URL发送GET请求(可以直接在浏览器中打开):
\n\nhttps://api.telegram.org/bot<令牌>/setWebhook?url=https://你的网站/bot.php\n\n将<令牌>替换为你的真实令牌,将https://你的网站/bot.php替换为你的脚本实际路径。你应该会收到如下JSON响应:
{"ok": true, "result": true, "description": "Webhook was set"}