Selasa, 30 Januari 2024

Memprogram Bot Telegram dengan Lazarus Free Pascal

Hallo Pemirsa,

Saya akan berbagi sedikit pengetahuan tentang cara memprogram Bot Telegram menggunakan Bahasa Pemrograman Free Pascal dan Lazarus IDE. Cara ini menggunakan unit dan library murni bawaan Free Pascal dan Lazarus sehingga tidak perlu repot memasang komponen pihak ketiga atau perkakas tambahan yang lumayan merepotkan. 

Tauhidslab

Memprogram Telegram Bot atau Telebot sejatinya dapat dilakukan dengan bahasa pemrograman apa saja karena pertukaran data dilakukan melalui HTTP Request menggunakan data format Javascript Object Notation alias JSON. Alhasil, kita hanya memerlukan komponen HTTP Client untuk mengambil dan mengirimkan data ke server Telegram. Sebelum lebih jauh membahas cara memprogram Telebot dengan Bahasa Pemrograman Objek Pascal dan Lazarus, mari kita mulai dengan membuat sebuah Bot Telegram.  

1. Membuat Bot Telegram

Pastikan anda sudah memasang aplikasi Telegram di Smartphone. Buka aplikasi tersebut kemudian dalam kolom pencarian ketik kata kunci BotFather. Pada daftar tampilan yang muncul pilih yang bercentang biru seperti gambar di bawah ini.

Tauhidslab

Berikutnya ketik perintah /newbot kemudian balas dengan mengirimkan nama dan username bot. Pada contoh ini namanya adalah Free Pascal Bot dan usernamenya adalah freepascalbot. Perhatikan bahwa untuk pemilihan username pastikan mengandung kata bot di dalamnya dan disambung tanpa menggunakan spasi. Jika tidak ada kesalahan, bot telah berhasil dibuat dan BotFather akan membalas dengan Token yang digunakan untuk berkomunikasi dengan bot melalui layanan Application Programming Interface (API). Simpan token tersebut karena akan digunakan nantinya. Perhatikan gambar di bawah ini.

Tauhidslab

Terakhir, untuk memastikan apakah bot sudah tersedia, lakukan pengujian dengan cara mencari bot tersebut menggunakan kata kunci username bot di kolom pencarian aplikasi Telegram. Pastikan menggunakan kata kunci username bukan nama untuk mencegah ketidaksesuaian dalam hasil pencarian mengingat saat ini bot dengan nama yang mirip sangat banyak. Seperti gambar di bawah ini.

Tauhidslab

2. Memprogram Bot Telegram Menggunakan Lazarus Free Pascal

Saya akan memastikan bahwa memprogram Telegram Bot menggunakan Free Pascal sangatlah mudah karena karena semua unit dan komponen yang diperlukan telah tersedia. Seara umum, ada 2 library yang diperlukan, pertama untuk kebutuhan berkomunikasi melalui HTTP Request dan kedua untuk kebutuhan mengelola data dengan format JSON. 

Pada intinya, kemampuan untuk mengelola data format JSON adalah kunci utama dalam memprogram Telegram Bot. Saya telah membuat sebuah projek sederhana yang dapat anda unduh melalui link github ini. Projek sederhana tersebut memiliki kemampuan sbb:

a. Mengambil informasi bot dan menampilkannya dalam pesan dialog
b. Mengambil pesan masuk (inbox) kemudian menampilkannya ke dalam komponen ListBox
c. Mengirimkan pesan berdasarkan chat_id yang diperoleh dari pesan masuk (inbox). 

Sebagai gambaran, berikut saya contohkan bagaimana mengambil Informasi Bot (getMe) melalui Free Pascal dan Lazarus IDE. Pertama-tama pada uses projek anda tambahkan beberapa unit berikut:

fpjson, jsonparser, fphttpclient, opensslsockets, StdCtrls;

Selanjutnya deklarasikan beberapa variabel global sebagai berikut:

  rawData : ansistring;
  JsonPar : TJSONParser;
  jsonDoc : TJSONObject;
  TELEGRAM_BOT_URL : string;  

Adapun contoh kode yang saya gunakan untuk menampilkan Informasi Bot (getMe) adalah sbb:

procedure TForm1.Button3Click(Sender: TObject);
var
  id, first_name, username : string;
begin

   TELEGRAM_BOT_URL := 'https://api.telegram.org/'+Token+'/getMe';

   // Melakukan HTTP Request dengan TFPHTTPClient
   try
      rawData := TFPHTTPClient.SimpleGet(TELEGRAM_BOT_URL);
    except
      on E: Exception do
      begin
        ShowMessage('Gagal membaca sumber data: ' + E.Message);
        Exit;
      end;
    end;

   // Memformat/Parse Output yang diperoleh dari HTTP Request menjadi JsonDoc
    try
      JsonPar := TJSONParser.Create(rawData);
      JsonDoc := TJSONObject(JsonPar.Parse);
    except
      on E: Exception do
      begin
        ShowMessage('Informasi tidak valid: ' + E.Message);
        Exit;
      end;
    end;

    // Membreakdown Hasil Parse (JsonDoc) kemudian menyimpannya ke dalam variabel
     if  jsonDoc.findpath('ok').AsBoolean then
       begin

         // Jika Result tidak kosong
         if (jsonDoc.findpath('result').Count <> 0) then
         begin

           if (jsonDoc.findpath('result').FindPath('id') <> nil) then
              id := jsonDoc.findpath('result').FindPath('id').AsString;
           if (jsonDoc.findpath('result').FindPath('first_name') <> nil) then
              first_name := jsonDoc.findpath('result').FindPath('first_name').AsString;
           if (jsonDoc.findpath('result').FindPath('username') <> nil) then
              username := jsonDoc.findpath('result').FindPath('username').AsString;

           // Menampilkan informasi bot dalam dialog informasi
           ShowMessage('Bot ID : '+id+sLineBreak+'Bot Name : '+first_name+sLineBreak+'Username : '+username);
         end;

       end;
end; 

Untuk lebih jelasnya silahkan download source code projek melalui link github di atas. Silahkan kembangkan sesuai dengan kebutuhan anda. Akhir kata, tetap semangat!! 

0 komentar:

Posting Komentar