This the multi-page printable view of this section. Klik disini untuk ngeprint.

Return to the regular view of this page.

Lumpia

Lumpia Framework

Tidak lagi seperti monster: 90% sumber daya tersedia, membuat bot Telegram menjadi mudah.

1 - Pengantar

Sekilas tentang Lumpia Framework

Pengantar

Apa ini?

Lumpia Framework atau kita sebut saja lumpia adalah sebuah framework Google Apps Script untuk mempermudah pembuatan bot api pada Telegram.

Google Apps Script atau kita sebut GAS saja, menyediakan fitur library untuk menyematkan sumber kode pihak lain untuk mempermudah membangun sebuah aplikasi.

Lumpia Framework bekerja pada fitur modul library yang tersedia pada Google Apps Script.

Pendahuluan

Library Google Apps Script (GAS) untuk Telegram edisi ke-3, merupakan suksesi dari GAS Library sebelumnya, yakni GASLib edisi 1 dan edisi 2 Lib v2 yang telah berhasil banyak dimanfaatkan.

Terinspirasi dari Telegraf yang dirasa cukup praktis dan efektif pada penggunaan sehari-hari. GASLibv3 membuat karakteristiknya sendiri, lantaran coding pada GAS memiliki banyak keterbatasan seperti tidak support proses (true) async, promise, deteksi tipe blob / stream, tidak banyak paket ready yang bisa langsung diberdayakan, dan berbagai kendala lainnya.

Namun, tidak perlu bekecil hati, framework GASLibv3 ini insyaAllah, lebih dari cukup guna kebutuhan sebuah proyek dalam skala kecil hingga menengah. Apalagi ditambah dukungan komunitas Grup Telegram @botIndonesia yang cukup baik menjadikan kamu tidak bingung harus pergi kemana untuk sharing.

Pada edisi ini, terdapat perubahan cukup besar dan cukup signifikan secara struktur, konsep, dan penggunaan. Tidak lagi seolah sebuah library namun menjadi sebuah framework sempurna dan modern untuk bot telegram. Dengan demikian, harapannya, penggunaan bisa menjadi lebih produktif untuk kebutuhan pekerjaan, kesenangan, maupun tools pembantu lainnya.

Fitur

  • Semakin simple lagi dan lagi
  • Konsep modern, terdapat middleware untuk melakukan hook message
  • Support untuk penyediaan plugin yang dapat disisipkan pada middleware
  • Tidak ribet memikirkan pondasi kodingan, sehingga bisa lebih berfokus pada proses flow proyek bot kamu
  • Dokumentasi bagus, mudah dipelajari dan diikuti
  • Terdapat panduan dan tutorial, secara tertulis maupun video
  • Sumber kode terbuka, yang dapat diperiksa, diteliti, dan dipelajari oleh siapapun
  • GRATIS jika merasa bermanfaat bebas berdonasi untuk mendukung proyek ini.. dipersilakan.
  • Didukung oleh komunitas telegram @botindonesia yang cukup aktif.

Pros

  • Menggunakan bahasa pemrograman javascript yang telah dikenal sangat luas, banyak literasi dan dukungan komunitas luas. Sampai saat ini masih terus dikembangkan.
  • Integrasi dengan seluruh service yang disediakan Google (Drive, Docs, Translate, Map, Bigdata, dan ratusan service lainnya).
  • Bisa dijadikan service restful guna diintegrasikan lebih luas dengan proyek-proyek lainnya
  • Mendukung remote database (oracle, mysql, mariadb, nosql: mongodb, dynamodb, firebase, dlsb), internal (user service properties) ataupun “psedo” seperti spreadsheet.
  • Masih berstatus aktif dalam pengembangan

Cons

  • Sebagaimana halnya melekat pada service Google Apps Script, maka melekat pula kelemahannya pada framework ini. Misal diantaranya, tidak support proses async, terdapat pembatasan fetch, dan limitasi lainnya.
  • Memiliki limitasi sesuai ketentuan Google.

Compare

Kelebihan dibandingkan versi lama

Keterangan Baru (v3.x) Lama (v2.x)
Penulisan Lebih sederhana lagi dan lagi Cukup
Handle Post Sudah tersedia Manual
Handle Error Sudah tersedia Manual
Shorthand Ada -
Middleware Ada -
Fetch Ada Ada
userDB Ada Ada
scriptDB Tidak Ada
Trigger Event Ada -
Context (ctx) Ada -
Debugging Ada -
Markup Ada -

Dan masih banyak lainnya..

Kecocokan

Bagi pengguna library versi 1 dan 2, lumpia (GAS Lib v3) tidak kompatible.

Selamat menyesuaikan!

2 - Konsep

Dasar pondasi atau flow lumpia

Lumpia dibangun atas 3 segment saat prosesi. Karena GAS tidak support async, maka ketiganya dipilih secara berurutan.

Misalkan middleware diletakkan pada codingan paling bawah, tetep dijalankan dibagian paling atas (didahulukan).

Bagan

graph TD;
    lumpia("πŸ₯ Lumpia") --- helper("🧱 helper"):::green;
    lumpia --- markup("πŸ›  markup"):::green;
    lumpia --- fetch("πŸ•Έ fetch");
    lumpia --- db[("πŸ‘₯ user db")];
    lumpia --- init;
    init --> bot((bot));
    bot(("πŸ€– bot")) -.-> debug([debug]);
    tg("✈️ telegram client") ---> |shorthand|bot
    user(["πŸ‘€ user"]) --> |text, photo, cb inline, etc..|update[/update/]
    update --> |doPost|bot
    lumpia -.- tg
    subgraph .
        bot --> |ctx|middleware;
        middleware --> ctx{{context}}
        ctx --> broadcast;
        ctx --> trigger;
    end
    broadcast --> ends(["πŸ‘€ user"])
    trigger --> ends
    
    style lumpia color:blue,fill:#bdd5ef
    style fetch fill:#efd9bd;
    style init fill:#e1efbd
    style ctx fill:#ecedea,color:grey
    style ends color:white,fill:#000;
    style user color:white,fill:#000;
    classDef green fill:#9de0b2
    click broadcast "/docs/lumpia/konsep/#2-broadcast"
    click ctx "/docs/lumpia/ctx"

1. Middleware

Cakupan: use, middleware

Middleware ini bisa mengentikan proses. Misalnya:

bot.use(ctx => console.log('stop') );

Maka, proses akan terhenti tidak dilanjutkan pada event berikutnya.

2. Broadcast

Cakupan: on

Cek bagian update type

3. Trigger

Cakupan: cmd, command, hear, hears, action


Karakteristik

Broadcast dan triger berjalan bersamaan (didahulukan brodcast) ketika middleware sudah selesai diproses dan menghasilkan context

