Chapter 2: Membuat bot Telegram untuk auto posting laporan ke group.
Tulisan ini merupakan lanjutan dari tulisan sebelumnya mengenai dasar-dasar bot Telegram dan cara membuatnya.
Bagi yang belum membacanya silahkan ikuti tautan berikut ini :
[Chapter 1: Cara Membuat Bot Telegram dari Dasar]
Sebelum melanjutkan, berikut ini daftar apa saja yang saya gunakan dalam panduan ini:
- Bot Telegram
- Group Telegram
- Web Server
- Framework PHP CodeIgniter
- Database MySQL/ MariaDB
Penjelasan singkatnya yaitu sebagai berikut.
1) Bot Telegram
Bot Telegram disini akan digunakan sebagai asisten alias si pelapor yang bertugas menyampaikan laporan ke Group. Inilah yang dimaksud: (auto posting).
2) Group Telegram
Group Telegram ini digunakan khusus untuk pelaporan, maksudnya semua laporan rutin akan kita posting ke group ini.
3) Web Server
Karena aplikasi yang akan dibangun berbasis web maka kita memerlukan web server untuk menjalankannya. Bisa apache
ataupun NGINX
jika dijalankan secara lokal. Jika menggunakan hostingan ya lebih bagus.
4) Framework PHP: CodeIgniter
Untuk memudahkan pekerjaan kita gunakan saja framework CodeIgniter, silahkan download di situs resminya : CodeIgniter.
5) Database MySQL / MariaDB
Karena menggunakan PHP, maka kita pilih database ini untuk menyimpan data-data laporan yang akan kita input pada form yang akan kita buat.
Memasukkan Bot Telegram ke Group
Saya anggap anda sudah mempunyai bot Telegram karena ketika anda membaca panduan ini, seharusnya anda sudah paham dasar-dasar bot Telegram yang pernah saya jelaskan pada panduan sebelumnya.
Untuk memasukkan bot telegram ke group, caranya yaitu klik detil informasi kontak bot Telegram dan pilih opsi Add to Group
.
Setelah memasukkan bot Telegram ke group, langkah selanjutnya yaitu mengetahui chat_id
group dengan menggunakan metode: getUpdates
.
Silahkan copy paste alamat berikut dan sesuaikan bot TOKEN-nya:
https://api.telegram.org/bot12345678:ABCDEFGHIJKLMnoPQRS-tUwXYZ/getUpdates
Jika sudah benar, maka hasilnya akan seperti ini:
{"ok":true,"result":[{"update_id":670679264,"message":{"message_id":1004,"from":{"id":87654321,"is_bot":false,"first_name":"Diko","last_name":"Pian","username":"dikopian","language_code":"en"},"chat":{"id":-1001059123456,"title":"TEST BOTS","type":"supergroup"},"date":1564826072,"new_chat_participant":{"id":1234567890,"is_bot":true,"first_name":"dicoffeean \u2615","username":"dicoffeeanbot"}]}}]}
Dari contoh di atas, sekarang kita sudah dapat ID Group yang dibutuhkan yaitu: -1001059123456 dengan nama group: TEST BOTS.
Sampai disini, persiapan awal untuk membuat bot telegram laporan sudah selesai, waktunya kita main di backend atau aplikasinya.
Membuat Database MySQL untuk Pelaporan
Buat database baru dengan nama : laporan_bot
atau apapun bebas terserah anda.
Lalu copy paste script tabel SQL laporan_harian
berikut ini.
-- Host: localhost
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `laporan_bot`
--
-- --------------------------------------------------------
--
-- Table structure for table `laporan_harian`
--
CREATE TABLE `laporan_harian` (
`id` int(5) NOT NULL,
`tanggal` varchar(30) NOT NULL,
`nama` varchar(20) NOT NULL,
`penjualan` int(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `laporan_harian`
--
ALTER TABLE `laporan_harian`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `laporan_harian`
--
ALTER TABLE `laporan_harian`
MODIFY `id` int(5) NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Skrip di atas akan membentuk tabel laporan_harian dengan 4 kolom antara lain:
- id
- tanggal
- nama
- penjualan
It’s time to coding . . .
Membuat Form Input untuk Pelaporan
Untuk contoh mengenai form bot telegram sebenarnya sudah ada yang membahasnya disini: Membuat form untuk mengirim pesan dengan Telegram bots.
Kali ini kita akan mengembangkannya dengan menggunakan framework CodeIgniter.
Untuk setup awal CodeIgniter saya tidak akan membahasnya disini, silahkan cari artikel terkait atau cukup ikuti dokumentasi pada situs resminya.
Membuat Controller dan Views CodeIgniter
Buat file Controller dengan nama Report.php
, lalu salin code di bawah ini.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Report extends CI_Controller {
function __construct(){
parent::__construct();
}
function index()
{
$this->load->view('views_laporan_harian');
}
function submit_report(){
$tanggal = date("Y-m-d H:i:s");
$nama = $this->input->post('nama');
$penjualan = $this->input->post('sales');
$report_data = array(
'tanggal' => $tanggal,
'nama' => $nama,
'penjualan' => $penjualan
);
$this->db->insert('laporan_harian', $report_data);
$this->load->view('views_laporan_harian_result');
}
}
Di dalam Controller Report di atas, bisa kita lihat ada 2 (dua) file views yaitu:
views_laporan_harian
views_laporan_harian_result
Sekarang, saatnya kita buat ke-dua file tersebut.
Buat file pada folder : application/views/views_laporan_harian.php
dan salin skrip berikut.
<div class="container">
<div class="small text-muted">Home » Report</div>
<hr />
<div class="col-md-6">
<h4>Input Laporan Harian</h4>
<form action="./submit_report" method="POST">
<div class="form-group">
<label for="nama">Nama:</label>
<input id="nama" class="form-control" name="nama" required="" type="nama" placeholder="Masukkan nama anda . . ." />
</div>
<div class="form-group">
<label for="sales">Jumlah Penjualan:</label>
<input id="sales" class="form-control" name="sales" required="" type="number" placeholder="Jumlah penjualan . . ." />
</div>
<div class="form-group form-check"> </div>
<button class="btn btn-primary" type="submit">Input</button>
</form>
</div>
</div>
Satu lagi application/views/views_laporan_harian_result.php
:
<div class="container">
<br />
<div class="small text-muted">Home » Results</div>
<hr />
<div class="col-md-12">
<h5>Hasil Input Laporan Harian</h5>
<div class="panel panel-body">
Hi, data Anda berhasil diinput!<br /><br /><form id="telegramForm" method="POST">
<input id="telegram_id" class="form-control" name="chat_id" type="hidden" value="-1001059123456" />
<input class="form-control" name="text" type="hidden" value='Waktu : <?php echo date("Y-m-d H:i:s");?> <?php echo "\n";?>Nama : * <?php echo $this->input->post('nama');?> <?php echo "\n";?>Jumlah Penjualan : *<?php echo $this->input->post('sales');?> <?php echo "\n\n\n*>>>* _Laporan via bot Telegram_ *<<<*";?> '/>
<br />
<button id="sendToGroup" class="btn btn-primary" type="submit">Posting ke Group</button>
</form>
</div>
</div>
</div>
<script>
$(document).on('click', '#sendToGroup', function(e){
SwalTelegram();
e.preventDefault();
});
function SwalTelegram(){
if ($("#telegram_id").val()) {
swal({
title: 'Posting ke group?',
text: "Pastikan Laporan anda sudah benar",
type: 'question',
showCancelButton: true,
confirmButtonColor: '#3FC3EE',
cancelButtonColor: '#E91E63',
confirmButtonText: 'Ya!',
showLoaderOnConfirm: true,
preConfirm: function() {
return new Promise(function(resolve) {
$.ajax({
url: 'https://api.telegram.org/bot12345678:ABCDEFGHIJKLMnoPQRS-tUwXYZ/sendMessage?parse_mode=Markdown',
type: 'POST',
data: $('#telegramForm').serialize(),
dataType: 'html'
})
.done(function(response){
swal({
title: "Sukses!",
html: "Silahkan laporan berhasil dikirim",
type: "success",
allowOutsideClick: false,
timer:5000,
showConfirmButton: false,
animation: false,
customClass: 'animated jackInTheBox',
})
})
.fail(function(){
swal('Oops...', 'Ada kesalahan ☹️', 'error');
});
});
},
allowOutsideClick: false
});
}
else {
swal({
title: "Warning!",
html: "Ooops ada kesalahan system!",
type: "warning",
allowOutsideClick: false,
timer:3000,
showConfirmButton: false
});
}
}
</script>
Keterangan [PENTING] :
- Perhatikan
<input name='chat_id'>
karena itu merupakan Chat ID Group yang tadi kita bahas di atas. - Jangan lupa ganti dengan TOKEN bot anda pada fungsi javascript
SwalTelegram()
.
[FINAL] Testing Bot Telegram Auto Posting ke Group
Jika tidak ada kesalahan, waktunya kita uji coba alias testing.
Buka alamat : https://localhost/Codeigniter/report/
atau https://localhost/Codeigniter/index.php/report/
Kita akan coba input Nama: dicoffeean dan Jumlah Penjualan: 21.
Hasilnya yaitu seperti berikut ini.
Sekarang klik tombol “Posting ke Group”, jika berjalan lancar seharusnya muncul popup SweetAlert.
Jika sukses, tampilan SweetAlert akan berubah menjadi seperti di bawah ini.
Sekarang lihat di group, apakah ada pesan dari bot telegram?
Pesan berhasil terkirim otomatis ke group yang dituju, dan jangan lupa cek di database-nya apakah sudah terinput seperti ini?
Kode dan fungsi PHP di atas hanyalah basic function saja. Untuk pengembangan lebih lanjut, silahkan disesuaikan dengan kebutuhan anda masing-masing.
Jika ada saran atau pertanyaan lainnya, silahkan diskusikan pada kolom komentar yang telah disediakan.
Baca juga :
Mau test Bot Telegram Laporan secara Live? Klik disini : Admin Dashboard Bot Telegram. Web tersebut juga menerima Jasa Pembuatan Bot Telegram bagi yang ingin membuat Bot Telegram tanpa ribet.
Yang mau nonton versi videonya silahkan :
Jangan lupa Subscribe Channelnya ya, masukan-masukan yang ada di kolom komentar sedang admin garap versi videonya. Yuk jangan ketinggalan!
Mantullll. Informatif dan sangat membantu.
Terima kasih
Sama-sama om, makasih udah berkunjung
bang kalau buat bot autopost ke chanel tuh gimana ya? jadi semua pengguna yang kirim chat ke bot langsung kekirim ke chanel gtu
Ka boleh tanya ngga kalau untuk ngirim ke banyak akun telegram dari bot tersebut bagaimana?
Bisa pake perintah
for
atau dibikinarray
listchat_id
nyamantap jiwa mempesona.
ilmu yang bermanfaat, semoga berkah
Amin, terima kasih Kang!
Wah menarik sekali jadi ingin blajar mencoba bikin autoposting tapi msih blm bgitu paham.hehe mohon di maklum.luar biasa membantu sekali.
Sama-sama gan, senang bisa membantu
Saya masih pemula, saya kurang paham kalo cuma baca, bisa bikinin tutorial di yt ngga bang? Kalo di buatin ya Alhamdulillah, ngga ya udh, saya berusaha mengerti dan terus belajar
insyaAllah nanti sy buatkan jika ada waktu dan kesempatannya. Trims
Sudah tersedia di YouTube DICOFFEEAN CHANNEL
Jangan lupa di subscribe juga ya, trims
kereen x bang
Keren gan konek ke dB , Bahas bikin fungsi Form di dalam bot tele dong gan, jadi ketika kita bikin button Lapor , keyboardnya on ketika kita ketik Laporan hari ini send otomatis ke grup/chatid cuman web ini sama sebelah aja yg ngulas bot tele dengan bahasa yang aman buat newbie Kya saya hehe semangat terus
Makasih gan, next time kalo ada waktu buat nulis lagi Insha Allah saya bahas
Mau tanya klo bikin bot yg autoposting buat beriklan ke grup orang secara otomatis gmn caranya.atau klo beli jadi token nya brapa.mohon infonya
Nanti kalo udah jadi 100%, saya publish di dicoffeean, tks
knp pas saya buat kok ga bisa ya ? form nya udah bisa keisi tapi ga bisa masuk database sama ke kirim ke telegram
mohon bantuannya
Silahkan di teliti lagi step by stepnya, untuk postingan ini sebelum saya publish tentunya sudah saya test dan 100% worked, Tks
Mohon Pencerahannya,, knp pd saat ikutin langkah getUpdates diatas tidak muncul apa2, dan hnya muncul begini..
{
“ok”: true,
“result”: [
]
}
Kalo gak melakukan aktivitas apa-apa memang seperti itu, coba botnya dimasukkan terlebih dahulu ke Group, atau coba kirimi pesan botnya, lalu
getUpdates
lagi secara berkala, harusnya ada update nyabang masalhanya dmn yah kalau yang muncul ini
.fail(function(){
swal(‘Oops…’, ‘Ada kesalahan ☹️’, ‘error’);
});
Cek di console nya pak . klo ada keterangan Unauthorized , revoke bot tokennya ganti yang baru
Om saya ijin bikin tutorial Video dari materi Om yang bagus ini ya
Silahkan, jgn lupa sertakan link sumber ya om
bang,berhasil…kalau untuk kirim seluruh data di tabel apa bisa menggunakan input text dalam form atau ada allternatif lain bang?trimakasih..
Bisa om, mau ditambahin input text juga tentu bisa
Bang kalo sebaliknya ada tutorialnya nya gk. jadi hasil outputnya yang di web inputnya di telegram.
Kalo ada waktu, insya Allah nanti saya buat tulisannya ya om
nah bagian ini, saya tunggu bang
kalo di cpanel gmna ka, langsung live web hosting ga localhost? karena ga ada codeigniter di cpanel.
makasih ka
Sebenernya tinggal di upload aja kok sama, next time saya buatkan video nya ya om. Yuk di subscribe 🙂
Bisa test Bot nya ini : wadagizigDEV
bang, kalo proses kirim ke telegramnya otomatis gimana ya ..
jadi misal kalo ada data baru yang berhasil di input/disimpan ke database, maka otomatis mengirimkan notif ke telegram tanpa harus ada / klik tombol posting ke group
Bisa pake schedjuler / crontab atau membuat suatu fungsi yang bisa deteksi perubahan database (CRUD) lalu send notif
hmm terlalu jauh gan …
yg di atas itu kan setelah form diisi dan klik input .. muncul halaman Hasil Input laporan harian trus dibawahnya ada tombol Posting ke Group … bah kalo tombol tersebut di klik baru proses send ke group
nah kalo maksud saya, begitu diisi dan klik input, maka selain menyimpan ke database langsung juga mengirim ke telegram tanpa perlu ada tombol posting ke grup lagi ..
tks
Owh maksudnya langsung 1 form aja? ya kalo itu lebih gampang gan, tinggal disesuaikan aja di formnya langsung ditambahkan ID group tujuan. Jadi ada 2 tugas yakni: POST insert to DB & kirim notif. Kalo ada waktu nanti sy tambahkan di postingannya. Trims
ilmu yang bermanfaat 🙂
di tunggu yah mas cara langsung mengirim ke telegram tanpa perlu ada tombol posting ke grup lagi.
Assalamu’alaykum.. sebelumnya terimakasii ni atas programnya mas. Ane mau tanya.. maksud dari “ganti dengan TOKEN bot anda pada fungsi javascript SwalTelegram().” gimana / ada di line berapa ya? maaf ane gagal paham
Silahkan lihat versi videonya ya gan biar lebih jelas
min anda membantu skripsi saya
Wah Alhamdulillah bermanfaat ya buat referensi
bang, kalo prosesnya dibalik, jadi dari telegram ke codeigniter apakah pernah buat tutorialnya ?