Home » Tekno » Membuat Bot Telegram untuk Auto Posting Laporan ke Group

Membuat Bot Telegram untuk Auto Posting Laporan ke Group

Membuat bot Telegram untuk Laporan

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:

  1. Bot Telegram
  2. Group Telegram
  3. Web Server
  4. Framework PHP CodeIgniter
  5. 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
.

Add Bot Telegram 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:

  1. id
  2. tanggal
  3. nama
  4. 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:

  1. views_laporan_harian
  2. 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 &#x2639;&#xfe0f;', '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/

Bot Telegram Laporan ke Group


Kita akan coba input Nama: dicoffeean dan Jumlah Penjualan: 21.

Hasilnya yaitu seperti berikut ini.

Hasil input Laporan CodeIgniter

Sekarang klik tombol “Posting ke Group”, jika berjalan lancar seharusnya muncul popup SweetAlert.

Swal2 kirim pesan ke Group oleh Bot Telegram


Jika sukses, tampilan SweetAlert akan berubah menjadi seperti di bawah ini.

Swal2 Sukses: Pesan terkirim ke group Telegram


Sekarang lihat di group, apakah ada pesan dari bot telegram?

Membuat Bot Telegram Laporan ke Group

Pesan berhasil terkirim otomatis ke group yang dituju, dan jangan lupa cek di database-nya apakah sudah terinput seperti ini?

Bot Telegram PHP MySQL


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!

43 Komentar

      1. bang kalau buat bot autopost ke chanel tuh gimana ya? jadi semua pengguna yang kirim chat ke bot langsung kekirim ke chanel gtu

        1. Wah menarik sekali jadi ingin blajar mencoba bikin autoposting tapi msih blm bgitu paham.hehe mohon di maklum.luar biasa membantu sekali.

          1. 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

            1. 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

            2. 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

            3. 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

            4. Mohon Pencerahannya,, knp pd saat ikutin langkah getUpdates diatas tidak muncul apa2, dan hnya muncul begini..

              {
              “ok”: true,
              “result”: [

              ]
              }

              1. 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 nya

            5. bang masalhanya dmn yah kalau yang muncul ini
              .fail(function(){
              swal(‘Oops…’, ‘Ada kesalahan ☹️’, ‘error’);
              });

            6. bang,berhasil…kalau untuk kirim seluruh data di tabel apa bisa menggunakan input text dalam form atau ada allternatif lain bang?trimakasih..

            7. daffa fadhil musyafa A.K.A Warcin

              Bang kalo sebaliknya ada tutorialnya nya gk. jadi hasil outputnya yang di web inputnya di telegram.

                1. kalo di cpanel gmna ka, langsung live web hosting ga localhost? karena ga ada codeigniter di cpanel.
                  makasih ka

                2. 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

                3. 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

                  1. 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

                    1. ilmu yang bermanfaat 🙂
                      di tunggu yah mas cara langsung mengirim ke telegram tanpa perlu ada tombol posting ke grup lagi.

                  2. 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

Tinggalkan Komentar

Field bertanda * wajib diisi

− 1 = 4