Melanjutkan panduan yang pernah saya buat sebelumnya Tutorial Membuat Bot Discord dengan discord.js yang hanya membuat command sederhana ping pong. Sekarang kita coba menambah command sederhana lain.

Command yang kita buat adalah /price, ketika user mengirimkan command price btc lalu bot akan mengirimkan harga BTC terbaru menggunakan data API dari Indodax

Silahkan kalian ikut dulu panduan pada post sebelumnya untuk mengikuti panduan ini

Koding

Buat file price.js di folder commands/utility/ dan isi dengan kode berikut

//price.js
const { SlashCommandBuilder } = require('discord.js');

module.exports = {
  data: new SlashCommandBuilder()
    .setName('price')
    .setDescription('Cek harga crypto (IDR) dari Indodax')
    .addStringOption(option =>
      option
        .setName('coin')
        .setDescription('Nama coin, contoh: btc, eth, ltc')
        .setRequired(true)
    ),

  async execute(interaction) {
    const coin = interaction.options.getString('coin').toLowerCase();
    const pairKey = `${coin}_idr`;

    try {
      const res = await fetch('https://indodax.com/api/tickers');
      const data = await res.json();

      const ticker = data.tickers[pairKey];

      // jika coin tidak ditemukan
      if (!ticker) {
        return interaction.reply({
          content: `❌ Coin **${coin.toUpperCase()}** tidak tersedia di market IDR.`,
          ephemeral: true,
        });
      }

      const formatIDR = (num) =>
        new Intl.NumberFormat('id-ID').format(Number(num));

      const line = (label, value) =>
        `${label.padEnd(6)} : Rp ${formatIDR(value)}`;

      const message =
        "```text\n" +
        `PAIR   : ${coin.toUpperCase()} / IDR\n` +
        line('LAST', ticker.last) + '\n' +
        line('BUY', ticker.buy) + '\n' +
        line('SELL', ticker.sell) + '\n' +
        line('HIGH', ticker.high) + '\n' +
        line('LOW', ticker.low) + '\n' +
        "```";

      await interaction.reply(message);

    } catch (err) {
      console.error(err);
      await interaction.reply({
        content: '⚠️ Gagal mengambil data harga.',
        ephemeral: true,
      });
    }
  },
};


Daftarkan Command

Agar bisa digunakan, command harus kita daftarkan dulu dengan menjalankan perintah

node deploy-commands.js

Silahkan kembali ke post sebelumnya untuk isi kode dari file deploy-commands.js

Jika berhasil terdaftar tanpa error maka kita tinggal menjalankan kode index.js yang ada di postingan sebelumnya tanpa mengubah kode index.js

node index.js

Dan hasilnya akan seperti berikut

Selamat mencoba