Hướng dẫn tạo bot Discord sử dụng NodeJS – Phần 2


1061

Hãy đọc phần 1 tại đây : Hướng dẫn tạo bot Discord sử dụng NodeJS – Phần 1

Qua phần 1 bạn đã setup thành công. Ở phần này , chúng ta sẽ code để bot xử lý theo ý bạn.

Tạo tài khoản Glitch để tạo bot

Tôi sẽ sử dụng Glitch trong ví dụ này. Glitch là một dịch vụ tuyệt vời cho những điều này – bạn có thể dễ dàng tạo các ứng dụng và sẽ chạy trực tiếp từ Glitch. Đối với một bot đơn giản thì điều đó là quá đủ.

Tạo tài khoản trên Glitch, sau đó nhấp vào url này https://glitch.com/edit/#!/remix/hello-node-server để bắt đầu ứng dụng NodeJS hoàn toàn mới.

Import thư viện discord.js

Chúng ta sẽ sử dụng thư viện discord.js để tạo bot. Sử dụng thư viện làm cho tất cả trở nên dễ dàng vì các chi tiết nhỏ được abstract cho chúng ta.

Ứng dụng cung cấp một hướng dẫn tuyệt vời và một document API được tổ chức độc đáo.

Để import nó trong Glitch, hãy mở tệp package.json và nhấp vào “Add Package”.

Hướng dẫn tạo bot Discord sử dụng NodeJS - Phần 2

Chỉ cần nhấp vào thư viện để cài đặt nó bằng npm.

Bây giờ hãy mở tệp .env. Tệp này là cách mà Glitch cung cấp cho chúng ta để xử lý các token. Mọi ứng dụng đều có thể được đọc ở chế độ công khai theo mặc định (bạn có thể đặt nó ở chế độ riêng tư) nhưng không ai có thể đọc nội dung tệp này, điều này khiến việc chia sẻ code ứng dụng khá an toàn.

Add key vào bot

Thêm những dòng đó vào đây:

BOT_TOKEN=<the bot token>

Chúng ta đăng nhập vào Discord bằng bot như sau:

const Discord = require('discord.js')
const client = new Discord.Client()client.login(process.env.BOT_TOKEN)

và chúng ta tạo ra bot đơn giản nhất mà có thể tạo ra. Mỗi khi người dùng nói “ping”, bot sẽ trả lời bằng “pong”:

const Discord = require('discord.js')
const client = new Discord.Client()client.on('message', msg => {
  if (msg.content === 'ping') {
    msg.reply('pong')
  }
})client.login(process.env.BOT_TOKEN)
Hướng dẫn tạo bot Discord sử dụng NodeJS - Phần 2

Bây giờ chúng ta có thể tập trung vào những gì bot thực sự phải làm.

Nó sẽ lắng nghe mọi tin nhắn, yêu cầu bản dịch tới một dịch vụ cung cấp chúng (chúng ta sẽ sử dụng Yandex Translations API). Nếu câu trả lời khác với các từ đã nhập thì có nghĩa là ngôn ngữ gốc không phải là tiếng Anh và chúng ta có thể viết lại câu trả lời.

Tạo key api Yandex Translations

Truy cập https://tech.yandex.com/translate/. Nếu bạn chưa có tài khoản Yandex, hãy tạo một tài khoản miễn phí.

Sau đó, tạo key API từ giao diện:

Image for post

Theo Điều khoản Sử dụng cho Yandex. Dịch vụ translate, văn bản “Được cung cấp bởi Yandex.Translate” phải được hiển thị ở trên hoặc bên dưới kết quả dịch, với một liên kết có thể nhấp tới trang http://translate.yandex.com/. Vì đây chỉ là một ứng dụng riêng tư, tôi sẽ không làm điều đó, nhưng hãy lưu ý điều này khi muốn public bot.

Bây giờ, hãy lưu trữ key API này trong tệp .env dưới dạng YANDEX_API_KEY.

Tài liệu Yandex Translate API (https://tech.yandex.com/translate/doc/dg/reference/translate-docpage/) cho chúng ta biết cách tạo một yêu cầu API theo cách này:

https://translate.yandex.net/api/v1.5/tr.json/translate
 ?key=<API key>
 &text=<text to translate>
 &lang=<translation direction>

Lang trong tham số truy vấn có thể có dạng <from> – <to> hoặc chỉ <to> (trong trường hợp này “from” sẽ được đoán từ thông báo). Ví dụ en hoặc it-en.

Trong trường hợp này, chúng ta cho bot đoán ngôn ngữ gốc và sử dụng en làm giá trị thông số này.

Import Axios vào bot

Sử dụng Axios (trong Glitch, tìm kiếm axios trong package.json “Add package””), thực hiện request tới Yandex Translate API.

Chúng ta truyền vào object params và lắng nghe promise sẽ hoàn thành trong lệnh callback then ():

const axios = require('axios')//...client.on('message', msg => {
  axios.get('https://translate.yandex.net/api/v1.5/tr.json/translate', {
    params: {
      key: process.env.YANDEX_API_KEY,
      text: msg.content,
      lang: 'en'
    }
  }).then(res => {
    if (res.data.text[0] !== msg.content) {
      msg.reply(res.data.text[0])
    }
  })
})

Chúng ta đang làm gì ở phần code này? Đầu tiên, lắng nghe tin nhắn từ cuộc trò chuyện, như chúng tôi đã làm trước đây với ping/pong.

Tuy nhiên, lần này, chuyển tất cả tin nhắn qua API Yandex Translate, yêu cầu dịch sang tiếng Anh nếu chúng ta nhận được một chuỗi khác với chuỗi mà đã gửi. Điều đó có nghĩa là ngôn ngữ gốc không phải là tiếng Anh và trả lời người đó bằng bản dịch (theo cách này bản dịch được liên kết với tin nhắn gốc).

Dưới đây là một ví dụ về bot đang hoạt động:

Image for post

Vì vậy, chúng ta đã tạo một bot Discord và sử dụng API Yandex Translate để cung cấp dịch vụ dịch cho máy chủ Discord. Bot được phát triển trên Glitch và tự động được triển khai miễn phí ở đó.

Kết luận

Tôi hy vọng bài viết này về bot Discord sẽ giúp bạn tạo ra bot của riêng mình! Để giúp server discord của bạn tương tác một cách hiệu quả

Tham khảo thêm bài viết về NodeJS tại đây: Sử dụng NodeJS và Puppeteer xây dựng web scrapping cách quốc gia ảnh hường COVID từ Wikipedia


Like it? Share with your friends!

1061