Library Telegram versi 2

9 menit saja |

Berikut ini pustaka Telegram versi ke-2 untuk Google Apps Script (GAS). Dokumentasi ini sangat bermanfaat untuk developer yang menggunakan Library GAS Versi 2.

Pengenal

Berikut Google Script Library -nya :

  • ID : MWkhreE4chZ56V_bDwpYUBPvg_do21SJR
  • Fungsi : Library Bot API Telegram Versi 2
  • Versi : silakan gunakan versi terbaru (angka yang paling besar)

Jika menggunakan EDITOR Baru, gunakan ID : 11LhYmqUg8UVtqMg3rPaau5uHwCMtsE_0RwUQim4ZY-OCfDe_YyIYKPSP

Cek Video Tips dan Trik #1

Change Log

Bisa juga dilihat: GITHUB - VERSION

Mengapa?

Ditulis ulang dari awal, karena versi pertama dahulu hanya sekadar iseng tanpa konsep. Yang terpenting jalan. Namun seiring waktu, dikembangkan, tarik sana tarik sini mulai mengalami kesulitan.

Sehingga perlu dibuat rilis versi terbaru guna perbaikan.

Kompabilitas

Mungkin sekitar 90% memiliki kompabilitas terhadap versi pertama nya. Namun, disarankan buat develop baru mempergunakan rilis versi kedua (ini) saja.

Selanjutnya materi-materi terbaru, ditulis dan disampaikan akan menggunakan pustaka versi ini.

Keunggulan

  • Opensource. kode saya publish di github. Dapat dicek pada https://github.com/banghasan/Telegram-Lib-GAS-V2

  • Lebih Rapi. Penulisan kali ini menggunakan kelas. Ini bertujuan agar lebih rapi dan mudah ditelusuri untuk maintenance dan pengembangan. Dapat juga dijadikan sumber rujukan fungsi-fungsi yang tersedia secara langsung dari source.

  • Method lebih Lengkap. Tersedia sudah 90% lebih fungsi-fungsi method yang ada pada bot API telegram. Tidak perlu build ulang lagi sendiri.

  • Lebih banyak tool dan utilitas. Ditambahkan berbagai tools dan utilitas penunjang pembuatan bot yang lebih kompleks. Seperti fungsi random yang sering ditanyakan pada grup. Dan lain-lain.

  • Lebih secure. Adanya tools dan utilitas store user properties, menjadikan token bot dapat disembunyikan.

  • Mini Database. User properties dapat difungsikan sebagai mini database, yang dapat lebih dikembangkan lagi menjadi penyimpanan session maupun data-data interaksi cepat atau preferensi bot.

  • Persingkat Msg. Untuk bot interaksi, cukup menggunakan variable msg untuk mempersingkat pengganti msg.chat.id

Dokumentasi Fungsi

Di list singkat, detailnya bisa dilihat di dokumentasi Bot API nya telegram.

01. Telegram

File ini digenerate secara sistem. Dengan demikian jika ada perubahan bot API dari Telegram, diharapkan bisa dibuat ulang dengan cepat untuk menyesuaikan.

Fungsi Umum:

  • request(method, data, form=false, blob=false)
  • buildQuery(array)

