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