Telegram
Tujuan
Jalankan snsagent sebagai bot Telegram: setiap pesan menggerakkan sesi agen nyata (pesan → handler → sesi → agen → model → tool → respons → Telegram). Adapter berada di src/adapters/telegram/ dan dibangun di atas grammY.
Cara kerjanya
- Bot melakukan polling Telegram saat
SNS_TELEGRAM_BOT_TOKENdi-set (auto-boot), atau saat dimulai secara eksplisit dengansnsagent telegram. - Setiap chat dipetakan ke sesi agen; teks masuk menjadi turn pengguna, dan balasan agen dikirim kembali melalui bot.
- Sebelas slash command terhubung:
/start /help /chat /reset /status /memory /cron /model /code /review /task. Upload/download file didukung.
Konfigurasi
export SNS_TELEGRAM_BOT_TOKEN="your-bot-token-here"
export SNS_TELEGRAM_ALLOWED_USERS="123456789" # ID pengguna Telegram numerik Anda
export SNS_TELEGRAM_AUTOSTART=0 # opsional: nonaktifkan auto-boot
snsagent
Contoh nyata
Anda (Telegram): file apa yang berubah sejak kemarin?
Bot: Menjalankan `git diff` … 3 file berubah.
Anda (Telegram): /status
Bot: Session: active · model: claude-sonnet · backend: mnemopi
Screenshot

snsagent telegram status menampilkan state adapter dan tanpa secret: field token tampil sebagai unset/empty. Screenshot percakapan nyata tidak di-commit karena akan memuat token bot / isi chat yang dikonfigurasi.
Otorisasi
- Saat
SNS_TELEGRAM_ALLOWED_USERSdi-set, hanya ID pengguna yang terdaftar (dan group chat yang mereka buat) yang dilayani; semua yang lain ditolak sebelum agen dikonsultasikan. - Saat tidak di-set, peringatan di-log dan bot melayani pengirim mana pun.
Peringatan: allowlist bersifat opt-in. Deployment tanpa itu adalah permukaan eksekusi jarak jauh tanpa autentikasi. Jaga
SNS_TELEGRAM_ALLOWED_USERStetap ter-set.
Sesi menjalankan tools dengan autoApprove: true, jadi allowlist mempersempit siapa yang bisa berbicara ke agen, bukan tindakan apa yang disetujui otomatis. Tinjau batasnya di security-model.md sebelum mengekspos bot.
Perilaku kegagalan
- Tanpa token → adapter tidak start (atau
snsagent telegramerror). - Error jaringan/polling dicoba ulang oleh grammY; kegagalan transien tidak mematikan proses agen.
Pengujian
bun test test/telegram-audit.test.ts # cakupan handler + gerbang auth
bun test test/telegram.test.ts
Test suite mencakup jalur pesan → handler → sesi dan gerbang otorisasi SNS_TELEGRAM_ALLOWED_USERS (penolakan pengguna tak terdaftar, peringatan saat tidak di-set).