Method:

  • getMe()
  • [2.20] logOut()
  • [2.20] close()
  • sendMessage(chat_id, text, parse_mode, disable_web_page_preview, disable_notification, reply_to_message_id, reply_markup)
  • forwardMessage(chat_id, from_chat_id, disable_notification, message_id)
  • sendPhoto(chat_id, photo, caption, parse_mode, disable_notification, reply_to_message_id, reply_markup)
  • sendAudio(chat_id, audio, caption, parse_mode, duration, performer, title, thumb, disable_notification, reply_to_message_id, reply_markup)
  • sendDocument(chat_id, document, thumb, caption, parse_mode, disable_notification, reply_to_message_id, reply_markup)
  • sendVideo(chat_id, video, duration, width, height, thumb, caption, parse_mode, supports_streaming, disable_notification, reply_to_message_id, reply_markup)
  • sendAnimation(chat_id, animation, duration, width, height, thumb, caption, parse_mode, disable_notification, reply_to_message_id, reply_markup)
  • sendVoice(chat_id, voice, caption, parse_mode, duration, disable_notification, reply_to_message_id, reply_markup)
  • sendVideoNote(chat_id, video_note, duration, length, thumb, disable_notification, reply_to_message_id, reply_markup)
  • sendMediaGroup(chat_id, media, disable_notification, reply_to_message_id)
  • sendLocation(chat_id, latitude, longitude, live_period, disable_notification, reply_to_message_id, reply_markup)
  • editMessageLiveLocation(chat_id, message_id, inline_message_id, latitude, longitude, reply_markup)
  • stopMessageLiveLocation(chat_id, message_id, inline_message_id, reply_markup)
  • sendVenue(chat_id, latitude, longitude, title, address, foursquare_id, foursquare_type, disable_notification, reply_to_message_id, reply_markup)
  • sendContact(chat_id, phone_number, first_name, last_name, vcard, disable_notification, reply_to_message_id, reply_markup)
  • sendPoll(chat_id, question, options, is_anonymous, type, allows_multiple_answers, correct_option_id, explanation, explanation_parse_mode, open_period, close_date, is_closed, disable_notification, reply_to_message_id, reply_markup)
  • sendDice(chat_id, emoji, disable_notification, reply_to_message_id, reply_markup)
  • sendChatAction(chat_id, action)
  • getUserProfilePhotos(user_id, offset, limit)
  • getFile(file_id)
  • kickChatMember(chat_id, user_id, until_date)
  • unbanChatMember(chat_id, user_id)
  • restrictChatMember(chat_id, user_id, permissions, until_date)
  • promoteChatMember(chat_id, user_id, can_change_info, can_post_messages, can_edit_messages, can_delete_messages, can_invite_users, can_restrict_members, can_pin_messages, can_promote_members)
  • setChatAdministratorCustomTitle(chat_id, user_id, custom_title)
  • setChatPermissions(chat_id, permissions)
  • exportChatInviteLink(chat_id)
  • setChatPhoto(chat_id, photo)
  • deleteChatPhoto(chat_id)
  • setChatTitle(chat_id, title)
  • setChatDescription(chat_id, description)
  • pinChatMessage(chat_id, message_id, disable_notification)
  • unpinChatMessage(chat_id)
  • [2.20] unpinAllChatMessages(chat_id)
  • leaveChat(chat_id)
  • getChat(chat_id)
  • getChatAdministrators(chat_id)
  • getChatMembersCount(chat_id)
  • getChatMember(chat_id, user_id)
  • setChatStickerSet(chat_id, sticker_set_name)
  • deleteChatStickerSet(chat_id)
  • answerCallbackQuery(callback_query_id, text, show_alert, url, cache_time)
  • setMyCommands(commands)
  • getMyCommands()

02. NewMsg

Berisi method kompabilitas, tambahan msg untuk interaktif dan method pelengkap lainnya. Tidak semua method dibuat ada msg nya. Saya pilihkan yang sering dipergunakan saja.

Default parse mode HTML.

