Ini adalah script sederhana untuk menarik data notifikasi dari API Gotosocial. Kemudian menyimpannya ke dalam database Postgresql dan kemudian dikirim ke Telegram Bot.
- Clone repositori ini,
- Buat file
.env
di root directory repository yang di-clone - Init DB
- Push ke Deno Deploy, bisa dengan Deploy CLI atau pakai Github Integration.
Disini ane mempergunakan layanan DB Postgres gratis dari Neon.Tech. Ada 2 DB yang dibuat yaitu DB utama untuk menyimpan data notifikasi dan DB kedua yang berisi data post_id notifikasi.
DB kedua ini perlu ada untuk memastikan agar yang disimpan ke DB utama adalah notifikasi baru (meski sudah pakai ON CONFLICT) di script Postgresnya. Tujuannya adalah "menghemat" id baris di table.
Tapi sampai sekarang sepertinya belum sukses. Whatever.
Jika suka pakai DB key value, jalankan juga initKv.ts
, disini pakai DenoKv yang sudah tersedia di Deno Deploy.
Semua proses dijalankan dengan perintah seperti berikut :
$ deno run -A --env --unstable-cron --unstable-kv main.ts
Sesuaikan dengan proses, jika hendak bikin db ganti main.ts
dengan initDb.ts
dan sebagainya.
hilangkan --unstable-kv
jika tidak pakai DB key value DenoKv.
Daftar environment yang dipakai:
- GTS_TOKEN : Token Auth dari instance gotosocial, bisa didapatkan dengan mengikuti tutorial di Authentication with API di laman dokumentasi Gotosocial,
- GTS API: endpoint URL dari instance Gotosocial kamu, untuk fetch data. URLnya seperti ini:
https://kauaku.us/api/v1/notifications?limit=5
, - TELE_BOT: Ini adalah token Bot Telegram, ngobrol dengan Bot Father untuk mendapatkannya,
- TELE_CHATID: Chat ID dari Bot Telegram yang sudah dibuat,
- DB_URL: URL end point dari Postgres, ane pakai Neon.Tech, kalo pakai Supabase mungkin sedikit berbeda. Bisa di dapatkan di dashboard Neon.Tech
- DENO_KV_ACCESS_TOKEN: (Optional) Token DenoKv yang sudah di set di Deno Deploy. Ini opsional ga pakai ini juga ga apa - apa. Cek tambahkan deno kv.
Tapi ane sudah drop DenoKv karena versi gratisnya punya limit yang sedikit dan mepet. Implementasi sekarang untuk pakai Postgres jauh lebih baik.