Keduanya tidak saling menghentikan.

Contoh:

bot.on('text' , ctx => ctx.reply('masuk 1'));
bot.cmd('start', ctx => ctx.reply('masuk 2'));

Pesan user yang berupa text dan trigger /start akan dieksekusi (ditangkap keduanya), yang didahulukan adalah jenis broadcast (bot.on), meskipun seandainya codingan diatas dibalik, diletakkan dibawahnya trigger (bot.cmd).

Bisa dianggap sebagai fitur, tapi juga bisa dianggap sebagai bugs juga.

Pandai-pandailah memanfaatkan setuasi-nya.

3 - Versi

ID Library dan Versioning

ID Library

lumpia

Adalah versi stabil dari GAS Lib v3.

Semua dokumentasi menggunakan acuan ini.

1Yo6vQRwjG5Gl9jeEF0g2tBTUa0XN5MyT4G_HeDpRr9DvabxhRcSdhPNj
MUD_wfLskZT2D99lRXLh94vvg_do21SJR

bakpia

adalah versi beta, digunakan hanya oleh pengembang buat bahan testing.

1OSN8eNlJtw2ehf3ul7h48Jb8rdeljKhC5Rw3cJo4nkEFITdS01Di0N_S
M2iDAxzI3JJ4n6a8sryWJsfvg_do21SJR

Jika menggunakan bakpia, set variable paling atas untuk menyesuaikan dengan seluruh isi dokumentasi dan sample yang berada di sini:

var lumpia = bakpia;

const token = '12345:abcde';
const bot = new lumpia.init(token);

// dst..

matoa

adalah versi alpha (tahap development)

  • tidak dirilis secara publik.
  • tidak ada versi librarynya, karena dibangun secara langsung

ketikda dikonversi menjadi library, berubah nama menjadi bakpia dan lumpia.

Versi

Nama

Seperti halnya android, kita mengenal Kit Kat, Oreo, dlsb.

Maka, kode library ini diberi kode penamaan nama makanan yang ada di pasar. Jadi kalau dibahas jadi enak, kita ngobrolin makanan hehe..

Nomor

Penomoran versi

Misalnya v3.1

  • Versi mayor adalah versi 3

Dimana nomor 3 adalah generasi atau edisi ke-3 dari Library GAS untuk Telegram ini. Versi ini tidak berubah, atau setidaknya tidak akan berubah dalam jangka dekat bilamana belum ada edisi baru lagi.

  • Versi minor adalah 1

Versi minor adalah versi build. Yang akan terus bertambah nilainya lantaran hasil snapshot dari release versi pada GAS.

Jika terdapat nomor minor yang lompat (tidak ada), berarti dicabut rilisnya. Bisa jadi dikarenakan gagal / cacat, atau kesalahan teknis release.

Log History

Silakan cek pada halaman berikut:

4 - Inisiasi

Inisiasi dan Options

RESUME

Table resume semua properti yang melekat pada lumpia.

method params type keterangan
init token
options
string*
json
menginisiasi atau menghubungkan lumpia dengan (token) bot
DEBUG Β  boolean semua pesan masuk dari Telegram diubah outputnya menjadi json. Tidak mempedulikan middleware atau lainnya.
verbose Β  boolean mengaktifkan full logging proses framework saat berada di editor
version Β  Β  menampilkan informasi lumpia yang sedang dipakai saat ini

Berikut ini penjelasan bagaimana mendeklarasikan, atau menginisasi awal object-object pada saat menggunakan lumpia

init

Dipergunakan saat pertama kali atau tiap kali membuat objek lumpia.

Syntax: new lumpia.init(token, options)

  • token adalah token bot yang didapatkan dari botfather

options

Diisi dalam format JSON.

option keterangan type default contoh
prefix_command awalan perintah command pada bot string / prefix_command: '/!.'
log_id id/username untuk mengirimkan log apabil error.
sebaiknya diisi number untuk user id atau chat id
number, string - log_id: 213567634
username tersedia pada v3.7
mengeset username pada command /start@usernamebot
string kosong username: 'strukturbot'

Dapat juga diakses secara langsung (sesudah bot diinisiasi) :

bot.options.log_id = 213567634;
bot.options.prefix_command = '.!/';

DEBUG

Memaksa bot menampilkan JSON apapun yang diterima ke log_id yang diseting saat pertama kali init.

Berguna untuk debugging isi message.

  • default: false

verbose

Mengaktifkan logging secara detail dipergunakan saat debugging.

Verbose hanya berjalan pada mode panel editor pada GAS ketika menjalanan sebuah fungsi ke doPost atau handleUpdate().

Di bot tidak ada perbedaan apa-apa. Matikan mode verbose ini jika sudah tahap produksi, agar tidak terlalu banyak script bekerja.

  • default: false;
lumpia.verbose = true;

version

Untuk mengetahui versi lumpia yang sedang dipergunakan.

Syntax: lumpia.version

Hasil berupa tipe data object (json) bersifat informasi.

field keterangan
active versi yang aktif saat ini
number selalu 3, sesuai generasi yang direlease
build nomor saat di build, terus bertambah
name nama code library
full penyebuatan secara penuh
group informasi grup
url informasi url

5 - Bot

Base variable bot sebagai object base dari lumpia

RESUME

Resume method dan params yang dipergunakan oleh bot.

method params type keterangan
telegram Β  class untuk mengakses dari bot api telegram
tg Β  Β  alias dari telegram
options Β  json akses mengubah options secara langsung
token Β  string set/get token
log_id Β  number/string set/get target id log. Shorthand untuk options.log_id
handleUpdate data json memproses data json
doPost data Β  memproses data POST pada function doPost
on tipe string menangkap proses event atas tipe update tertentu
start fn function handle proses command start
cmd event [string/regex] handle proses command secara umum
command event [string/regex] alias untuk cmd
hears event [string/regex] handle pesan text dari user
hear event [string/regex] alias untuk hears
use fn function mendaftarkan midleware
action fn function handle callback data
middleware fn function alias untuk use
compose fn function menambahkan function pada handler message

Penjelasan

bot

Adalah variable umum (kamu boleh menggantinya jika mau), yang berupa object gabungan segala middleware, method atau fungsi-fungsi, dan data-data penunjang lainnya.

Seperti halnya pada sistem lainnya (Ruby, Go, NodeJS, PHP, dsb), menggunakan bot sebagai variable untuk menghandlenya.

Pendeklarasian

Contohnya sebagai berikut:

const token = '123:abc';
const bot = new lumpia.init(token);

bot menjadi sebuah object sebagai perwakilan atas bot Telegram dengan ‘jiwa’ token-nya.

