📜  php 向用户发送电报消息 - PHP (1)

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

PHP 向用户发送电报消息

电报是一种移动通讯应用程序,使用其中的 API,可以通过编程实现向用户发送消息,从而实现自动化的通知和交互。

在 PHP 中,我们可以使用 Telegram Bot API,通过向 Telegram 服务器发送请求,实现向用户发送消息。下面介绍如何使用 PHP 和 Telegram Bot API 来实现向用户发送电报消息。

步骤 1: 创建 Telegram Bot

首先需要创建一个 Telegram Bot,并获取到 bot 的 token。以创建一个新的 bot 为例,具体步骤如下:

  1. 打开 Telegram 客户端,搜索并打开 @BotFather;
  2. 向 @BotFather 发送 /start 命令,开始创建新的 bot;
  3. 发送 /newbot 命令,创建新的 bot,并输入 bot 的名称和用户名;
  4. 创建成功后,@BotFather 会返回 bot 的 token,需要记录下来。
步骤 2: 发送消息

通过以下代码,可以向指定用户发送一条电报消息:

<?php
// 定义请求 URL 和参数
$url = 'https://api.telegram.org/bot<Your Bot Token>/sendMessage';
$params = [
    'chat_id' => '1234567890', // 用户的 chat id
    'text' => 'Hello, World!' // 发送的文本内容
];

// 创建 HTTP 请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($params));
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 发送请求并获取结果
$response = curl_exec($ch);
curl_close($ch);

// 输出结果
echo $response;

其中,需要将 <Your Bot Token> 替换成之前获取到的 bot token,chat_id 替换成需要发送消息的用户的 chat id。可以在 Telegram 中查找 @username_to_id_bot,并将其邀请到群组中,通过发送 /id 命令获取 chat id。

如果发送成功,会返回以下结果:

{"ok":true,"result":{"message_id":1,"chat":{"id":1234567890,"type":"private"},"date":1623379856,"text":"Hello, World!"}}
步骤 3: 完善代码

上述代码还需要进行一些完善,比如:处理请求失败、编写异常处理程序、封装成函数、增加参数验证等。完整代码如下:

<?php
function sendMessage($botToken, $chatId, $text)
{
    // 参数验证
    if (empty($botToken)) {
        throw new InvalidArgumentException('Bot token is required.');
    }
    if (empty($chatId)) {
        throw new InvalidArgumentException('Chat id is required.');
    }

    // 定义请求 URL 和参数
    $url = 'https://api.telegram.org/bot' . $botToken . '/sendMessage';
    $params = [
        'chat_id' => $chatId,
        'text' => $text,
    ];

    // 创建 HTTP 请求
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, count($params));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // 发送请求并获取结果
    $response = curl_exec($ch);
    if ($response === false) {
        throw new RuntimeException('Failed to send message: ' . curl_error($ch));
    }
    $responseData = json_decode($response, true);
    if ($responseData['ok'] !== true) {
        throw new RuntimeException('Failed to send message: ' . $responseData['description']);
    }
    curl_close($ch);

    // 返回结果
    return $responseData['result'];
}

// 使用示例
try {
    sendMessage('<Your Bot Token>', '1234567890', 'Hello, World!');
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

这样,就可以在代码中调用 sendMessage() 函数,发送电报消息。如果发送成功,会返回 result 字段中的内容,否则会抛出 RuntimeException 异常。可以根据实际情况进行异常处理和日志记录等操作。

意义和建议

电报是一种非常方便的移动通讯应用程序,通过编程可以将其与其他系统集成,实现自动化的通知和交互。PHP 中使用 Telegram Bot API,可以轻松地向用户发送电报消息,可以用于各种场景,如报警系统、消息推送、机器人交互等。

建议在使用时,需要注意以下几点:

  1. 保护 bot token,不要泄露到公共的场合中;
  2. 关注电报 API 的变更,及时更新代码和升级版本;
  3. 避免滥用和频繁请求,以免被封禁和限制访问。

希望此文能够帮助 PHP 程序员学习和使用 Telegram Bot API 发送电报消息,也希望在使用时能够谨慎、安全地操作。