Quickstart
Panduan ini membuat bot kecil dengan bentuk produksi: command, middleware, session, error handling, dan graceful shutdown.
- Runtime
- Node.js 18+
- Output
- CJS + ESM
- Types
- Strict TS
Baseline modern
Dual package
Deklarasi tipe tersedia
Install package
npm install vibegramBaseline produksi
Gunakan panduan ini sebagai bentuk produksi minimal: token dari environment variable, global error handling, rate limiting, session, dan graceful shutdown.
Yang dicakup quickstart ini
Dari install package ke bot yang berjalan tanpa melewatkan fondasi keamanan yang dibutuhkan nanti.
Install dan konfigurasi
Tambahkan package dan simpan token di luar source control.
Susun middleware
Gunakan dedupe, rate limit, dan session sebelum handler.
Launch dengan aman
Mulai dari polling lokal, lalu pindah ke webhook untuk produksi.
Install
bash
npm install vibegram dotenvBuat file .env di project aplikasi:
bash
BOT_TOKEN=123456:ganti-tokenJangan commit file .env. Di produksi, isi variable yang sama lewat secret manager host Anda.
Bot
Buat src/bot.ts:
typescript
import 'dotenv/config';
import { Bot, dedupeUpdates, rateLimit, session } from 'vibegram';
const token = process.env.BOT_TOKEN;
if (!token) {
throw new Error('BOT_TOKEN wajib diisi');
}
const bot = new Bot(token, {
polling: {
offsetCommit: 'processed',
},
observability: {
hooks: {
onPollingError: ({ error }) => console.error('Polling gagal', error),
onUpdateError: ({ error }) => console.error('Update gagal', error),
},
},
});
bot.use(dedupeUpdates());
bot.use(rateLimit());
bot.use(session({ initial: () => ({ visits: 0 }) }));
bot.start(async ctx => {
ctx.session.visits += 1;
await ctx.reply(`Selamat datang. Kunjungan di chat ini: ${ctx.session.visits}`);
});
bot.help(ctx => ctx.reply('Kirim /start untuk mencoba bot.'));
bot.on('message', async ctx => {
await ctx.reply('Pesan diterima.');
});
bot.catch(async (error, ctx) => {
console.error('Error bot tidak tertangani', error);
await ctx.reply('Terjadi kesalahan. Coba lagi.');
});
await bot.launch();Run
bash
npx ts-node src/bot.tsUntuk deployment jangka panjang, jalankan bot di bawah process manager dan simpan log di luar source tree.
Checklist
- Simpan secret di environment variable.
- Daftarkan
bot.catch()sebelum deployment. - Gunakan
dedupeUpdates()saat retry atau polling processed-offset bisa mengulang update. - Gunakan
rateLimit()untuk bot publik. - Jalankan
npm testdannpm run buildsebelum merilis bot Anda.