Token bot adalah identitasnya. Sehingga misalnya, botnya adalah belarGASbot dengan token 123:abc. Maka ketika kita coding, menyebut bot adalah si belajarGASbot nya (yang telah disambungkan dengan identias token).

Amsal

Sebagai permisalan dalam kehidupan ini, adalah sebagai berikut:

  • botfather adalah ortu yang melahirkan bot
  • Ada permintaan nama, karena belum pernah ada.. kemudian diberilah nama belajarGASBot
  • Selanjutnya mendapatkan token sebagai nomor identitas (Akta Lahir) nya.
  • bot dikalungkan token sebagai tanda peserta. Yakni di deklarasikan, diumumkan.. Wooi si bot ini adalah pengenal untuk belajarGASbot

Sehingga, menyebut bot adalah menyebut object yang telah ditentukan tersebut.

Sebagaimana manusia, bot memiliki fungsi atau istilahnya disebut method.

Kalau manusia bisa makan, minum, jalan-jalan, kencan, dan lainnya. Maka bot memiliki method untuk mengirim pesan, kirim gambar, suara, kick orang, dan lain lain.

Mengenal Method Bot

Contoh fungsi dari telegram.. yakni mengirim pesan. Maka, cara mengaksesnya adalah:

bot.telegram.sendMessage(chat_id, text)

Terdapat 3 field pada susunan diatas:

  • bot penyebutan / pemanggilan bot kita
  • telegram method atau fungsi dari/untuk/ke Telegram
  • sendMessage menjalankan fungsi untuk mengirim pesan.

Fungsi kirim pesan (sendMessage) sendiri memiliki kelengkapan minimal 2 syarat agar terkirim:

  • chat_id adalah ruangan obrolan
  • text adalah isi pesan yang akan dikirim.

Misalnya, mau berkirim pesan ke ruangan (grup) yang memiliki id -10010000001, maka:

bot.telegram.sendMessage(-10010000001, 'Halo Brok!');

maka bot akan mengirim pesan Halo Brok! ke ruangan ber kode id -10010000001.

Darimana kode ruangan (chat_id) ini berasal? Chat ID ditentukan oleh telegram. Kita tidak bisa menentukan sendiri kodenya. Namun kita bisa mengetahui ID nya dengan beberapa cara yang (insyaAllah) nanti akan dijelaskan pada halaman lainnya.

Implementasi GAS

// token bot dari bapak bot
const token = '123:abc';  

// adminbot variable untuk chat_id: boleh id kamu sendiri, boleh id grup
const adminbot = 213567634;   // ini adalah id saya, @hasanudinhs

// inisiasi bot
const bot = new lumpia.init(token);

// fungsi mengirim pesan
function sendMessage() {
  let result = bot.tg.sendMessage(adminbot, 'halo mas brok');
  Logger.log(JSON.stringify(result, null, 2));
}

Kemudian jalankan fungsi tersebut pada Google Apps Script. Cara menjalankannya, bisa disimak pada materi menjalankan fungsi.

Jika berhasil, pesan kamu akan terkirim. Dan pada program, mendapatkan log sendMessage.

Semoga penjelasan sederhana ini bisa dimengerti :-)


Method dan Params

options

Secara fungsi sama seperti options dalam inisiasi.

Namun pada bot dapat diakses secara langsung sebagai setter atau getter.

bot.options.log_id = 213567634;
bot.options.prefix_command: '.!/';
bot.options.username: 'strukturbot';

token

Use this property to get/set bot token.

bot.token = [string]

Log ID

Use this property to get/set bot options log_id.

Alias bot.options.log_id

bot.log_id = [number/string]

doPost

memproses data POST pada function doPost buil-in pada Google Apps Script

bot.doPost(e)

Param Type Description
e data data post

Contoh:

function doPost(e) {
  bot.doPost(e);
}

on

Menangkap event yang disediakan atas tangkapan ctx.broadcast

bot.on(updateTypes, fn)

Param Type Description
updateTypes string/string[] Update type
fn function function

Contoh:

bot.on('photo', ctx => console.log(ctx.photo));

hears

Menangkap dan memproses pesan yang bertipe text.

Alias: hear

bot.hears(triggers, fn)

Param Type Description
triggers string/string[]/RegEx/RegEx[] Triggers
fn function function

command

Command handling.

Alias: cmd

bot.command(commands, fn)

Param Type Description
commands string/string[] Commands
fn function function

start

Handler for /start command.

bot.start(fn)

Param Type Description
fn function function

Dapat menghandle juga beberapa kondisi sebagai berikut :

  • /start@namabot jika nama bot di-set pada parameter username saat inisiasi (lumpia.init) pada options
  • PAYLOAD dapat diakses pada ctx.payload jika terdapat data yang dikirimkan.

action

Registers for handling callback_data actions with string or regular expressions.

bot.action(triggers, fn)

Param Type Description
triggers string/string[]/RegEx/RegEx[] Triggers
fn function function

use

Register a middleware.

Alias middleware

bot.use(fn)

fn is function. With Parameters:

Param Type Description
ctx context context
next function next step

6 - Telegram

Semua berkenaan dengan method dari bot api telegram

RESUME

Table resume semua properti yang melekat pada bot.telegram.


bot.telegram dapat juga disingkat menjadi bot.tg

variable bot bisa apa saja. Oleh karena dalam list ini, cukup dituliskan method telegram agar disesuaikan dengan variable penyertanya sendiri.

callApi

Main method to call api telegram.

telegram.callApi(method, data)
Param Type Description
method string method of Bot Api Telegram
data json params of Bot Api Telegram

addStickerToSet

Use this method to add a new sticker to a set created by the bot.

telegram.addStickerToSet(ownerId, name, stickerData) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
ownerId string User identifier of sticker set owner
name string Sticker set name
stickerData Object Sticker data({png_sticker: ‘stiker file’, emojis: ‘πŸ˜‰’, mask__position: '' })

answerCallbackQuery

alias untuk answerCbQuery

answerCbQuery

Use this method to send answers to callback queries.

telegram.answerCbQuery(callbackQueryId, text, [showAlert], [extra]) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
callbackQueryId string Query id
[text] string Notification text
[showAlert] bool Show alert instead of notification
[extra] object Extra parameters

answerGameQuery

Use this method to send answers to game query.

telegram.answerGameQuery(callbackQueryId, url)

Param Type Description
callbackQueryId string Query id
url string Notification text

answerShippingQuery

Use this method to send answers to shipping query.

telegram.answerShippingQuery(shippingQueryId, ok, shippingOptions, [errorMessage])

Param Type Description
shippingQueryId string Shipping Query id
ok bool Specify True if delivery to the specified address is possible
shippingOptions object Shipping Options
[errorMessage] string Error message in human readable form

