Tận Dụng Discord Làm App Theo Dõi Mọi Thứ Trên Đời
discord
1
White

Đạt Fix viết ngày 28/01/2019

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.

  1. Tải Discord và tạo tài khoản, rồi tạo 1 server. alt text
  2. Tạo 1 channel tên là chotot, bật developer mode để lấy channel id
    alt text
    Click chuột phải lên tên channel để lây id, nhớ lưu id này để dùng sau.
    alt text

  3. Tạo bot discord và cấp quyền vào server, sau đó lấy token của bot tại đây: discord app
    alt text
    alt text
    Click Add Bot
    alt text
    Click Copy để lấy Token
    alt text
    Lấy Link để Add Bot vào Discord Server
    alt text
    Add Bot xong
    alt text
    Giờ Bot sẽ được thêm vào server rồi

  4. Giờ 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
    alt text
    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.
alt text

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Đạt Fix

3 bài viết.
55 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
26 5
Vấn đề hiện tại Mặc dù hiện cũng khá lớn tuổi, nhưng mình đặc biệt thích xem animes, nhưng hầu như website xem phim hiện tại không đáp ứng được nhu...
Đạt Fix viết 10 tháng trước
26 5
White
5 0
4 Vé Vietlott Vô Chủ Mình có thói quen mỗi chủ nhật thì mần 1 vé vietlott cho vui cũng xem như là có cái gì đó để mà hi vọng. Cũng như bao nhiêu n...
Đạt Fix viết hơn 1 năm trước
5 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
3 bài viết.
55 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!