用PHP亲手打造Telegram机器人:新手完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

用PHP打造Telegram机器人:从零到第一次打招呼

\n\n

当谈到为Telegram创建机器人时,首先想到的往往是Python。这很合理:Python有优雅的库python-telegram-bot、大量教程和庞大的社区。但如果你的主要技术栈是PHP呢?或者你想快速搭建一个简单的通知机器人,而不想为Python单独部署一个服务器?

\n\n

好消息是: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\n
    \n
  • 支持PHP 7.4+的主机(任何主机都可以,即使是最便宜的共享主机)。
  • \n
  • HTTPS访问——Telegram要求webhook通过安全协议运行。可以使用Let's Encrypt。
  • \n
  • Telegram账号——显而易见,但没有它可不行。
  • \n
  • PHP基础知识——了解函数、数组和cURL的工作原理即可。
  • \n
\n\n

如果这些都准备好了,我们就开始吧。

\n\n

第一步:在BotFather注册机器人

\n\n

在Telegram中启动与@BotFather的对话——他是机器人的“总负责人”。发送命令:

\n\n
/newbot
\n\n

系统会要求你输入机器人名称(将显示在联系人中)和用户名(必须以bot结尾)。之后你将获得一个令牌,格式如下:

\n\n
1234567890:ABCdefGhIJKlmNoPQRsTUVwXYZ
\n\n

这是访问你机器人的密钥。不要告诉任何人——任何知道令牌的人都可以控制你的机器人。

\n\n

我还建议立即使用/setuserpic和/setdescription命令设置头像和描述。这不是必须的,但能让机器人更友好。

\n\n

第二步:选择获取更新的方式

\n\n

Telegram Bot API提供两种方式:

\n\n
    \n
  • 轮询(long polling)——你不断向Telegram服务器询问“有新消息吗?”。这种方式可行,但需要脚本持续运行(例如通过cron)。
  • \n
  • Webhook——当有新消息时,Telegram会主动向你的服务器发送POST请求。这种方式更方便、更快速。
  • \n
\n\n

我们将使用webhook。首先,请确保你的服务器可以通过HTTPS从互联网访问。如果你没有SSL证书,可以使用Cloudflare(提供免费SSL)或花很少的钱购买证书。

\n\n

设置webhook

\n\n

向以下URL发送GET请求(可以直接在浏览器中打开):

\n\n
https://api.telegram.org/bot<令牌>/setWebhook?url=https://你的网站/bot.php
\n\n

将<令牌>替换为你的真实令牌,将https://你的网站/bot.php替换为你的脚本实际路径。你应该会收到如下JSON响应:

\n\n
{"ok": true, "result": true, "description": "Webhook was set"}                

博客

书籍推荐