Hampir semua returnnya adalah JSON, kecuali beberapa method.

  • [2.18] version() : string, untuk cek versi Library
  • [2.19] versi() : string, untuk cek versi Library, alias dari version()
  • [2.21] getFileLink(fileID) untuk mendapatkan URL file download
  • requestForm(method, data) : JSON
  • requestBlob(method, data) : blob
  • [2.20] copyMessage(chat_id, from_chat_id, message_id, caption, parse_mode, caption_entities, disable_notification, reply_to_message_id, allow_sending_without_reply, reply_markup)
  • kirimPesan(chat_id, text, parse_mode, disable_web_page_preview, reply_to_message_id, reply_markup)
  • sendMsg(msg, text, parse_mode, disable_web_page_preview, reply_to_message_id, reply_markup)
  • sendMessageKeyboard(chat_id, text, keyboard, parse_mode, disable_web_page_preview, reply_to_message_id)
  • sendMsgKeyboard(msg, text, keyboard, parse_mode, disable_web_page_preview, reply_to_message_id)
  • sendMessageRemoveKeyboard(chat_id, text, parse_mode, disable_web_page_preview, reply_to_message_id)
  • sendMsgRemoveKeyboard(msg, text, parse_mode, disable_web_page_preview, reply_to_message_id)
  • sendMessageKeyboardInline(chat_id, text, keyboard, parse_mode, disable_web_page_preview, reply_to_message_id)
  • sendMsgKeyboardInline(msg, text, keyboard, parse_mode, disable_web_page_preview, reply_to_message_id)
  • sendMessageForceReply(chat_id, text, parse_mode, disable_web_page_preview, reply_to_message_id)
  • sendMsgForceReply(msg, text, parse_mode, disable_web_page_preview, reply_to_message_id)
  • forwardMsg(msg, from_chat_id, message_id)
  • sendMsgPhoto(msg, photo, caption, parse_mode, reply_to_message_id, reply_markup)
  • sendMsgAudio(msg, audio, caption, parse_mode, duration, performer, title, thumb, reply_to_message_id, reply_markup)
  • sendMsgDocument(msg, document, thumb, caption, parse_mode, reply_to_message_id, reply_markup)
  • getUpdates(offset, limit, timeout, allowed_updates)
  • setWebhook(url, max_connections)
  • deleteWebhook() untuk menghapus hook
  • getWebhookInfo() mendapatkan informasi hook
  • editMessageText(chat_id, message_id, inline_message_id, text, parse_mode, disable_web_page_preview, reply_markup)
  • editMessageCaption(chat_id, message_id, inline_message_id, caption, parse_mode, reply_markup)
  • editMessageMedia(chat_id, message_id, inline_message_id, media, reply_markup)
  • editMessageReplyMarkup(chat_id, message_id, inline_message_id, reply_markup)
  • stopPoll(chat_id, message_id, reply_markup)
  • deleteMessage(chat_id, message_id)
  • sendSticker(chat_id, sticker, disable_notification, reply_to_message_id, reply_markup)
  • [2.20] createChatInviteLink(chat_id, expire_date, member_limit)
  • [2.20] editChatInviteLink(chat_id, invite_link, expire_date, member_limit)
  • [2.20] revokeChatInviteLink(chat_id, invite_link)

03. Daftar

Berisi untuk inisasi token.

  • setToken(token)
  • getToken() : string

04. Util dan Button

Utilitas

Untuk memanggil: tg.util.method()

  • clearHTML(string) : string
  • clearMarkdown(string) : string
  • formatDate(date, timeZone, format)
  • formatString(template, args)
  • uuID() : untuk membuat / generate ID unik
  • [2.09] punyaAkses(array, id) : boolean
  • sleep(milidetik)
  • timeConverter(UNIX_timestamp, ribuan) : string
  • outputText(text) : TEXT (with TEXT HEADER))
  • outputJSON(data) : JSON (with JSON HEADER)
  • outputHTML(text) : String (with HTML HEADER)
  • outToJSON(data, spasi=2) : JSON, di dalam bot pergunakan yang ini. Contoh: tg.kirimPesan(ID, tg.outToJSON(update));
  • textBlob(isiText, namaFile) : blob, // Contoh: textBlob('Hasanudin H Syafaat', 'nama') -> hasil: nama.txt. Untuk mengirim ke Telegram, gunakan requestForm dengan method sendDocument.
  • [2.11] random(list) : item. Contoh: random(['aku','kamu', 'dia'])
  • [2.11] random(min, max) : integer. Contoh: random(1,100);
  • [2.17] isArray(object) : boolean, mengecek objek apakah bertipe Array
  • [2.17] substr(text, offset, length) : string, length boleh minus. Contoh lihat dibawah.
  • [2.18] number_format(number, decimals, decPoint, thousandsSep) : string
  • [2.19] isString(val) boolean, mengecek nilai val apakah bertipe string
  • [2.19] isNumber(val) boolean, mengecek nilai val apakah bertipe angka
  • [2.19] isObject(val) boolean, mengecek nilai val apakah bertipe objek (array/json)
  • [2.19] isBlob(val) boolean, mengecek nilai val apakah bertipe blob
  • [2.19] isDate(val) boolean, mengecek nilai val apakah bertipe tanggal
  • [2.19] forEach(obj, fn) fungsi seperti forEach namun bisa untuk objek. Contoh: forEach({aku:1, kamu:2}, (data, kunci) => { console.log(kunci + " " + data) })
  • [2.19] allReplace(str, obj) seperti fungsi replace, dengan support multiple kunci (regex). Contoh: allReplace('Hasanudin', {'a':4, 's': 5, 'n|u': 'o'}); Hasil: H454oodio
  • [2.23] formatHTML(text, entities) menghasilkan format HTML dari entities

