Dokumentasi Workflow n8n – Bot Kurs Mata Uang di Grup Telegram

Tujuan Workflow:
Bot Telegram otomatis membalas kurs mata uang ke Rupiah saat ada anggota grup mengetik !kurs <kode_mata_uang>. Jika kode mata uang salah, bot akan memberi pesan error.


1 Telegram Trigger

  • Node Name: Telegram Trigger
  • Type: n8n-nodes-base.telegramTrigger
  • Fungsi: Menangkap semua pesan yang masuk di grup.
  • Update yang dipantau: message
  • Keterangan:
    • Bot harus jadi admin grup atau Group Privacy dinonaktifkan via @BotFather agar bisa membaca pesan.
    • Output: $json.message.text berisi teks pesan dari grup.

2 IF Node – Filter Pesan

  • Node Name: If
  • Type: n8n-nodes-base.if
  • Fungsi: Mengecek apakah pesan dimulai dengan !kurs
  • Kondisi:
{{ $json.message.text.startsWith("!kurs ") }}
  • Output:
    • True: Pesan berisi permintaan kurs → lanjut ke parsing kode mata uang.
    • False: Pesan bukan perintah kurs → workflow berhenti.

3 Code Node – Parsing Kode Mata Uang

  • Node Name: Code in JavaScript
  • Type: n8n-nodes-base.code
  • Fungsi: Mengambil kode mata uang dari pesan.
  • Kode JavaScript:
const text = $json.message.text.trim();
const parts = text.split(" ");
const currency = parts[1] ? parts[1].toUpperCase() : "IDR";
return [{ currency }];
  • Output: $json.currency → kode mata uang, misal USD, SGD.

4 HTTP Request – Ambil Kurs

  • Node Name: HTTP Request
  • Type: n8n-nodes-base.httpRequest
  • Fungsi: Memanggil API kurs mata uang (https://open.er-api.com/v6/latest/<kode>)
  • Parameter:
URL: https://open.er-api.com/v6/latest/{{ $json.currency }}
Method: GET
  • Output:
    • JSON berisi nilai tukar terhadap berbagai mata uang, termasuk IDR.

5 IF Node – Validasi Hasil API

  • Node Name: If1
  • Type: n8n-nodes-base.if
  • Fungsi: Mengecek apakah API mengembalikan error atau kode mata uang tidak valid.
  • Kondisi:
$json.result != "error" OR $json["error-type"] != "unsupported-code"
  • True: Kode mata uang valid → lanjut ke mapping & format.
  • False: Kode salah → lanjut ke node pesan error.

6 Code Node – Mapping Nama Mata Uang & Format Rupiah

  • Node Name: Code in JavaScript1
  • Type: n8n-nodes-base.code
  • Fungsi:
    1. Mapping kode mata uang → nama lengkap mata uang (ISO 4217)
    2. Format kurs ke Rupiah dengan ribuan separator dan 2 digit di belakang koma
  • Kode JavaScript:
const rate = $json.rates.IDR;
const formattedRate = rate.toLocaleString("id-ID", {minimumFractionDigits: 2, maximumFractionDigits: 2});

const code = $json.currency || $input.first().json.base_code;

const mapping = {
  USD: "Dollar Amerika Serikat",
  SGD: "Dollar Singapura",
  IDR: "Rupiah Indonesia",
  EUR: "Euro",
  JPY: "Yen Jepang",
  MYR: "Ringgit Malaysia",
  AUD: "Dollar Australia",
  GBP: "Poundsterling Inggris",
};

return [{
  currency: code,
  currencyName: mapping[code] || code,
  formatted: formattedRate
}];
  • Output:
    • $json.currencyName → Nama lengkap mata uang
    • $json.formatted → Nilai tukar format Rupiah

7 Telegram Node – Kirim Pesan Kurs

  • Node Name: Send a text message
  • Type: n8n-nodes-base.telegram
  • Fungsi: Mengirim balasan kurs ke grup
  • Template Pesan:
Kurs {{ $('HTTP Request').item.json.base_code }} - {{ $json.currencyName }} Saat ini Rp. {{ $json.formatted }}

⚡️ Kurs bisa berubah kapan saja, cek sebelum transaksi.
  • Catatan: appendAttribution: false → Tidak menampilkan “Sent automatically by n8n”.

8 Telegram Node – Pesan Error

  • Node Name: Send a text message1
  • Fungsi: Mengirimkan pesan error jika kode mata uang salah atau tidak didukung API
  • Template Pesan:
Mohon Maaf Kode Mata Uang (ISO 4217 Currency Code) yang Anda Masukkan Salah atau tidak tersedia

9 Alur Workflow Singkat

  1. Pesan masuk di grup → Telegram Trigger
  2. Cek apakah pesan dimulai !kursIf
  3. Parsing kode mata uang → Code in JavaScript
  4. Request ke API kurs → HTTP Request
  5. Validasi hasil → If1
    • Jika valid → mapping & format → kirim ke grup (Send a text message)
    • Jika invalid → kirim pesan error (Send a text message1)

10 Catatan Penting

  • Bot harus jadi admin atau privacy mode dimatikan agar bisa membaca pesan grup.
  • API yang digunakan: exchangerate-api.com
  • Format Rupiah: ribuan dipisah titik (.) dan 2 digit di belakang koma (Rp 12.947,82)
  • Mapping mata uang bisa diperluas sesuai kebutuhan.

Download JSON Template

-
people visited this page
-
spent on this page
0
people liked this page
Share this page on
Tanya Jejak

Masukkan nama dan nomor WhatsApp aktif:

Lengkapi Formulir.

Contact Form