Mengirim dan Menerima Pesan
Begitu kamu menjalankan bot dengan bot
, grammY akan menyuplai listener dengan pesan-pesan yang telah dikirim oleh user ke bot kamu. grammY juga menyediakan cara yang mudah untuk membalas pesan-pesan tersebut.
Menerima Pesan
Cara termudah untuk menyimak pesan adalah melalui
bot.on("message", (ctx) => {
const message = ctx.message; // object pesan
});
Selain itu, opsi-opsi lainnya juga tersedia:
// Menangani perintah, misal /start.
bot.command("start", (ctx) => { ... });
// Mencocokkan teks pesan dengan sebuah string atau regular expression (regex).
bot.hears(/echo *(.+)?/, (ctx) => { ... });
Kamu bisa menggunakan fitur auto-complete di code editor untuk melihat semua pilihan yang tersedia, ataupun melihat secara manual daftar method dari sebuah class Composer
.
Baca lebih lanjut tentang pemfilteran untuk jenis pesan tertentu menggunakan
bot
..on()
Mengirim Pesan
Semua method yang dapat digunakan oleh bot (daftar penting) tersedia di object bot
.
// Mengirim sebuah pesan ke pengguna 12345.
await bot.api.sendMessage(12345, "Halo!");
// Selain itu, kamu bisa menambahkan opsi ke object.
await bot.api.sendMessage(12345, "Halo!", {/* opsi lainnya */});
// Memperoleh informasi tentang bot itu sendiri.
const me = await bot.api.getMe();
// Dan lain-lain
Setiap method memiliki opsi tambahan untuk object type Other
, yang memungkinkan kamu untuk menetapkan opsi tambahan ketika memanggil API. Opsi-opsi dari object ini sama persis dengan opsi yang ada di daftar method di link atas tadi. Kamu juga dapat menggunakan fitur auto-complete di code editor untuk melihat semua opsi yang tersedia, ataupun melihat secara manual daftar method dari sebuah class Api
.
Selain itu, coba lihat materi selanjutnya untuk mempelajari bagaimana object context dari suatu listener bisa membuat pengiriman pesan menjadi sangat mudah dilakukan!
Mengirim Pesan dengan Reply
Catatan penerjemah: Kami membedakan kata “balas” dan “reply” agar tidak rancu. Balas berarti membalas chat seperti pada umumnya. Sedangkan reply merujuk ke membalas pesan secara spesifik.
Kamu dapat menggunakan fitur reply
milik Telegram dengan menentukan id pesan yang akan di-reply menggunakan reply
.
bot.hears("ping", async (ctx) => {
// `reply` adalah alias dari `sendMessage` (lihat materi selanjutnya).
await ctx.reply("pong", {
// `reply_to_message_id` akan menentukan untuk me-reply pesan yang mana.
reply_to_message_id: ctx.msg.message_id,
});
});
Perhatikan bahwa dengan mengirim pesan melalui
ctx
BUKAN berarti kamu secara otomatis me-reply pesan begitu saja. Sebaliknya, kamu harus mengisi.reply reply
untuk menentukan pesan mana yang mau di-reply. Function_to _message _id ctx
cuma alias dari.reply ctx
, lihat materi berikutnya..api .send Message
Mengirim Pesan dengan Format Tertentu
Lihat bagian opsi pemformatan di Referensi API Bot Telegram yang ditulis oleh tim Telegram.
Kamu dapat mengirim pesan dengan teks bold, italic, format URL, dan banyak lagi. Ada dua cara untuk melakukannya: Markdown dan HTML. Referensinya bisa dilihat di sini
Markdown
Lihat juga https://
core .telegram .org /bots /api #markdownv2 -style
Kirim pesan dengan markdown di dalamnya, lalu cantumkan parse
.
await bot.api.sendMessage(
12345,
"*Halo\\!* _Selamat datang_ di [grammY](https://grammy.dev)\\.",
{ parse_mode: "MarkdownV2" },
);
HTML
Kirim pesan dengan element HTML di dalamnya, lalu cantumkan parse
.
await bot.api.sendMessage(
12345,
'<b>Halo!</b> <i>Selamat datang</i> di <a href="https://grammy.dev">grammY</a>.',
{ parse_mode: "HTML" },
);
Mengirim File
Pemrosesan file dijelaskan secara lengkap di materi lain.
Reply Paksa (Force Reply)
Force reply berguna jika bot kamu berjalan dalam mode privasi di chat grup.
Saat mengirim pesan, kamu dapat membuat aplikasi Telegram pengguna secara otomatis me-reply pesan tersebut. Artinya, pengguna akan “dipaksa” me-reply pesan bot tadi (kecuali mereka menghapus reply tersebut secara manual). Keuntungannya, bot masih bisa menerima pesan dari pengguna di dalam chat grup meskipun sedang berjalan dalam mode privasi.
Kamu dapat menggunakan force reply seperti ini:
bot.command("start", async (ctx) => {
await ctx.reply(
"Halo! Aku hanya bisa membaca pesan yang secara khusus ditujukan untuk aku!",
{
// Buat aplikasi Telegram pengguna menunjukkan tampilan reply secara otomatis.
reply_markup: { force_reply: true },
},
);
});