Tutorial Bot Telegram : Menyimpan Data Ke Database MySQL Menggunakan PHP

Tutorial Bot Telegram : Menyimpan Data Ke Database MySQL Menggunakan PHP

Pada tutorial sebelumnya, kita telah berhasil membuat Bot Telegram sederhana menggunakan PHP. Namun masih ada kekurangan pada bot tersebut yakni tidak bisa menyimpan data ke dalam database MySQL. 

Baca Juga:

Tutorial Bot Telegram : Instalasi dan Pembuatan Bot Telegram Sederhana Menggunakan PHP dan Apache

Karena sifatnya hanya untuk latihan, di tutorial ini juga kita tidak perlu membutuhkan hosting dan domain, akan tetapi kita hanya membutuhkan proxy server yang gratis untuk menghubungkan localhost ke internet dengan tunnel yang aman yaitu ngrok.

Tidak berlama-lama dan berbasa-basi, langsung saja kita buat Bot Telegram Input Data.

Membuat Database

Buat database dengan nama alvabot, kemudian buat tabel dengan nama input_data dengan field sebagai berikut :

CREATE TABLE IF NOT EXISTS 'input_data' (
  'input_id' int NOT NULL AUTO_INCREMENT,
  'chat_id' int NOT NULL,
  'message' text NOT NULL,
  'message_id' text NOT NULL,
  'date' char(50) NOT NULL DEFAULT 'CURRENT_TIMESTAMP',
  'user' char(50) NOT NULL DEFAULT 'CURRENT_TIMESTAMP',
  PRIMARY KEY (`input_id`)
)

Memulai Coding

Bot & Token Bot Telegram yang akan kita gunakan kali ini masih menggunakan Bot dari tutorial sebelumnya, kita lanjut untuk membuat program untuk bot kita. Disini kita hanya merubah script file index.php nya saja menjadi seperti berikut :

Berikut ini adalah isi untuk file index.php

<?php
require_once("./telebot.php");
// konfigurasi koneksi ke database MySQL
$servername = "localhost";
$username = "root";
$password = "alvapixel123";
$dbname = "alvabot";

// membuat koneksi ke database MySQL
$conn = new mysqli($servername, $username, $password, $dbname);

// cek koneksi
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

// mengatur request ke bot API Telegram
$request = file_get_contents("php://input");
$update = json_decode($request, true);

// cek pesan dimulai dengan "/input"
if (strpos($update["message"]["text"], "/input") === 0) {
// mengambil data dari pesan
$cek = trim(substr($update["message"]["text"], 6));
// mengambil kata setelah "/input" dan menghapus spasi di awal dan akhir pesan
$chat_id = $update["message"]["chat"]["id"];
$message_id = $update["message"]["message_id"];
$date = $update["message"]["date"];
$username = $update["message"]["chat"]["first_name"];

// memasukkan data ke database MySQL
$sql = "insert into input_data (chat_id, message, message_id, date, user)
VALUES ('$chat_id', '$cek', '$message_id', '$date', '$username')";
if ($conn->query($sql) === TRUE) {
echo "Data berhasil disimpan";
} else {
echo "Error: " . $sql . "
" . $conn->error;
}

// mengirim pesan balasan ke pengguna
$bot->command("input", function ($ctx) {
$ctx->replyWithText("Terimakasih kak ". $ctx->from->first_name.", pesan kamu telah tersimpan." );
});
$bot->run();
}

Menjalankan Command Bot

Lalu langkah terakhir, kita jalankan bot Telegram.

Menjalankan ngrok :
jalankan cmd, ketikkan perintah
ngrok http 3060

Menjalankan local hosting :
jalankan cmd, masuk ke dalam folder project kita, ketikkan perintah
php -S localhost:3060

Menjalankan bot :
buka browser, kemudian ketikan url dengan format https://api.telegram.org/botXXXX/setWebhook?url=YYYY
- Ganti XXXX dengan bot telegram kamu
- Ganti YYYY dengan url https yang diberikan oleh ngrok

Menjalankan Bot Telegram

Setelah itu kita coba kirimkan command ke bot kita. Jika semuanya benar maka bot kita dapat merespon command /input, contoh : /input web alvapixel.com penuh dengan informasi tentang dunia pemrograman.

 # Tambahan

1. Pada script di atas, kita menggunakan ekstensi mysqli sebagai koneksi ke database mysql. Lalu, bagaimana jika kita menggunakan ekstensi lain misalnya PDO. Caranya cukup mengganti bagian koneksi :
//$conn = new mysqli($servername, $username, $password, $dbname);
Menjadi :
try{
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,$password);
}
catch (PDOException $e) {
print "Connection failed: " . $e->getMessage() . "<br/>";
die();
}

Dan juga pada bagian eksekusi query :
if ($conn->query($sql) === TRUE) {
echo "Data berhasil di simpan";
} else {
echo "Error: " . $sql . "
" . $conn->error;
}
Menjadi :
if ($conn->query($sql) === TRUE) {
echo "Data berhasil di simpan";
} else {
echo "Error: " . $sql . "
" . 'Gagal';
}

2. Yang kedua, dapat diperhatikan pada bagian tanggal. Tanggal yang tersimpan di database sulit untuk di baca, maka kita ganti formannya agar dapat dengan mudah kita kenal. Maka, rubah pada bagian :
$date = $update["message"]["date"];
Menjadi :
$dates = $update["message"]["date"];
$date = date("Y-m-d H:i:s",$dates);

Berikutnya kita akan membuat CRUD data melalui bot telegram yang tentu dengan menggunakan PHP dan juga Database MySQL, stay tune yaa..