วิธีสร้าง Telegram Notify Bot ด้วย PHP แบบง่ายๆ

·
15 พฤศจิกายน 2024
·
Web Development

Telegram เป็นหนึ่งในแพลตฟอร์มที่ได้รับความนิยมสำหรับการสื่อสารทั้งในรูปแบบส่วนตัวและกลุ่ม อีกทั้งยังมี API ที่เปิดให้นักพัฒนาสามารถสร้างบอทเพื่อส่งข้อความแจ้งเตือน หรือทำงานต่างๆ โดยอัตโนมัติได้ง่ายๆ ในบทความนี้ เราจะมาทำความเข้าใจและเรียนรู้การเขียน Telegram Notify Bot โดยใช้ PHP กัน

How To Create Telegram Notify Bot With Php

ทำไมต้องใช้ Telegram Notify Bot

  1. ความสะดวก: Telegram รองรับการแจ้งเตือนแบบเรียลไทม์ ซึ่งเหมาะสำหรับระบบที่ต้องการส่งข้อมูลสำคัญ เช่น การแจ้งเตือนสถานะการทำงานของเซิร์ฟเวอร์ การแจ้งเตือนธุรกรรม หรือการอัพเดทข้อมูลสำคัญอื่นๆ
  2. การพัฒนาและใช้งานง่าย: ด้วย Telegram API ที่มีเอกสารชัดเจน การพัฒนาบอทใน Telegram ทำได้อย่างรวดเร็วและไม่ซับซ้อน
  3. รองรับการปรับแต่ง: คุณสามารถปรับแต่งบอทให้ตอบสนองหรือแสดงข้อความในรูปแบบที่คุณต้องการได้ เช่น ข้อความพร้อมลิงก์, Markdown, หรือการส่งไฟล์

🛠️เตรียมความพร้อม

การสร้าง Telegram Notify Bot ต้องเริ่มต้นด้วยการตั้งค่าบอทและเตรียมข้อมูลเบื้องต้นก่อน

1.สร้าง Telegram Bot

  1. เปิด Telegram และค้นหา @BotFather หรือ เข้าผ่านลิ้งค์ https://telegram.me/BotFather (ตัวช่วยสร้างบอทใน Telegram)
  2. ใช้คำสั่ง /newbot เพื่อเริ่มต้นสร้างบอทใหม่
  3. BotFather จะขอให้คุณทำตามนี้
    • ตั้งชื่อบอท (เช่น MyNotifyBot)
    • ตั้งชื่อผู้ใช้ (username) ของบอท (ต้องลงท้ายด้วยคำว่า bot เช่น coderblitz_bot)
  4. หลังจากตั้งค่าเสร็จ BotFather จะส่ง Token ให้คุณ (เป็นรหัสที่ใช้เข้าถึง API)
Create Telegram Api
รูปขั้นตอนในการสร้าง Telegram Bot

2.สร้าง ChatBot และรับ Chat ID

ต่อมาหลังจากที่คุณได้สร้าง Token เรียบร้อยแล้ว ให้คุณคลิกลิ้งค์ตามรูปนี้

Create Chatbot Telegram
สร้าง ChatBot Telegram

📩 ใช้ URL ต่อไปนี้เพื่อดึงข้อมูล Chat ID

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates

Chat ID จะอยู่ในรูปแบบ JSON Response เช่น

{
  "ok": true,
  "result": [
    {
      "message": {
        "chat": {
          "id": 123467890, // นี้คือ Chat ID ที่ต้องนำไปใช้งาน
          "type": "private"
        }
      }
    }
  ]
}

การเขียนโค้ด PHP สำหรับส่งข้อความ

เมื่อเรามี Token และ Chat ID แล้ว ต่อไปคือการเขียนโค้ด PHP เพื่อส่งข้อความแจ้งเตือนเข้ามาใน Chat Telegram
โค้ดต่อไปนี้ใช้ cURL ในการเรียก API ของ Telegram

<?php

/**
 * ส่งข้อความไปยังแชทที่กำหนดใน Telegram โดยใช้ Telegram Bot API
 *
 * @param string $botToken รหัสบอทที่ได้รับจาก BotFather
 * @param string $chatId   ID ของแชทที่ผู้รับ (สามารถเป็น ID ของผู้ใช้หรือกลุ่ม)
 * @param string $message  ข้อความที่ต้องการส่ง
 *
 * @return string|false การตอบกลับจาก Telegram API ในรูปแบบ JSON หรือ false หากเกิดข้อผิดพลาด
 */
