Python and Telegram bot, how to collaborate them to make processes simplified? – Telegram Group

Python and Telegram bot, how to collaborate them to make processes simplified?

Sepatah-dua patah

Sejak dimulainya era Industri 4.0, perkembangan teknologi internet dan teori ilmu komputer, dalam hal ini kecerdasan buatan, dan perangkat mobile membuat akses informasi menjadi semakin mudah, dapat dilakukan di mana saja dan kapan saja.

Data Science, beberapa tahun belakangan ini akrab terdengar di percakapan sehari-hari terutama di kalangan pekerja yang setiap harinya erat berkaitan dengan data. Data science adalah ilmu tentang bagaimana mengungkap informasi dan pengetahuan, dari sekumpulan data dengan pendekatan engineering dan science seperti database engineering, programming, statistika, dan matematika. Data science atau yang apabila di-Bahasa Indonesia-kan menjadi Ilmu Data sebenarnya tidak jauh berbeda dengan Data Mining. [1]

Selain itu di dalam kelompok Data Science dikenal juga istilah Data Engineering dan Data Analytics, dimana Data Analytics merupakan proses inspeksi serangkaian data yang berguna untuk mendapatkan kesimpulan dari informasi yang ada dan meningkatkan sistem pada software. Teknologi data analytics dapat digunakan untuk memudahkan user mendapatkan insight maupun hasil akhir yang cepat, tepat dan akurat berdasarkan data yang dimiliki.

Pembagian antara data science, data engineering maupun data analytics secara garis besar dapat diamati melalui siklus pemrosesan data yang dapat digambarkan dalam flow sebagai berikut:

Dicuplik dari “Teori dan Panduan Praktis Data Science dan Big Data”, LPPM Universitas Pakuan

Dapat dilihat pada gambar di atas, data dapat berasal dari banyak sumber dan dengan banyak ragam format seperti dokumen, gambar, dan bahkan video. Proses akuisisi data ini idealnya dilakukan oleh seorang data engineer. Kemudian, setelah data berhasil diakuisisi proses berikutnya adalah melakukan data cleansing dan data transformation. Data cleansing adalah sebuah proses koreksi atau bisa juga bahkan menghapus data yang dirasa kurang lengkap dan kurang merepresentasikan bisnis dan proses yang sedang dianalisis.

Selain itu terkadang terhadap data yang dimiliki juga perlu dilakukan data transformation contohnya mengubah data linguistik menjadi numerik atau mengubah data dengan nilai kontinu menjadi nilai diskrit. Proses data cleansing dan data transformation ini idealnya dilakukan oleh seorang data scientist, namun tidak jarang pula terkadang seorang data engineer maupun data analyst juga melakukan cleasing dan transformation, seperti melakukan query untuk memfilter data dan transformasi sederhana seperti mengubah format tanggal. Sampai proses ini, mungkin untuk pekerjaan sehari-hari kita sudah akrab dengan flow ini.

@botfather at Telegram

Setelah memahami bagaimana pemanfaatan data yang dimiliki, di dalam paper ini akan dibahas mengenai semi-otomasi proses pengolahan dan penyajian data dimulai dari menyiapkan data hingga proses transfer data melalui platform robot di aplikasi Telegram. Otomasi sendiri merupakan suatu sistem yang dapat bekerja secara otomatis tanpa perlu dikontrol secara manual. Pada project kali ini kata ‘semi’ ditambahkan sehingga menjadi semi-otomasi, berarti proses otomasi tidak berjalan sepenuhnya secara otomatis tetapi masih memerlukan input manual dari user dan baru nantinya pemrosesan di backend akan dilakukan dengan otomatis melalui coding. Penggunaan bot/robot di Telegram saat ini cukup popular dikarenakan kemudahan untuk menggunakannya dengan dukungan HTTP API Telegram yang sudah tersedia, bot creator resmi dari Telegram yang digunakan adalah BotFather. [2]

Proses pengolahan data selama ini masih menggunakan sistem traditional seperti user melakukan download source data, lalu cleansing data, setelahnya melakukan visualisasi data dan jika dilakukan secara terpisah tanpa diotomasi maka hal ini akan memakan waktu yang cukup lama karena banyaknya proses yang harus dilalui untuk mendapatkan sebuah output. Maka dengan melakukan semi-otomasi pemrosesan data menggunakan Bot Telegram, hal ini dapat disimplifikasi dimana secara garis besar flow yang akan dibangun adalah:

User perlu memberikan input pada bot tentang data apa yang ingin didapatkan, backend akan menyiapkannya dalam beberapa saat sesuai dengan output yang diinput user langsung di platform yang sama. Proses pada backend menggunakan pemrograman Python dengan beberapa library pendukung di antaranya seperti telebot sebagai Bot connector, pymysql sebagai SQL connector, pandas untuk pengolahan data dan matplotlib untuk melakukan plotting ke bentuk graph/chart.

The Process

Dalam project ini, berdasarkan siklus pemrosesan data [1] di atas maka akan lebih berfokus ke proses Data Gathering, Pre-processing, sebagian Exploratory Data Analysis (EDA) dan terakhir Visualization tanpa melakukan Modeling.

Setelah menyelesaikan proses data tersebut maka dilanjutkan pada proses menghubungkan data tersebut ke bot Telegram sebagai interface dan bagian dari proses otomasi. Fungsi bot yang akan dibuat sebagai contoh adalah menampilkan trend availability dari suatu site dan fungsi yang dapat menampilkan trend payload 4G bulan berjalan dari suatu site. Berikut flow dari project simplifikasi proses yang akan dibangun:

Project ini dilakukan dengan menggunakan bahasa pemrograman Python 3.9 dan editor teks Microsoft Visual Studio Code. Proses dimulai dengan membangun koneksi antara code dan SQL server yang digunakan sebagai source data. Library yang digunakan untuk koneksi ke SQL server adalah pymysql. Contoh pertama adalah cara pemrosesan data availability site dari SQL server sampai proses visualisasi data tersebut.

Pada potongan code di atas, akan diambil data dari sebuah SQL server yang diawali dengan mendefinisikan alamat SQL server beserta database yang akan digunakan lalu dimasukkan ke dalam variable ‘dbcon’.

Variable ‘SQL_Query’ berisi perintah eksekusi query data dengan command SQL sesuai variable ‘query’ pada database yang sudah di-define pada variable ‘dbcon’.

Langkah berikutnya adalah melakukan translasi data hasil query menjadi bentuk dataframe dengan menggunakan library pandas. Pilih kolom apa saja yang akan dimasukkan ke dalam dataframe, contohnya adalah kolom ‘DATE’ dan ‘avail’ yang berisi data tanggal dan angka availability site 7 hari ke belakang (karena data di SQL server update H-1 maka di code SQL query dibuat interval 8 day behind).

Variable ‘df’ adalah dataframe yang memuat data tanggal (DATE) dan availability site (avail) yang kemudian di-rename judul kolomnya menjadi DATE → ‘Date’ dan avail → ‘Availability’. Dikarenakan data pada kolom ‘Availbility’ memiliki format angka di belakang koma yang tidak seragam, maka dilakukan penyamaan format 2 angka di belakang koma. Untuk baris .astype(float) ini diperlukan perubahan tipe data di kolom ‘Availability’ menjadi float untuk mempermudah proses plotting nantinya.

Sampai pada proses ini sebenarnya data (yang awalnya sudah tidak memerlukan cleansing) sudah dapat digunakan.

Selanjutnya adalah tahapan untuk visualisasi data pada dataframe tersebut ke dalam sebuah bentuk chart line (garis) menggunakan library matplotlib dengan mendefinisikan sumbu x adalah ‘Date’ dan y adalah ‘Availability’.

Selain itu dapat ditambahkan juga informasi seperti chart title, axis title dan atribut chart lainnya yang dapat ditemukan pada web documentation matplotlib. [3]

Di atas adalah tampilan plot data yang sudah divisualisasikan ke bentuk chart. Untuk menambahkan informasi bersamaan dengan output chart tersebut, dapat disisipkan printed text atau nilai rata-rata availability (mean) dengan beberapa baris code yang termasuk sebagian dari proses Exploratory Data Analysis (EDA; proses aritmatika termasuk ke dalam EDA). [4]

Variable ‘Rata’ berisi nilai rata-rata/mean dari kolom ‘Availability’ yang dapat digunakan sebagai informasi tambahan/insight. Output yang dihasilkan sebagai berikut:

Tahapan selanjutnya adalah integrasi dengan bot Telegram agar tujuan (semi) otomasi dapat dijalankan, dengan contoh case fungsi yang akan menampilkan trend payload 4G bulan berjalan dari suatu site. Prosesnya keseluruhan dapat dimuat dalam beberapa langkah seperti User memberikan input commandData diproses di backendOutput dikirimkan kembali ke user dalam bentuk informasi. Penting untuk dilakukan adalah membuat bot di Telegram dengan bantuan https://t.me/botfather dan dapatkan tokennya seperti contoh berikut:

Lakukan import library Telebot ke dalam code Python dan masukkan token yang diberikan oleh BotFather ke dalam sebuah variable contohnya ‘bot’.

Agar dapat memproses input yang diberikan user, maka bot harus dapat mengerti jenis inputan yang diberikan. Definisikan sebuah command seperti /payload diikuti dengan site ID, contohnya /payload MAB036 (tambahkan simbol ‘/’ di depan agar menandakan bahwa string kalimat di belakangnya merupakan jenis command).

Code pada barisan setelahnya merupakan code yang digunakan untuk memproses data mulai dari query SQL hingga membuat data hasil query tersebut menjadi bentuk dataframe. Sampai proses visualisasi data masih menggunakan code yang mirip dengan proses di gambar di halaman sebelumnya, bedanya pada akhir proses looping code akan mengirimkan output berupa teks dan file gambar chart yang telah dibuat dari proses visualisasi data.

Variable ‘Rata’ berisi rata-rata/mean pada kolom ‘Payload’ untuk ditampilkan sebagai informasi tambahan pada output yang dikirimkan kembali ke user selain chart. Dengan menggunakan library tabulate, dapat menampilkan data dari dataframe ke dalam bentuk tabel agar lebih mudah dan bagus dipandang contohnya pada variable ‘tabelnya’ yang berisi bentuk string dari dataframe. [5] Variable ‘cid’ berisi message_chat_id dari user yang mengirimkan input, ‘cid’ akan digunakan kembali sebagai alamat tujuan dikirimnya output (file gambar chart dan teks) yang telah selesai diproses.

Proses backend yang terjadi saat matplotlib melakukan .savefig adalah menyimpan chart/figure berbentuk file gambar (.png) ke harddisk, lalu setelahnya dipanggil kembali saat akan dikirimkan ke user.

Di atas adalah output dari command /pay4g MAB036 yang telah dieksekusi berupa chart line yang menampilkan trend payload 4G dari site MAB036 dan teks list payload per hari pada bulan berjalan (September 2021) beserta perhitungan rata-rata payload 4G di bulan berjalan

Jadi apa?

Dengan memanfaatkan pemrosesan data menggunakan metode di project ini, dapat memberikan beberapa improvement berupa:

  1. Simplifikasi terhadap proses pengolahan dan penyajian data yang awalnya membutuhkan beberapa step manual hingga dapat menjadi semi-otomatis dengan bantuan code.
  2. Proses simplifikasi pengolahan dan penyajian data di atas dapat diterapkan dalam tumpukan data yang jumlahnya besar sehingga lebih mudah diakses.
  3. Jika terdapat kebutuhan mendesak akan suatu data maka dengan mudah dan cepat dapat dipenuhi hanya dengan beberapa command di bot Telegram.

Referensi

[1] I. Wahyudin, E. Tita dkk., “Teori dan Panduan Praktis Data Science dan Big Data”, LPPM Universitas Pakuan, 2019.

[2] BotFather, “Bots: An introduction for developers”, 14 September 2021, [Online], Available: https://core.telegram.org/bots.

[3] Matplotlib, “Matplotlib: Visualization with Python”, 14 September 2021, [Online], Available: https://matplotlib.org.

[4] DQLab, “Exploratory Data Analysis : Pahami Lebih Dalam untuk Siap Hadapi Industri Data”, 14 September 2021, [Online], Available: https://www.dqlab.id/data-analisis-machine-learning-untuk-proses-pengolahan-data.

[5] Python Tabulate, “Pypi: python-tabulate”, 14 September 2021, [Online], Available: https://pypi.org/project/tabulate.

Ten articles before and after

Building a Covid-19 Fact-Check Tele Bot Using Machine Learning – Telegram Group

PyCryptoBot Telegram Bot. This really is a very exciting new… – Telegram Group

TRX1 Dev Blog #9 (September 2021) – Telegram Group

ZipBot: Telegram Bot que Compacta Arquivos – Telegram Group

What is telegram messenger?. Telegram is a messenger application… – Telegram Group

How to Bulk Invite Members in your Telegram Group or Channel – Telegram Group

Домашняя бухгалтерия в telegram. Теги. – Telegram Group

Build and Deploy a Telegram bot in 5 minutes – Telegram Group

Call Me with Home Assistant, Zoom and Telegram Bot – Telegram Group

¡La adaptación masiva de las finanzas descentralizadas ya ha ocurrido! – Telegram Group