substr

Berbagai contoh:

var kalimat = "anak ayam mencari makan";

tg.util.substr(kalimat, 0, 9); // anak ayam
tg.util.substr(kalimat, 13, 4); // cari

tg.util.substr('abcdef', 0, -1) // abcde
tg.util.example 2: substr(2, 0, -6) // false
Number Format

Number format ini dibuat seperti function dalam PHP.

Semua diawali tg.util.number_format ya.

Berbagai number_format :

number_format(1234.56)   //   returns  '1,235'
number_format(1234.56, 2, ',', ' ')  //   returns  '1 234,56'
number_format(1234.5678, 2, '.', '')   //   returns '1234.57'
number_format(67, 2, ',', '.')   //   returns '67,00'
number_format(1000)   //  returns  '1,000'
number_format(67.311, 2)   //   returns '67.31'
number_format(1000.55, 1)  //   returns '1,000.6'
number_format(67000, 5, ',', '.')  //   returns  '67.000,00000'
number_format(0.9, 0) //  returns '1'
number_format('1.20', 2)   //  returns  '1.20'
number_format('1.20', 4)   //  returns '1.2000'
number_format('1.2000', 3)  //  returns  '1.200'
number_format('1 000,50', 2, '.', ' ')  //  returns '100 050.00'
number_format(1e-8, 8, '.', '')  //  returns 14: '0.00000001'

Contoh:

function testNumberFormat() {
 var uang = 1200300;
 var r = tg.util.number_format(uang, 2, ',', '.')
 console.log(r); // 1.200.300,00
}

Button

untuk memanggil: tg.button.method() alias tg.tombol.method()

  • text(text, data)
  • inline(text, data): alias dari button text
  • query(text, data)
  • url(text, url)

05. Class User

Berfungsi untuk mini database terhadap user properties.

Inisiasi: var user = new telegram.user()

  • setValue(kunci, nilai) // contoh: setValue('token', '123:xxxx');
  • setValues(data) // contoh setValues({nickname: 'Bob', region: 'US', language: 'EN'});
  • getValue(kunci) // contoh: getValue('token');
  • getValues()
  • getKeys()
  • delete(kunci)
  • deleteAll()

06. Class Script

Tersedia di versi 2.16

Berfungsi untuk mini database terhadap script properties.

Inisiasi: var script = new telegram.script()

  • setValue(kunci, nilai) // contoh: setValue('token', '123:xxxx');
  • setValues(data) // contoh setValues({nickname: 'Bob', region: 'US', language: 'EN'});
  • getValue(kunci) // contoh: getValue('token');
  • getValues()
  • getKeys()
  • delete(kunci)
  • deleteAll()

07. Class Fetch

Berfungsi untuk mempermudah mengambil atau request web atau url.

Tersedia di versi 2.19

Inisiasi:

fetch(url=false)

Contoh :

var fetch = new tg.fetch();