answerPreCheckoutQuery

Use this method to send answers to shipping query.

telegram.answerPreCheckoutQuery(preCheckoutQueryId, ok, [errorMessage])

Param Type Description
preCheckoutQueryId string Shipping Query id
ok bool Specify True if everything is alright (goods are available, etc.)
[errorMessage] string Error message in human readable form

answerInlineQuery

Use this method to send answers to an inline query.

telegram.answerInlineQuery(inlineQueryId, results, [extra])

Param Type Description
inlineQueryId string Query id
results object[] Results
[extra] object Extra parameters

approveChatJoinRequest

Use this method to approve a chat join request.

telegram.approveChatJoinRequest(chatId, userId, [extra])

Param Type Description
chatId number/string Chat id
userId number User id
[extra] object Extra parameters

banChatSenderChat

Use this method to ban a channel chat in a supergroup or a channel.

banChatSenderChat(chatId, senderChatId, extra) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
senderChatId number Sender id
[extra] object Extra parameters

createNewStickerSet

Use this method to create new sticker set owned by a user.

telegram.createNewStickerSet(ownerId, name, title, stickerData, [isMasks]) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
ownerId string User identifier of sticker set owner
name string Sticker set name
title string Sticker set title
stickerData object Sticker data({png_sticker: ‘stiker file’, emojis: ‘πŸ˜‰’, mask__position: '' })
[isMasks] bool Pass True, if a set of mask stickers should be created

declineChatJoinRequest

Use this method to decline a chat join request.

telegram.declineChatJoinRequest(chatId, userId, [extra])

Param Type Description
chatId number/string Chat id
userId number User id
[extra] object Extra parameters

deleteChatStickerSet

Use this method to delete a group sticker set from a supergroup.

