Các thư viện sử dụng
https://www.npmjs.com/package/node-fetch
Yêu cầu máy đã cài nodejs
Tạo app trên discord: https://discordapp.com/developers/docs/intro

Lấy token để sử dụng sau:

Sử dụng Visual Code để code.
Tạo file bot.js
Code:
npm install discord.js
const Discord = require('discord.js');
const client = new Discord.Client();
const commandPrefix = "!";
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', (message)=> {
if(!message.content.startsWith(commandPrefix)) return;
const args = message.content.slice(commandPrefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
switch(command){
case "hello":
hello(message);
break;
case "help":
help(message);
break;
case "ping":
sendText(message, "Pong");
break;
case "clear":
clear(message);
break;
case "cmc":
coinmarketcap(message);
break;
case "c":
chart(message, args);
break;
case "p":
price(message, args);
break;
default:
sendText(message, "Command not found.")
break;
}
});
client.login('NDQyMDAyMTAyODAyMzE3MzMz.DdMfbw.3eV-Qk5N2TpDIDgatQb1ILeD0Hc');
Các hàm chính trong bot
function hello(message){
message.channel.send("Hello " + message.author + "! Nice to meet you. :smiley: ");
}
function help(message){
let embed = new Discord.RichEmbed()
.setAuthor("Hello world", "http://icons.iconarchive.com/icons/froyoshark/enkel/256/Bitcoin-icon.png")
.addField("!hello", "Sends a friendly message!")
.addField("!help", "Sends this help embed")
.addField("!cmc", "Coin Market Cap")
.addField("!ping", "Ping")
.addField("!p", "Price of coin. Ex: BTCUSDT or price BTC")
.setTitle("Bot commands:")
.setFooter("Here you have all bot commands you can use!")
.setColor("AQUA");
message.channel.send({embed: embed});
}
function sendText(message, text){
message.channel.send(text).then(msg=>{msg.delete(10000)});
message.delete(12000);
}
function clear(message){
if (message.member.hasPermission("MANAGE_MESSAGES")) {
message.channel.fetchMessages()
.then(function(list){
message.channel.bulkDelete(list);
}, function(err){message.channel.send("ERROR: ERROR CLEARING CHANNEL.")})
}
else{
console.log("You don't have permission");
}
Hàm lấy giá trên coinmarketcap.com
npm install node-fetch
function coinmarketcap(message){
let url = 'https://api.coinmarketcap.com/v2/global/';
let bitcoin_percentage_of_market_cap='';
let total_market_cap= '';
let total_volume_24h = '';
let last_updated = '';
fetch(url)
.then(res => res.json())
.then(json => {
// console.log(json);
bitcoin_percentage_of_market_cap = json.data.bitcoin_percentage_of_market_cap;
total_market_cap = json.data.quotes.USD.total_market_cap;
total_volume_24h = json.data.quotes.USD.total_volume_24h;
last_updated = json.data.last_updated;
let embed = new Discord.RichEmbed()
.setAuthor("Coinmarketcap", "http://icons.iconarchive.com/icons/froyoshark/enkel/256/Bitcoin-icon.png")
.addField("Market Cap (USD):", numberFormat(total_market_cap))
.addField("24h Vol (USD): ", numberFormat(total_volume_24h))
.addField("BTC Dominance(%): ", bitcoin_percentage_of_market_cap)
.setFooter("Last Updated: " + timeConverter(last_updated))
.setColor("AQUA");
// Send the embed with message.channel.send()
message.channel.send({embed: embed}).then(msg=>{msg.delete(10000)});
message.delete(12000);
});
}
Thêm bot vào Server Discord
Open link & thay bằng client_id của bạn trên trình duyệt


Khởi chạy bot
node bot.js

Demo

Source code: GitHub
Chúc các bạn thành công
DONATE
Bitcoin address: 1tmxPQbmycQMehAAZ8FshbvEoQZ6Ri7PT
ETH Address: 0xfe17aaf16bceb4311795b2e8ff0199640bdce54a
ETC Address: 0xfe17aaf16bceb4311795b2e8ff0199640bdce54a
XVG Address: D9iP7fhKbHJKViwUG9MWcAt3JPdCuxnCZJ