Method dan properties:

  • result false, berisi data hasil request
  • req berisi data-data request
  • setHeaders(headers) untuk mengisi header secara manual.
  • setContentType(contentType) untuk mengisi contentType secara manual. // contoh: setContentType('application/json')
  • setMethod(method) mengisi method secara manual. // Contoh: setMethod('post'), setMethod('put'), atau lainnya.
  • setUrl(url) mengisi url untuk di set. // Contoh: setUrl('https://api.telegram.org/botTOKEN')
  • getUrl() mendapatkan url yang aktif
  • request() melakukan request. Fungsi utama dari fetch.
  • request(url) melakukan request. Fungsi utama dari fetch.
  • request(url, options) melakukan request. Fungsi utama dari fetch.
  • addQuery(obj) menyusun query. // contoh: addQuery({cari: "kata", khusus: "ya"}) Hasil: ?cari=kata&khusus=ya
  • get() melakukan fungsi request GET pada url/uri yang sudah diseting sebelumnya.
  • get(url) melakukan fungsi request GET pada url. Contoh get('https://api.telegram.org/botTOKEN/getme')
  • get(uri) melakukan fungsi request GET dengan penambahan uri, URL sudah di seting sebelumnya. Contoh: get('/getme')
  • get(obj) melakukan fungsi request GET dengan penambahan parameter, URL/URI sudah di seting sebelumnya. Contoh: get({chat_id: 12345678, text: "Halo Bang"})
  • get(url, data), get(uri, data) melakukan GET pada URL/URI dengan parameter data. Contoh get('https://api.telegram.org/botTOKEN/sendMessage', {chat_id: 12345678, text: "Halo Bang"})
  • post() melakukan fungsi request POST pada url/uri yang sudah di seting sebelumnya.
  • post(url) melakukan fungsi request POST pada url.
  • post(uri) melakukan fungsi request POST pada url yang sudah diset sebelumnya, dengan penambahan uri.
  • post(data) melakukan fungsi request POST pada url/uri yang sudah diset sebelumnya, dengan pengisian data post. Contoh: post({chat_id: String(12345678), text: "Halo Bang"})
  • post(url, data) melakukan fungsi request POST pada url dengan parameter data. Contoh: post('https://api.telegram.org/botTOKEN/sendMessage', {chat_id: String(12345678), text: "Halo Bang"})
  • post(uri, data) melakukan fungsi request POST pada uri dengan URL yang sudah diset sebelumnya, ditambahkan dengan parameter data. Contoh: post('/sendMessage', {chat_id: String(12345678), text: "Halo Bang"})
  • post(url, boolean) melakukan fungsi request POST pada url, data boolean untuk tipe data JSON. Contoh: post('https://api.telegram.org/botTOKEN/getMe', true)
  • post(uri, boolean) melakukan fungsi request POST pada uri (url di set sebelumnya), data boolean untuk tipe data JSON. Contoh: post('/getMe', true)
  • post(data, boolean) melkukan fungsi request POST pada url/uri yang sudah di set sebelumnya, dengan data dan boolean JSON. Contoh: post({chat_id: 12345678, text: "Halo Bang"}, true)
  • post(url, data, boolean) melkukan fungsi request POST pada url, dengan data dan boolean JSON. Contoh: post('https://api.telegram.org/botTOKEN/sendMessage', {chat_id: 12345678, text: "Halo Bang"}, true)
  • post(uri, data, boolean) melkukan fungsi request POST pada url/uri yang sudah di set sebelumnya, dengan data dan boolean JSON. Contoh: post('/sendMessage', {chat_id: 12345678, text: "Halo Bang"}, true)

Catatan:

Hasil dari request, baik dari get atau pun post jika responnya berupa data JSON akan otomatis di parse.

Lain-lain

  • doPost(e) : untuk verisifikasi data POST

Contoh

Hello Bot

Bisa langsung dicek di halaman Helo Bot!

API Afara

function testAPIAfara() {
    var url = 'https://afara.my.id/api';
    var fetch = new tg.fetch(url);

    // API terjemahan

    var terjemah = fetch.get('/translate', { text: 'Selamat Pagi!', to: 'su' });
    // Logger.log(terjemah); // melihat hasil mentah

    Logger.log(terjemah.success);  // Wilujeng énjing!

    
    // contoh lain, DNS Lookup
    var domain = fetch.get('/dns-lookup', { domain: 'banghasan.com' });

    var hasil = '';
    if (domain.DNSData)
        if (domain.DNSData.dnsRecords) {
        var dnsRecords = domain.DNSData.dnsRecords;
        tg.util.forEach(dnsRecords, (data) => {
                hasil += data.rawText + "\n";
            })
        }

    Logger.log(hasil);
}

Hasil:

Hasil DNS Lookup

Video

Ikuti materi video di youtube:

Penutup

Jika ada pertanyaan, saran atau masukkan silakan didiskusikan. Jika ingin live dan biasanya tanggapan juga lebih cepat, sangat disarankan bergabung pada group Telegram @botIndonesia.