Menambahkan Command Bot Discord dengan discord.js
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