function sendTelegramMessage(string $botToken, string $chatId, string $message)
{
    $url = "https://api.telegram.org/bot$botToken/sendMessage";
    $postData = [
        'chat_id' => $chatId,
        'text' => $message
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

$botToken = 'YOUR_BOT_TOKEN';
$chatId = 'YOUR_CHAT_ID';
$message = 'Hello, this is a test message!';

$response = sendTelegramMessage($botToken, $chatId, $message);

if ($response) {
    echo "Message sent successfully!";
} else {
    echo "Failed to send message.";
}

Github: how-to-create-telegram-notify-bot-with-php/send-telegram-message.php

💻 การปรับแต่งข้อความในการส่งข้อมูล

Telegram API รองรับการส่งข้อความและไฟล์ในหลายรูปแบบ มาดูวิธีการปรับแต่งเพิ่มเติมได้เลย

ตัวอย่าง: การส่งข้อความ Markdown 📋

Telegram รองรับข้อความที่มีการจัดรูปแบบ เช่น ตัวหนา ตัวเอียง และลิงก์

$postData = [
    'chat_id' => $chatId,
    'text' => "*Bold Text* _Italic Text_ [Click Here](https://coderblitz.com)",
    'parse_mode' => 'Markdown'
];

Github: how-to-create-telegram-notify-bot-with-php/send-telegram-message-with-markdown.php

ตัวอย่าง: ส่งข้อความพร้อม HTML 📋

หากต้องการจัดข้อความด้วย HTML

$postData = [
    'chat_id' => $chatId,
    'text' => "<b>Bold Text</b> <i>Italic Text</i> <a href='https://coderblitz.com'>Click Here</a>",
    'parse_mode' => 'HTML'
];

Github: how-to-create-telegram-notify-bot-with-php/send-telegram-message-with-html.php

ตัวอย่าง: การส่งไฟล์หรือรูปภาพ 📷

Telegram API รองรับการส่งรูปภาพ ไฟล์ หรือเอกสารต่างๆ

<?php

/**
 * ส่งรูปภาพไปยัง Telegram chat ผ่าน Telegram Bot API
 *
 * ฟังก์ชันนี้จะใช้เพื่อส่งรูปภาพไปยัง chat ที่กำหนดโดยใช้ URL รูปภาพที่ต้องการส่ง
 *
 * @param string $botToken รหัส Token ของบอทที่ได้รับจาก BotFather
 * @param string $chatId   ID ของแชทที่จะส่งรูปภาพไป (สามารถเป็น ID ของผู้ใช้หรือกลุ่ม)
 * @param string $photoUrl URL ของรูปภาพที่ต้องการส่ง (สามารถใช้ URL ภายนอกหรือไฟล์ภายในเซิร์ฟเวอร์)
 *
 * @return string|false การตอบกลับจาก API Telegram ในรูปแบบ JSON หรือ `false` หากเกิดข้อผิดพลาด
 */
function sendTelegramPhoto(string $botToken, string $chatId, string $photoUrl)
{
    $url = "https://api.telegram.org/bot$botToken/sendPhoto";
    $postData = [
        'chat_id' => $chatId,
        'photo' => $photoUrl
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

$botToken = 'YOUR_BOT_TOKEN';
$chatId = 'YOUR_CHAT_ID';
$photoUrl = 'https://coderblitz.com/wp-content/uploads/2024/11/how-to-create-telegram-notify-bot-with-php.png';

$response = sendTelegramPhoto($botToken, $chatId, $photoUrl);

if ($response) {
    echo "Photo sent successfully!";
} else {
    echo "Failed to send photo.";
}

Github: how-to-create-telegram-notify-bot-with-php/send-telegram-photo.php

📢 สรุป

Telegram Notify Bot ช่วยให้ระบบของเพื่อนๆ มีการแจ้งเตือนที่สะดวก รวดเร็ว และสามารถปรับแต่งได้ตามความต้องการของเพื่อนๆ เลย บทความนี้ได้ครอบคลุมตั้งแต่การเริ่มต้นสร้างบอท การส่งข้อความแบบพื้นฐาน ไปจนถึงการปรับแต่งข้อความและการใช้งานจริง หวังว่าบทความนี้จะเป็นประโยชน์สำหรับการพัฒนาของเพื่อนๆ นะครับ