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 Privacydinonaktifkan via @BotFather agar bisa membaca pesan. - Output:
$json.message.textberisi teks pesan dari grup.
- Bot harus jadi admin grup atau
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, misalUSD,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:
- Mapping kode mata uang → nama lengkap mata uang (ISO 4217)
- 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
- Pesan masuk di grup →
Telegram Trigger - Cek apakah pesan dimulai
!kurs→If - Parsing kode mata uang →
Code in JavaScript - Request ke API kurs →
HTTP Request - Validasi hasil →
If1- Jika valid → mapping & format → kirim ke grup (
Send a text message) - Jika invalid → kirim pesan error (
Send a text message1)
- Jika valid → mapping & format → kirim ke grup (
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