telegram.deleteChatStickerSet(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id

deleteMessage

Use this method to delete bot messages.

telegram.deleteMessage(chatId, messageId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
messageId string Message id

setStickerSetThumb

Use this method to set the thumbnail of a sticker set.

telegram.setStickerSetThumb(name, userId, [thumb]) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
name string Sticker set name
userId string User identifier of the sticker set owner
thumb File A PNG image with the thumbnail, must be up to 128 kilobytes in size and have width and height exactly 100px, or a TGS animation with the thumbnail up to 32 kilobytes in size

deleteStickerFromSet

Use this method to delete a sticker from a set created by the bot.

telegram.deleteStickerFromSet(stickerId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
stickerId string File identifier of the sticker

editMessageCaption

Use this method to edit captions of messages sent by the bot or via the bot.

telegram.editMessageCaption(chatId, messageId, inlineMessageId, caption, [extra])

Param Type Description
chatId number/string Chat id
messageId string Message id
inlineMessageId string Inline message id
caption string Caption
[extra] object Extra parameters

editMessageMedia

Use this method to edit media of messages sent by the bot or via the bot.

telegram.editMessageMedia(chatId, messageId, inlineMessageId, media, [extra])

Param Type Description
chatId number/string Chat id
messageId string Message id
inlineMessageId string Inline message id
media InputMedia InputMedia
[extra] object Extra parameters

editMessageLiveLocation

Use this method to edit live location messages sent by the bot or via the bot.

telegram.editMessageLiveLocation(latitude, longitude, chatId, messageId, inlineMessageId, [markup]) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
latitude string Latitude of new location
longitude string Longitude of new location
chatId number/string Chat id
messageId string Message id
inlineMessageId string Inline message id
[markup] object Keyboard markup
[extra] object Extra parameters

editMessageReplyMarkup

Use this method to edit only the reply markup of messages sent by the bot or via the bot.

telegram.editMessageReplyMarkup(chatId, messageId, inlineMessageId, markup, [extra])

Param Type Description
chatId number/string Chat id
messageId string Message id
inlineMessageId string Inline message id
markup object Keyboard markup
[extra] object Extra parameters

editMessageText

Use this method to edit text messages sent by the bot or via the bot.

telegram.editMessageText(chatId, messageId, inlineMessageId, text, [extra])

Param Type Description
chatId number/string Chat id
messageId string Message id
inlineMessageId string Inline message id
text string Message
[extra] object Extra parameters

forwardMessage

Forwards message.

telegram.forwardMessage(chatId, fromChatId, messageId, [extra])

Param Type Description
chatId number/string Target Chat id
fromChatId number/string Source Chat id
messageId number Message id
[extra] object Extra parameters

sendCopy

Sends message copy.

telegram.sendCopy(chatId, message, [extra])

Param Type Description
chatId number/string Target Chat id
message object Message
[extra] object Extra parameters

copyMessage

Use this method to copy messages of any kind.

telegram.copyMessage(chatId, message, [extra])

Param Type Description
chatId number/string Target Chat id
fromChatId number/string Source Chat id
messageId number Message id
[extra] object Extra parameters

getWebhookInfo

Use this method to get current webhook status. Requires no parameters. On success, returns a WebhookInfo object. If the bot is using getUpdates, will return an object with the url field empty.

telegram.getWebhookInfo()

getChat

Use this method to get up to date information about the chat (current name of the user for one-on-one conversatio ns, current username of a user, group or channel, etc.).

telegram.getChat(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id

getChatAdministrators

Use this method to get a list of administrators in a chat. On success, returns an Array of ChatMember objects that contains information about all chat administrators except other bots. If the chat is a group or a supergroup and no administrators were appointed, only the creator will be returned.

telegram.getChatAdministrators(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id

setGameScore

Use this method to set the score of the specified user in a game. On success, if the message was sent by the bot, returns the edited Message, otherwise returns True. Returns an error, if the new score is not greater than the user’s current score in the chat.

telegram.setGameScore(userId, score, inlineMessageId, chatId, messageId, [editMessage], [force]) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
userId number Target User id
score number Target User id
inlineMessageId string Inline message id
chatId number/string Target Chat id
messageId number/string Message id
[editMessage] boolean edit target message, default value is True
[force] boolean Pass True, if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters

getGameHighScores

Use this method to get data for high score tables. Will return the score of the specified user and several of his neighbors in a game. On success, returns an Array of GameHighScore objects.

telegram.getGameHighScores(userId, inlineMessageId, chatId, messageId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
userId number\ Target User id
inlineMessageId string Inline message id
chatId number/string Target Chat id
messageId number/string Message id

getChatMember

Use this method to get information about a member of a chat.

telegram.getChatMember(chatId, userId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
userId number User identifier

getChatMembersCount

Use this method to get the number of members in a chat.

telegram.getChatMembersCount(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id

getFile

Returns basic info about a file and prepare it for downloading.

telegram.getFile(fileId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
fileId string File id

Returns link to file.

telegram.getFileLink(fileId)

Param Type Description
fileId string/object File id or file object

getMe

Returns basic information about the bot.

telegram.getMe() πŸ‘‰πŸΌ πŸ“‘

getMyCommands

Use this method to get the current list of the bot’s commands. Requires no parameters. Returns Array of BotCommand on success.

telegram.getMyCommands() πŸ‘‰πŸΌ πŸ“‘

getStickerSet

Use this method to get a sticker set.

telegram.getStickerSet(name)

Param Type Description
name string Short name of the sticker set
πŸ‘‰πŸΌ πŸ“‘

getUserProfilePhotos

Returns profiles photos for provided user.

telegram.getUserProfilePhotos(userId, [offset], [limit]) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
userId number Chat id
[offset] number Offset
[limit] number Limit

setChatPermissions

Use this method to set default chat permissions for all members.

telegram.setChatPermissions(chatId, permissions)

Param Type Description
chatId number/string Chat id
permissions object New default chat permissions

banChatMember

Use this method to ban a user in a group, a supergroup or a channel. In the case of supergroups and channels, the user will not be able to return to the chat on their own using invite links, etc.

telegram.banChatMember(chatId, userId, [extra])

Param Type Description
chatId number/string Chat id
userId number User id
[extra] object Extra parameters

restrictChatMember

Use this method to restrict a user in a supergroup.

telegram.restrictChatMember(chatId, userId, [extra])

Param Type Description
chatId number/string Chat id
userId number User id
[extra] object Extra parameters

promoteChatMember

Use this method to promote or demote a user in a supergroup or a channel.

telegram.promoteChatMember(chatId, userId, [extra])

Param Type Description
chatId number/string Chat id
userId number User id
[extra] object Extra parameters

setChatAdministratorCustomTitle

New custom title for the administrator; 0-16 characters, emoji are not allowed

telegram.setChatAdministratorCustomTitle(chatId, userId, [extra])

Param Type Description
chatId number/string Chat id
userId number User id
title string Custom title

Use this method to export an invite link to a supergroup or a channel.

telegram.exportChatInviteLink(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id

setChatPhoto

Use this method to set a new profile photo for the chat.

telegram.setChatPhoto(chatId, photo) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
photo File New chat photo

deleteChatPhoto

Use this method to delete a chat photo.

telegram.deleteChatPhoto(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id

setChatTitle

Use this method to change the title of a chat.

telegram.setChatTitle(chatId, title) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
title string New chat title, 1-255 characters

setChatDescription

Use this method to change the description of a supergroup or a channel.

telegram.setChatDescription(chatId, description) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
description string New chat description, 0-255 characters

setChatStickerSet

Use this method to set a new group sticker set for a supergroup.

telegram.setChatStickerSet(chatId, stickerSetName) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
stickerSetName string Name of the sticker set

pinChatMessage

Use this method to pin a message in a supergroup.

telegram.pinChatMessage(chatId, messageId, [extra])

Param Type Description
chatId number/string Chat id
messageId number Message id
[extra] object Extra parameters

unpinChatMessage

Use this method to unpin a message in a supergroup chat.

telegram.unpinChatMessage(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
[extra] object Extra parameters

unpinAllChatMessages

Use this method to clear the list of pinned messages in a chat

telegram.unpinAllChatMessages(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id

leaveChat

Use this method for your bot to leave a group, supergroup or channel.

telegram.leaveChat(chatId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id

deleteWebhook

Removes webhook integration.

telegram.deleteWebhook() πŸ‘‰πŸΌ πŸ“‘

Param Type Description
[extra] object Extra parameters

sendAudio

Sends audio.

telegram.sendAudio(chatId, audio, [extra])

Param Type Description
chatId number/string Chat id
audio File Document
[extra] object Extra parameters

sendGame

Sends game.

telegram.sendGame(chatId, gameName, [extra])

Param Type Description
chatId number/string Chat id
gameName String Game short name
[extra] object Extra parameters

sendChatAction

Sends chat action.

telegram.sendChatAction(chatId, action)

Param Type Description
chatId number/string Chat id
action string Chat action

sendContact

Sends document.

telegram.sendContact(chatId, phoneNumber, firstName, [extra])

Param Type Description
chatId number/string Chat id
phoneNumber string Contact phone number
firstName string Contact first name
[extra] object Extra parameters

sendDice

Sends dice.

telegram.sendDice(chatId, [extra])

Param Type Description
chatId number/string Chat id
[extra] object Extra parameters

sendDocument

Sends document.

telegram.sendDocument(chatId, doc, [extra])

Param Type Description
chatId number/string Chat id
doc File Document
[extra] object Extra parameters

sendLocation

Sends location.

telegram.sendLocation(chatId, latitude, longitude, [extra])

Param Type Description
chatId number/string Chat id
latitude number Latitude
longitude number Longitude
[extra] object Extra parameters

sendMessage

Sends text message.

telegram.sendMessage(chatId, text, [extra])

Param Type Description
chatId number/string Chat id
text string Message
[extra] object Extra parameters

sendPhoto

Sends a photo.

telegram.sendPhoto(chatId, photo, [extra])

Param Type Description
chatId number/string Chat id
photo File Photo
[extra] object Extra parameters

sendMediaGroup

Sends media album.

telegram.sendMediaGroup(chatId, media, [extra])

Param Type Description
chatId number/string Chat id
media InputMedia[] Media array
[extra] object Extra parameters

sendSticker

Sends sticker.

telegram.sendSticker(chatId, sticker, [extra])

Param Type Description
chatId number/string Chat id
sticker File Document
[extra] object Extra parameters

setStickerPositionInSet

Use this method to move a sticker in a set created by the bot to a specific position.

telegram.setStickerPositionInSet(sticker, position)

Param Type Description
sticker string File identifier of the sticker
position number New sticker position in the set, zero-based

sendVenue

Sends venue information.

telegram.sendVenue(chatId, latitude, longitude, title, address, [extra])

Param Type Description
chatId number/string Chat id
latitude number Latitude
longitude number Longitude
title string Venue title
address string Venue address
[extra] object Extra parameters

sendInvoice

Sends invoice.

telegram.sendInvoice(chatId, invoice)

Param Type Description
chatId number/string Chat id
invoice object Invoice object

sendVideo

Sends video.

telegram.sendVideo(chatId, video, [extra])

Param Type Description
chatId number/string Chat id
video File Document
[extra] object Extra parameters

sendAnimation

Sends video.

telegram.sendAnimation(chatId, animation, [extra])

Param Type Description
chatId number/string Chat id
animation File Document
[extra] object Extra parameters

sendVideoNote

Sends round video.

telegram.sendVideoNote(chatId, video, [extra])

Param Type Description
chatId number/string Chat id
video File Video note file
[extra] object Extra parameters

sendVoice

Sends voice.

telegram.sendVoice(chatId, voice, [extra])

Param Type Description
chatId number/string Chat id
voice File/string File, file id or HTTP URL
[extra] object Extra parameters

sendPoll

Sends a poll.

telegram.sendPoll(chatId, question, options, [extra])

Param Type Description
chatId number/string Chat id
question string Poll question
options string[] Answer options
[extra] object Extra parameters

setMyCommands

Use this method to change the list of the bot’s commands

telegram.setMyCommands(commands)

Param Type Description
commands object[] List of bot commands

sendQuiz

Sends quiz.

telegram.sendQuiz(chatId, question, options, [extra])

Param Type Description
chatId number/string Chat id
question string Poll question
options string[] Answer options
[extra] object Extra parameters

stopPoll

Stops anonymous poll.

telegram.stopPoll(chatId, messageId, [extra])

Param Type Description
chatId number/string Chat id
messageId string Poll message id
options string[] Answer options
[extra] object Extra parameters

stopMessageLiveLocation

Use this method to stop updating a live location message sent by the bot or via the bot (for inline bots) before live_period expires.

telegram.stopMessageLiveLocation(chatId, messageId, inlineMessageId, [markup]) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
messageId string Message id
inlineMessageId string Inline message id
[markup] object Keyboard markup

uploadStickerFile

Use this method to upload a .png file with a sticker for later use in createNewStickerSet and addStickerToSet methods.

telegram.uploadStickerFile(ownerId, stickerFile) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
ownerId string User identifier of sticker file owner
stickerFile File Png image with the sticker

setWebhook

Specifies an url to receive incoming updates via an outgoing webhook.

telegram.setWebhook(url, [extra]) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
url string Public url for webhook
[extra] object Extra parameters

unbanChatMember

Use this method to unban a previously kicked user in a supergroup.

telegram.unbanChatMember(chatId, userId) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
userId number User id
[extra] object Extra parameters

unbanChatSenderChat

Use this method to unban a previously banned channel chat in a supergroup or channel.

unbanChatSenderChat(chatId, senderChatId, extra) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
chatId number/string Chat id
senderChatId number Sender id
[extra] object Extra parameters

setPassportDataErrors

Informs a user that some Telegram Passport elements they provided contains errors. The user will not be able to re-submit their Passport to you until the errors are fixed (the contents of the field for which you returned the error must change).

telegram.setPassportDataErrors(errors) πŸ‘‰πŸΌ πŸ“‘

Param Type Description
[errors] PassportElementError[] An array describing the errors

7 - Context

Variable yang menghandle update pesan dari Telegram dan metod-metod respon cepat terhadapnya

Dimana itu ctx ?

Lihatlah code berikut:

bot.cmd('ping', ctx => ctx.reply('Pong!'));

Keterangan:

  • ctx adalah context itu.
  • reply adalah method (shorthand) untuk menghandle pesan

Berikut kerangka isi dari ctx.

Context

Context dibuat per request dan berisi beberapa properti:

Property Description
ctx.telegram Telegram client instance
ctx.tg alias ctx.telegram
ctx.updateType Update type (message, inline_query, etc.)
[ctx.updateSubTypes] Update subtypes (text, sticker, audio, etc.)
[ctx.message] Received message
[ctx.editedMessage] Edited message
[ctx.inlineQuery] Received inline query
[ctx.chosenInlineResult] Received inline query result
[ctx.callbackQuery] Received callback query
[ctx.shippingQuery] Shipping query
[ctx.preCheckoutQuery] Pre-checkout query
[ctx.channelPost] New incoming channel post of any kind β€” text, photo, sticker, etc.
[ctx.editedChannelPost] New version of a channel post that is known to the bot and was edited
[ctx.poll] New version of a anonymous poll that is known to the bot and was changed
[ctx.pollAnswer] This object represents an answer of a user in a non-anonymous poll.
[ctx.chat] Current chat info
[ctx.from] Sender info
[ctx.match] Regex match
[ctx.broadcast] update type bot.on

Shortcuts

Context shortcuts for message update:

Shortcut Bound to Available Params
addStickerToSet telegram.addStickerToSet
createNewStickerSet telegram.createNewStickerSet
deleteChatPhoto telegram.deleteChatPhoto
deleteMessage telegram.deleteMessage
deleteStickerFromSet telegram.deleteStickerFromSet
exportChatInviteLink telegram.exportChatInviteLink
forwardMessage telegram.forwardMessage
getChat telegram.getChat
getChatAdministrators telegram.getChatAdministrators
getChatMember telegram.getChatMember
getChatMembersCount telegram.getChatMembersCount
getMyCommands telegram.getMyCommands
getStickerSet telegram.getStickerSet
leaveChat telegram.leaveChat
pinChatMessage telegram.pinChatMessage
reply telegram.sendMessage text, extra
replyWithAudio telegram.sendAudio
replyWithChatAction telegram.sendChatAction
replyWithDice telegram.sendDice
replyWithDocument telegram.sendDocument
replyWithGame telegram.sendGame
replyWithHTML telegram.sendMessage text, extra
replyWithInvoice telegram.sendInvoice
replyWithLocation telegram.sendLocation
replyWithMarkdown telegram.sendMessage text, extra
replyWithMediaGroup telegram.sendMediaGroup
replyWithPhoto telegram.sendPhoto
replyWithPoll telegram.sendPoll
replyWithQuiz telegram.sendQuiz
replyWithSticker telegram.sendSticker
replyWithVideo telegram.sendVideo
replyWithVideoNote telegram.sendVideoNote
replyWithVoice telegram.sendVoice
setChatDescription telegram.setChatDescription
setChatPhoto telegram.setChatPhoto
setChatTitle telegram.setChatTitle
setMyCommands telegram.setMyCommands
setPassportDataErrors telegram.setPassportDataErrors
setStickerPositionInSet telegram.setStickerPositionInSet sticker, position
setStickerSetThumb telegram.setStickerSetThumb
setStickerSetThumb telegram.setStickerSetThumb
stopPoll telegram.stopPoll
unpinChatMessage telegram.unpinChatMessage
unpinAllChatMessages telegram.unpinAllChatMessages
uploadStickerFile telegram.uploadStickerFile
banChatMember telegram.banChatMember
unbanChatMember telegram.unbanChatMember
replyIt telegram.sendMessage text, extra
replyItWithAudio telegram.sendAudio (v3.6) audio, extra
replyItWithDocument telegram.sendDocument (v3.6) doc, extra
replyItWithHTML telegram.sendMessage (v3.6) text, extra
replyItWithLocation telegram.sendLocation (v3.6) lat, lon, extra
replyItWithMarkdown telegram.sendMessage (v3.6) text, extra
replyItWithPhoto telegram.sendPhoto (v3.6) photo, extra
replyItWithSticker telegram.sendSticker (v3.6) sticker, extra
replyItWithVideo telegram.sendVideo (v3.6) video, extra

Context shortcuts for callback_query update:

Shortcut Bound to Available Params
addStickerToSet telegram.addStickerToSet
answerCbQuery telegram.answerCbQuery text, showAlert, extra
answerGameQuery telegram.answerGameQuery url
createNewStickerSet telegram.createNewStickerSet
deleteChatPhoto telegram.deleteChatPhoto
deleteMessage telegram.deleteMessage
deleteStickerFromSet telegram.deleteStickerFromSet
editMessageCaption telegram.editMessageCaption caption, extra
editMessageMedia telegram.editMessageMedia media, extra
editMessageReplyMarkup telegram.editMessageReplyMarkup markup
editMessageText telegram.editMessageText text, extra
exportChatInviteLink telegram.exportChatInviteLink
forwardMessage telegram.forwardMessage
getChat telegram.getChat
getChatAdministrators telegram.getChatAdministrators
getChatMember telegram.getChatMember
getChatMembersCount telegram.getChatMembersCount
getStickerSet telegram.getStickerSet
leaveChat telegram.leaveChat
pinChatMessage telegram.pinChatMessage
reply telegram.sendMessage text, extra
replyWithAnimation telegram.sendAnimation animation, extra
replyWithAudio telegram.sendAudio
replyWithChatAction telegram.sendChatAction
replyWithDice telegram.sendDice
replyWithDocument telegram.sendDocument
replyWithGame telegram.sendGame
replyWithHTML telegram.sendMessage text, extra
replyWithInvoice telegram.sendInvoice
replyWithLocation telegram.sendLocation
replyWithMarkdown telegram.sendMessage text, extra
replyWithMediaGroup telegram.sendMediaGroup
replyWithPhoto telegram.sendPhoto
replyWithPoll telegram.sendPoll
replyWithSticker telegram.sendSticker
replyWithVideo telegram.sendVideo
replyWithVideoNote telegram.sendVideoNote
replyWithVoice telegram.sendVoice
setChatDescription telegram.setChatDescription
setChatPhoto telegram.setChatPhoto
setChatTitle telegram.setChatTitle
setStickerPositionInSet telegram.setStickerPositionInSet sticker, position
setStickerSetThumb telegram.setStickerSetThumb
stopPoll telegram.stopPoll
unpinChatMessage telegram.unpinChatMessage
unpinAllChatMessages telegram.unpinAllChatMessages
uploadStickerFile telegram.uploadStickerFile
unbanChatMember telegram.unbanChatMember
replyIt telegram.sendMessage text, extra
replyItWithAudio telegram.sendAudio (v3.6) audio, extra
replyItWithDocument telegram.sendDocument (v3.6) doc, extra
replyItWithHTML telegram.sendMessage (v3.6) text, extra
replyItWithLocation telegram.sendLocation (v3.6) lat, lon, extras
replyItWithMarkdown telegram.sendMessage (v3.6) text, extra
replyItWithPhoto telegram.sendPhoto (v3.6) photo, extra
replyItWithSticker telegram.sendSticker (v3.6) sticker, extra
replyItWithVideo telegram.sendVideo (v3.6) video, extra

Context shortcuts for inline_query update:

Shortcut Bound to
answerInlineQuery telegram.answerInlineQuery

Context shortcuts for shipping_query update:

Shortcut Bound to
answerShippingQuery telegram.answerShippingQuery

Context shortcuts for pre_checkout_query update:

Shortcut Bound to
answerPreCheckoutQuery telegram.answerPreCheckoutQuery

Example

Check in this code:

const bot = new lumpia.init(token)

bot.command('quit', (ctx) => {
  // Explicit usage
  ctx.telegram.leaveChat(ctx.message.chat.id)
})

bot.on('text', (ctx) => {
  // Explicit usage
  ctx.telegram.sendMessage(ctx.message.chat.id, `Echo: ${ctx.message.text}`)
})

bot.on('callback_query', (ctx) => {
  // Explicit usage
  ctx.telegram.answerCbQuery(ctx.callbackQuery.id)
})

bot.on('inline_query', (ctx) => {
  const result = []
  // Explicit usage
  ctx.telegram.answerInlineQuery(ctx.inlineQuery.id, result)
})
const bot = new lumpia.init(token)

bot.command('quit', (ctx) => {
  // Explicit usage
  ctx.tg.leaveChat(ctx.chat.id)
})

bot.on('text', (ctx) => {
  // Explicit usage
  ctx.tg.sendMessage(ctx.chat.id, `Echo: ${ctx.message.text}`)
})

bot.on('callback_query', (ctx) => {
  // Explicit usage
  ctx.tg.answerCbQuery(ctx.callbackQuery.id)
})

bot.on('inline_query', (ctx) => {
  const result = []
  // Explicit usage
  ctx.tg.answerInlineQuery(ctx.inlineQuery.id, result)
})
const bot = new lumpia.init(token)

bot.command('quit', (ctx) => {
  // Using context shortcut
  ctx.leaveChat()
})

bot.on('text', (ctx) => {
  // Using context shortcut
  ctx.reply(`Echo: ${ctx.message.text}`)
})

bot.on('callback_query', (ctx) => {
  // Using context shortcut
  ctx.answerCbQuery()
})

bot.on('inline_query', (ctx) => {
  const result = []
  // Using context shortcut
  ctx.answerInlineQuery(result)
})

Kesinambungan

Adalah konsep jika dimasukkan sebuah trigger, jika trigger ditemukan maka tetep diteruskan ke trigger selanjutnya.

Untuk dapat berkesinambungan, perlu dijalankan fungsi next() pada context.

const bot = new lumpia.init(token)

bot.cmd('ping', (ctx) => {
  // User typing: /ping
  ctx.reply('pong!')
})

// tidak akan dieksekusi
bot.cmd('ping', (ctx) => {  
  // User typing: /ping
  ctx.reply('pong 2!');
})
const bot = new lumpia.init(token)

bot.cmd('ping', (ctx, next) => {
  // User typing: /ping
  ctx.reply('pong!');
  next();
})

// perintah tetap dieksekusi
bot.cmd('ping', (ctx) => {  
  // User typing: /ping
  ctx.reply('pong 2!')
})

8 - Update Type

Tipe-tipe update yang tersedia untuk context

Update Type

Di pergunakan saat deteksi trigger on.

bot.on('message', fn);
bot.on('photo', fn);

// ... etc

Tipe update tersedia adalah sebagai berikut. Keterangan masing-masing tipe ada di dalam referensi sumber asli.

Type

  • raw
  • message
  • edited_message
  • channel_post
  • edited_channel_post
  • inline_query
  • chosen_inline_result
  • callback_query
  • shipping_query
  • pre_checkout_query
  • poll
  • poll_answer
  • my_chat_member
  • chat_member

Ref: update

Sub Type

  • text
  • reply_to_message
  • reply_markup
  • via_bot
  • edit_date
  • author_signature
  • entities
  • animation
  • audio
  • document
  • photo
  • sticker
  • video
  • video_note
  • voice
  • caption
  • caption_entities
  • media_group_id
  • contact
  • dice
  • game
  • poll
  • venue
  • location
  • new_chat_members
  • left_chat_member
  • new_chat_title
  • new_chat_photo
  • delete_chat_photo
  • group_chat_created
  • supergroup_chat_created
  • channel_chat_created
  • message_auto_delete_timer_changed
  • migrate_to_chat_id
  • migrate_from_chat_id
  • pinned_message
  • invoice
  • successful_payment
  • connected_website
  • passport_data
  • proximity_alert_triggered
  • voice_chat_scheduled
  • voice_chat_started
  • voice_chat_ended
  • voice_chat_participants_invited

Ref: message

Entity Type

  • mention @username
  • hashtag #hashtag
  • cashtag $USD
  • bot_command /start@jobs_bot
  • url https://telegram.org
  • email do-not-reply@telegram.org
  • phone_number +1-212-555-0123
  • bold bold text
  • italic italic text
  • underline underlined text
  • strikethrough strikethrough text
  • code monowidth string
  • pre monowidth block
  • text_link for clickable text URLs
  • text_mention for users without usernames

Ref: Entity

Tips

Informasi bot type update dapat ditemukan pada:

ctx.broadcast dan ctx.updateType

9 - Helper

Koleksi method bantuan guna keperluaan saat development

Inisiasi

Untuk inisiasi awal

const helper = lumpia.helper;

// atau

const Helper = lumpia.helper;

Silakan menggunakan huruf besar atau kecil untuk konstantanya, sesuaikan sendiri dengan kebiasaan masing-masing.

Helper

Koleksi method untuk membantu saat development.

clearHTML

membersihkan text dari tags html (meng-escape), sehingga tidak terjadi error saat berada pada parse_mode HTML.

Format:

clearHTML(text)
let text = 'Bilangan 12 < 23';

let pesan = helper.clearHTML(text);

clearMarkdown

membersihkan text dari tags markdown (meng-escape), sehingga tidak terjadi error saat berada pada parse_mode markdown.

Format:

clearMarkdown(text)
let text = 'Hitungan 2 * 3 adalah 6';

let pesan = helper.clearMarkdown(text);

forEach

seperti forEach pada javascript, namun bisa dipergunakan untuk objek (JSON).

Format:

forEach(object, callback);

callback memiliki 2 parameter:

  • contain
  • index
var data = [ 'satu', 'dua', 'tiga']; // contoh tipe array
var data = { satu: 1, dua: 2};  // contoh tipe json

helper.forEach(data, (isi, index) => {
    console.log(index, isi);
});

isIn

Memerika apakah suatu nilai terdapat pada sebuah array

Format:

isIn(list, index)
let admin = [ 123, 456 ];
let id = msg.from.id;

if (helper.isIn(admin, id)) {
    console.log('Dia adalah admin!');
}

random

membuat hasil acak untuk bilangan atau array.

Format:

random(list);
random(min, max);

params:

  • list bertipe array
  • min dan max bertipe integer
let list = ['aku', 'kamu', 'dia'];

helper.random(list) // hasil acakan dari aku, kamu, atau dia
helper.random(0,100) // hasil acakan antara angka 1 - 100

textBlob

membuat text bertipe blob

Format:

textBlob(namaFile, text)

params:

  • namaFile tanpa ekstensi, otomatis akan ditambahkan .txt
  • text bertipe string
let blob = helper.textBlob('namaFile', 'Hasanudin H Syafaat');

Output

Tipe output pada Google Apps Script dalam mode web app.

Secara umum dapat dipergunakan untuk merespon fungsi pada doPost(e).

Ada 3 yang tersedia:

  • outputText(text) menghasilkan keluaran bertipe text
  • outputJSON(data) menghasilkan keluaran bertipe JSON, biasanya cocok untuk pembuatan REST API
  • outputHTML(html) menghasilkan keluaran bertipe HTML, biasanya cocok untuk bertipe website biasa

nama

alias: name

menghasilkan format nama user, baik plain text ataupun html.

Format:

name(object);

return:

  • first
  • last
  • fullname
  • username
  • html
 let nama = helper.name(ctx.from);
 
 console.log(nama.fullname);

typeCheck

mengecek tipe suatu variable

Format:

typeCheck(data);
let data = [ 1, 2, 3];

let tipe = helper.typeCheck(data);

console.log(tipe) // result: array
if (tipe === 'array') console.log('Data bertipe Array!');

compactOptions

membersihkan objek dari null / undefined.

Format:

compactOptions(data);
let options = { satu: 1, kosong: null, tidak: undefined };

compactOptions(options);

hasProp

Memeriksa apakah objek tertentu memiliki properti dengan nama tertentu.

Format:

hasProp(object, key);
let obj = { 'foo': 'bar', 'baz': () => {} }

hasProp(obj, 'foo') // true
hasProp(obj, 'baz') // true
hasProp(obj, 'abc') // false

hasPropType

Checks if a given object has a property with a given name.

Furthermore performs a typeof check on the property if it exists

let obj = { 'foo': 'bar', 'baz': () => {} }

hasPropType(obj, 'foo', 'string') // true
hasPropType(obj, 'baz', 'function') // true
hasPropType(obj, 'abc', 'number') // false

Button

bantuan untuk pembuatan keyboard inline, kompabilitas Lib V1/2.

method params keterangan
text text, data, hide jika ditekan menghasilkan callback data
inline text, data, hide alias dari method text diatas
query text, data bounding ke switch_inline_query
jika ditekan, akan memilih jendala chat yang mana sebagai tujuan
queryChat text, data bounding ke switch_inline_query_current_chat
jika ditekan, pada text box memunculkan username dan text isian. Digunakan untuk bot inline
url text, url, hide jika ditekan akan menuju ke url

Default untuk hide adalah false.

Sample belum dibikin (lagi M 🀣)

Silakan tinggalkan komentar saja jika ingin membantu melengkapi dokumentasi…