📜  如何在 php 中的电报中创建机器人(1)

📅  最后修改于: 2023-12-03 15:38:22.828000             🧑  作者: Mango

如何在 PHP 中创建电报机器人

在本文中,我们将介绍如何使用 PHP 编写电报机器人。我们将使用 Bot API 并使用 TelegramBotPHP 库来创建我们的机器人。在编写此代码之前,请确保您具有以下内容:

  • 电报帐户
  • PHP
  • 一个电报 bot

让我们开始吧!

步骤 1 - 初始化电报机器人

首先,我们需要通过访问 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。

步骤 2 - 处理来自电报服务器的请求

现在,我们需要处理来自电报服务器的请求。当一个用户与我们的机器人交互时,电报服务器将 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!'。

步骤 3 - 运行

现在,我们已经创建了一个电报机器人,我们需要将我们的代码部署到可访问的 URL,以接收来自电报服务器的请求。

电报BotAPI要求您的站点使用 HTTPS。由于我们可以使用 ngrok 来公开本地站点并从电报服务器接收请求,因此在本地仍然可以测试机器人。

请运行以下命令:

php -S localhost:9090

这将启动本地服务器并将其绑定到端口 9090。现在,您可以将 BOT_CALLBACK_URL 更改为 http://localhost:9090

步骤 4 - 测试

现在,我们已经完成了在 PHP 中创建电报机器人的过程,您可以向该机器人发送消息并查看它是否回复。

如果一切正常,您应该看到 Hello, World!

结论

在这个例子中,我们学习了如何使用 PHP 和 TelegramBotPHP 库来创建电报机器人。我们已经在电报服务器上设置了一个回调 URL,以便该服务器发送 POST 请求并向我们的机器人提供更新。我们还演示了如何处理这些请求,并回复消息。

这只是一个简单的例子,您可以使用更多的 TelegramBotPHP 库中提供的功能来创建功能更强大的电报机器人。