Compile telegram-bot

Kali ini judulnya berbau kebarat-baratan, karena memang padanan kata bahasa Indonesia untuk compile ini kurang mengena di rasa.

Bagi yang telah lama bermain bot Telegram, tentunya tidak akan asing dengan tg atau telegram-cli hasil karya Vitaly Valtman. Sebelum rilis Telegram bot API, bisa dikata telegram-cli ini merupakan pusat dari tata surya; hampir semua bot berdasarkan telegram-cli.

Namun seiring peluncuran Telegram bot API, pamor telegram-cli mulai memudar, terlebih tgl yang menjadi pustaka andalan utama dihentikan pengembangannya. telegram-cli pun seakan lenyap dari permukaan bumi.

Sampai akhirnya pada September 2016, Vitaly mengumumkan bahwa pengembangan telegram-cli masih berlanjut. Namun ia kini tidak lagi memakai pustaka tgl, melainkan tdlib. Sayangnya, telegram-cli anyar ini tidak mendapat sambutan meriah sebagaimana pendahulunya. Mungkin karena ia kini disimpan di bitbucket yang kurang terpapar ke khalayak dan karena tdlib yang digunakannya masih bersifat tertutup sehingga tidak mungkin untuk mengompilasi telegram-cli secara mandiri.
Gaung telegram-cli anyar ini pun berlangsung singkat dan kembali senyap.

Hingga sekitar setahun kemudian Vitaly merilis telegram-bot, yang bisa dibilang merupakan versi non interaktif dari telegram-cli. Namun tentu dengan kinerja dan fitur yang lebih baik. telegram-bot masih sama seperti telegram-cli; sumbernya terbuka dan bisa dilihat di bitbucket, namun tdlib yang menjadi pustaka utamanya masih bersifat tertutup.
telegram-bot ini sejujurnya cukup mengagumkan, namun memang ranah bot kini cenderung dikuasai Telegram bot API. Masa-masa kejayaan telegram-cli (dan penerusnya) rupanya kini telah berlalu.

Menginjak hari pertama di tahun 2018, tersiar kabar yang cukup menggembirakan; tdlib kini sumbernya telah dibuka. Ini berarti, secara teori, siapapun bisa mengompilasi telegram-bot secara mandiri.
Setelah saya konfirmasi mengenai dibukanya kode tdlib pada Vitaly, diapun merilis repo tdbot yang compilable ke GitHub.

Berikut langkah-langkah yang bisa dilakukan untuk mengompilasi tdbot secara mandiri. Meski langkah dicontohkan dilakukan pada Ubuntu 16.04, namun ia bisa langsung diterapkan pada Debian, dan untuk distro lain mungkin saja dilakukan selama paket yang dibutuhkan untuk kompilasi adalah tersedia.
Satu hal utama yang patut diingat; tdlib membutuhkan memory yang sangat besar untuk dikompilasi. Sejauh yang saya coba, kompilasi tdbot/tdlib ini bisa memakai memory hingga 7 GB.

  1. Kompilasi memerlukan paket gperf. Dalam Ubuntu, gperf berada dalam repo universe. Jadi jika menggunakan Ubuntu, pastikan universe telah diaktifkan.

    sudo apt edit-sources
    

    Sunting baris repo menyerupai bentuk berikut:

    deb http://kambing.ui.ac.id/ubuntu xenial main universe multiverse
    

    Simpan perubahan, kemudian mutakhirkan sistem.

    sudo apt update
    
  2. Pasang paket yang dibutuhkan untuk kompilasi.

    sudo apt install git build-essential cmake libssl-dev liblua5.3-dev gperf libconfig++-dev
    
  3. Gandakan repo tdbot.

    git clone --recursive https://github.com/vysheng/tdbot
    
  4. Pengembangan tdbot lumayan sangat lambat, sementara pustaka yang menjadi acuannya; tdlib, lumayan dikembangkan secara cepat. Jadinya, rujukan submodule td yang digunakan tdbot kini sudah lumayan tertinggal dan sangat disarankan untuk dimutakhirkan ke commit paling anyar.

    cd tdbot
    git submodule update --remote --merge
    cd ..
    
  5. Buat map khusus untuk tempat pengaturan kompilasi dan penyimpanan berkas biner telegram-bot hasil kompilasi.

    mkdir tdbot-build
    

    Kemudian masuk ke dalam map tersebut.

    cd tdbot-build
    
  6. Buat pengaturan untuk kompilasi.

    cmake -DCMAKE_BUILD_TYPE=Release ../tdbot
    
  7. Mulai proses kompilasi.

    make telegram-bot
    

    Pada ThinkPad T520 saya yang berprosesor Intel Core i5 2520M, proses kompilasi berlangsung sekitar 20-30 menit dan menggunakan RAM hingga sekitar 7 GB.

Demikianlah riwayat singkat telegram-cli dan panduan untuk mengompilasi telegram-bot. Jika Anda tertarik untuk lebih mendalami telegram-cli, disarankan untuk bergabung dengan grup Telegram chi squared. Meski grupnya lumayan sepi, namun di sini kita bisa berbincang langsung dengan Vitaly, si pembuat telegram-cli.

Saya juga membuat tdcli.lua dan tdbot.lua, wrapper sederhana untuk telegram-cli dan telegram-bot. Kedua repo tersebut saya yakin akan membantu Anda jika hendak membuat bot berdasar telegram-cli atau telegram-bot.