Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Tận Dụng Discord Làm App Theo Dõi Mọi Thứ Trên Đời
Bài viết này sẽ hướng dẫn các bạn sử dụng Discord để làm ứng dụng theo dõi bất kỳ thứ gì các bạn muốn hay cần.
Bối cảnh: Hôm bữa thấy người ta đăng bán cún trên chotot, tuy nhiên vì xem tin đăng đó quá trễ nên nó đã được bán ngay sau khi đăng tin 17 tiếng. Vậy là tự hỏi tại sao không làm 1 con bot, cho chạy tự động và đồng bộ tin đăng trên chợ tốt về, rồi gởi thông báo qua Discord. Vậy là bắt tay vào code, step by step như sau.
- Tải Discord và tạo tài khoản, rồi tạo 1 server.
Tạo 1 channel tên là chotot, bật developer mode để lấy channel id
Click chuột phải lên tên channel để lây id, nhớ lưu id này để dùng sau.
Tạo bot discord và cấp quyền vào server, sau đó lấy token của bot tại đây: discord app
Click Add Bot
Click Copy để lấy Token
Lấy Link để Add Bot vào Discord Server
Add Bot xong
Giờ Bot sẽ được thêm vào server rồiGiờ thì viết code để bot gởi message lên channel đã tạo sẵn
a. Tìm hiểu làm sao để lấy tin mới của chotot
Cái này mở developer mode của chrome lên là thấy chotot có api để lấy data nên cực kỳ tiện luôn
https://gateway.chotot.com/v1/public/ad-listing?region_v2=13000&cg=12000&w=1&limit=20&st=s,k&f=p&page=1
b. Tới đây thì có thể viết code cho bot rồi, code được viết trong ít phút nên không được đầu tư kỹ cho lắm.
Trước tiên cần 1 số package cần thiết
const request = require("request");
const async = require("async");
const cron = require("node-cron");
const NodeCache = require( "node-cache" );
const cache = new NodeCache();
const Discord = require('discord.js');
const client = new Discord.Client();
Tiếp theo là config discord, token thì lấy ở bước tạo bot
client.on('ready', () => {
console.log(`Discord Logged in as ${client.user.tag}!`);
})
client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('pong');
}
});
client.login('NTM0Mzk2NDk0NDA5NjI5Njk3.Dx4_TQ.rdIr-wVhjnBLTyGZEttR1A51kAc');
Sau đó tạo cron job chạy 1 phút 1 lần sau khi discord báo ready
cron.schedule("*/60 * * * * *", function() {
console.log("---------------------");
console.log("Running Cron Job");
})
Cuối cùng là get data và gởi lên discord channel, channel id lấy ở bước bật developer mode trong discord rồi set vào chỗ này: client.channels.get("534396349412540426")
var request = require("request");
var options = { method: 'GET',
url: 'https://gateway.chotot.com/v1/public/ad-listing',
qs:
{ region_v2: '13000',
cg: '12000',
w: '1',
limit: '20',
st: 's,k',
f: 'p',
page: '1' },
headers:
{ 'Postman-Token': '513bb4d8-22b2-44c6-b830-aa612fd2e2e3',
'cache-control': 'no-cache' } };
request(options, function (error, response, body) {
if (error) {
return console.error(error.message)
}
if (response.statusCode != 200) {
return
}
console.log(body.ads.length)
async.each(body.ads, (ad, callback) => {
if (cache.get(ad.ad_id) != undefined) {
console.log(`Already sent: ${ad.ad_id}`)
return
}
cache.set(ad.ad_id, true)
let image = ad.image || "https://upload.wikimedia.org/wikipedia/commons/a/ac/No_image_available.svg"
client.channels.get("534396349412540426").send(`
===============================================\n**${ad.subject}**\n***${ad.price_string}***\n*${ad.area_name} - ${ad.region_name}*\n*https://nha.chotot.com/${ad.list_id}.htm*
`, {
files: [`${image}?file=file.png`]
}).then(() => {
return callback()
}).catch(err => {
console.log(`Send to discord err: ${err.message}`)
console.log(ad)
return callback()
})
}, (err) => {
});
});
Cuối cùng là thành quả sau 30 phút, mọi người có thể áp dụng cách này để gôm hết nhiều thứ vào một chỗ để tiện cho việc theo dõi tin tức, trạng thái website, server ....., có cả app discord cho android và iOS nữa nên cực kỳ tiện.
Sourc code được upload lên github tại Link này.



