Library Telegram versi 2
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
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 penggantimsg.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 dariversion()
- [2.21]
getFileLink(fileID)
untuk mendapatkan URL file download requestForm(method, data)
: JSONrequestBlob(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 hookgetWebhookInfo()
mendapatkan informasi hookeditMessageText(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)
: stringclearMarkdown(string)
: stringformatDate(date, timeZone, format)
formatString(template, args)
uuID()
: untuk membuat / generate ID unik- [2.09]
punyaAkses(array, id)
: boolean sleep(milidetik)
timeConverter(UNIX_timestamp, ribuan)
: stringoutputText(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, gunakanrequestForm
dengan methodsendDocument
.- [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 nilaival
apakah bertipe string - [2.19]
isNumber(val)
boolean, mengecek nilaival
apakah bertipe angka - [2.19]
isObject(val)
boolean, mengecek nilaival
apakah bertipe objek (array/json) - [2.19]
isBlob(val)
boolean, mengecek nilaival
apakah bertipe blob - [2.19]
isDate(val)
boolean, mengecek nilaival
apakah bertipe tanggal - [2.19]
forEach(obj, fn)
fungsi sepertiforEach
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 textquery(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)
// contohsetValues({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)
// contohsetValues({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 requestreq
berisi data-data requestsetHeaders(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 aktifrequest()
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. Contohget('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. Contohget('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 parameterdata
. 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 parameterdata
. 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:
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.