📅  最后修改于: 2023-12-03 15:38:22.828000             🧑  作者: Mango
在本文中,我们将介绍如何使用 PHP 编写电报机器人。我们将使用 Bot API 并使用 TelegramBotPHP 库来创建我们的机器人。在编写此代码之前,请确保您具有以下内容:
让我们开始吧!
首先,我们需要通过访问 BotFather 并按照指示创建新的电报 bot。在创建 bot 后,BotFather 将提供 token,您需要将此 token 保存在我们代码的某个地方,以便稍后使用。
接下来,我们需要为我们的机器人设置回调 URL。这是一个用于接收和处理来自电报服务器的消息和其他事件的 URL。我们将使用 ngrok 来公开 localhost 上的网站,并为我们的机器人设置回调 URL。为此,请运行以下命令:
ngrok http 80
这将公开我们的网站并为我们提供 URL。请注意此 URL,因为我们稍后将需要将其提供给电报机器人设置。
让我们开始编写代码:
<?php
require 'vendor/autoload.php';
use Telegram\Bot\Api;
$token = getenv('BOT_TOKEN');
$bot = new Api($token);
$bot->setWebhook([
'url' => getenv('BOT_CALLBACK_URL'),
]);
首先,我们需要加载所需的依赖项。使用 composer.json
和以下命令安装依赖项:
composer install
在这里,$token
是从 BotFather 获取的 token,而 $bot
是我们正在创建的电报机器人的实例。接下来,我们为我们的机器人设置了回调 URL。在此代码中,我们可以将回调 URL 设置为环境变量 BOT_CALLBACK_URL
,以便我们轻松更改回调 URL。
现在,我们需要处理来自电报服务器的请求。当一个用户与我们的机器人交互时,电报服务器将 POST 请求发送到我们的回调 URL,其中将包含要执行的操作的详细信息。让我们开始编写代码来处理这些请求。
<?php
require 'vendor/autoload.php';
use Telegram\Bot\Api;
use Telegram\Bot\Objects\Update;
$token = getenv('BOT_TOKEN');
$bot = new Api($token);
$update = new Update($bot->getWebhookUpdates());
if ($update->getMessage()) {
$message = $update->getMessage();
// TODO: 测试消息内容
$bot->sendMessage([
'chat_id' => $message->getChat()->getId(),
'text' => 'Hello, World!',
]);
}
我们已经使用 TelegramBotPHP
库中提供的 Update
类获取了来自电报服务器的更新。然后,我们检查更新的类型,如果消息类型包含在更新中,则我们处理消息并向用户回复消息。在这里,我们只是回复 'Hello, World!'。
现在,我们已经创建了一个电报机器人,我们需要将我们的代码部署到可访问的 URL,以接收来自电报服务器的请求。
电报BotAPI要求您的站点使用 HTTPS。由于我们可以使用 ngrok 来公开本地站点并从电报服务器接收请求,因此在本地仍然可以测试机器人。
请运行以下命令:
php -S localhost:9090
这将启动本地服务器并将其绑定到端口 9090
。现在,您可以将 BOT_CALLBACK_URL
更改为 http://localhost:9090
。
现在,我们已经完成了在 PHP 中创建电报机器人的过程,您可以向该机器人发送消息并查看它是否回复。
如果一切正常,您应该看到 Hello, World!
。
在这个例子中,我们学习了如何使用 PHP 和 TelegramBotPHP 库来创建电报机器人。我们已经在电报服务器上设置了一个回调 URL,以便该服务器发送 POST 请求并向我们的机器人提供更新。我们还演示了如何处理这些请求,并回复消息。
这只是一个简单的例子,您可以使用更多的 TelegramBotPHP 库中提供的功能来创建功能更强大的电报机器人。