Hosting: Deno Deploy

Halaman ini berisi panduan mengenai cara-cara meng-hosting bot di Deno Deployopen in new window.

Perlu diperhatikan bahwa panduan ini hanya berlaku untuk pengguna Deno. Kamu diharuskan memiliki akun GitHubopen in new window untuk membuat akun Deno Deployopen in new window.

Deno Deploy cocok dipakai untuk bot yang sederhana. Selain itu, kamu harus tahu bahwa tidak semua fitur Deno tersedia untuk beberapa aplikasi—termasuk bot kamu—yang berjalan di Deno Deploy. Contohnya, file system di Deno Deploy tidak tersedia. Deno Deploy mirip seperti platform serverless lainnya, tetapi hanya didedikasikan untuk aplikasi Deno saja.

Hasil dari tutorial disini dapat dilihat di repositori bot kamiopen in new window.

Menyiapkan Kode

Ingat! Kamu perlu menjalankan bot dengan webhooks, jadi kamu harus menggunakan webhookCallback alih-alih memanggil bot.start() di kodemu.

  1. Pastikan kamu meng-export object bot di dalam sebuah file agar nantinya bisa di-import ketika ingin menjalankannya.
  2. Buat sebuah file dengan nama mod.ts atau mod.js, ataupun nama lainnya sesuai dengan keinginanmu (tetapi kamu harus mengingatnya karena nanti file tersebut akan digunakan sebagai file deploy utama). File tersebut berisikan:
import { serve } from "https://deno.land/std@0.174.0/http/server.ts";
import { webhookCallback } from "https://deno.land/x/grammy@v1.13.1/mod.ts";
// Kamu mungkin perlu mengubah ini agar dapat melakukan import pada object bot-mu.
import bot from "./bot.ts";

const handleUpdate = webhookCallback(bot, "std/http");

serve(async (req) => {
  if (req.method === "POST") {
    const url = new URL(req.url);
    if (url.pathname.slice(1) === bot.token) {
      try {
        return await handleUpdate(req);
      } catch (err) {
        console.error(err);
      }
    }
  }
  return new Response();
});

Kami menganjurkan kamu untuk menaruh handler di direktori rahasia alih-alih menempatkanya di root (/). Di contoh kali ini, kita menggunakan token bot (/<token bot>) sebagai direktori rahasianya.

Men-deploy Bot

Metode 1: Menggunakan GitHub

Metode ini sangat direkomendasikan karena mudah untuk digunakan. Kelebihannya adalah Deno Deploy akan selalu memantau perubahan di repositori tempat kamu menaruh kode bot. Ketika terjadi perubahan, kode tersebut akan di-deploy secara otomatis ke versi yang lebih baru.

  1. Buat sebuah repositori di GitHub, bisa dalam bentuk private ataupun publik.
  2. Taruh kodemu di dalam repositori tersebut.

Direkomendasikan untuk mempunyai satu branch stabil dan branch lain untuk pengetesan supaya branch utama kamu terhindar dari hal-hal yang tidak diinginkan.

  1. Kunjungi dashboard Deno Deployopen in new window.
  2. Pilih “New Project”, lalu pergi ke bagian “Deploy from GitHub repository”.
  3. Pasang aplikasi GitHub di akun atau organisasimu, kemudian pilih repositori kode bot kamu berada.
  4. Pilih branch dan file mod.ts yang akan di-deploy.

Metode 2: Menggunakan deployctl

Metode ini diperuntukkan kepada pengguna tingkat lanjut yang nantinya proyek akan di-deploy melalui command line atau GitHub Actions.

  1. Kunjungi dashboard Deno Deployopen in new window.
  2. Pilih “New Project”, kemudian pilih “Empty Project”.
  3. Pasang deployctlopen in new window.
  4. Buat token aksesopen in new window baru.
  5. Jalankan dengan perintah:
deployctl deploy --project <project> ./mod.ts --prod --token <token>
  1. Untuk menyiapkan GitHub Actions, dapat merujuk ke siniopen in new window.

Metode 3: Menggunakan URL

Kamu memerlukan URL publik yang mengarah ke file mod.ts-mu untuk menggunakan metode ini.

  1. Buat proyek baru di Deno Deploy.
  2. Pilih “Deploy URL”
  3. Masukkan URL publik file mod.ts-mu, lalu pilih “Deploy”.

Catatan

Setelah mendapati bot-mu dapat berjalan, kamu harus melakukan konfigurasi pada pengaturan webhook untuk menggunakan URL bot-mu yang baru.

https://api.telegram.org/bot<token>/setWebhook?url=<url>

Ganti <token> dengan token bot-mu, dan <url> dengan URL lengkap bot kamu.