• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
JustAPie

Hướng dẫn Code bot Discord bằng Discord.JS (Ep 2)

JustAPie

THÀNH VIÊN
F TO PAY RESPECT
Tham gia
02/07/2017
Bài viết
556
Tiếp nối với tập trước thì tập này mình sẽ hướng dẫn làm lệnh nhé

Ok, bắt đầu với cái file index.js của bạn

Các lệnh thực chất chỉ là phản hồi của bot với các tin nhắn mà mình gửi lên channel. Vậy bạn hãy làm bot listen message bằng cách tạo 1 cái event message tương tự như event ready như sau:
21563

Trong đoạn code đó sẽ là toàn bộ các thứ liên quan đến lệnh của bạn
Chúng ta hãy tạo ra một số cài đặt cho bot
Tất cả code ở đây phải ở trong cái event này
Đầu tiên hãy set cho bot không được phản hồi với các con bot khác
(Tức là khi mà con bot khác thực hiện lệnh của bạn thì bot sẽ ko phản hồi) như sau:
21564

Thực ra cái đoạn return kia sẽ thoát khỏi cái statement nên khi nếu bạn để cái này ở dưới cùng đoạn code thì thường cái IDE hay code editor sẽ gạch chân và yêu cầu bạn xóa dòng return đó
Tiếp theo hãy làm bot ko phản hồi khi bạn nhắn tin riêng cho bot
21565

Và cuối cùng nếu tin nhắn ko bắt đầu với prefix thì bot sẽ không phản hồi
21566

Các cài đặt trên cực kì quan trọng, nếu không có các dòng này sẽ có một số lỗi xảy ra như khi bạn định gọi cái properties như message.guild.name, nhưng do bạn đang nhắn tin trực tiếp cho bot và bạn đang ko ở trong 1 guild, vì thế, bot sẽ trả về là "undefined"

Oke, bây giờ là phần chính nè
Để tạo lệnh thì trước hết bạn cần tạo 2 cái variable có tên và args và cmd
21577

Sau khi tạo như vậy rồi, nhiều bạn sẽ có thể sẽ thấy lằng nhằng và khó hiểu, thì mình giải thích luôn
Phần message.content là phần nội dung tin nhắn của bạn
slice() là phần sẽ trích xuất một số phần từ cái string và trả về một cái string mới, sau khi đã được trích xuất. Trong trường hợp này, nó sẽ trả về phần lệnh chữ
(Tức là khi bạn nhập vào /help thì bot sẽ bỏ qua prefix và bot sẽ chỉ nhận phần help)
trim() là để bỏ các phần khoảng trống ở đầu và cuối trong câu nói của bạn (vd như khi bạn nói: " Hello World ", thấy cái khoảng trống kia chứ, nó sẽ bỏ hết các khoảng trống ở đầu và cuối kia và trả về: "Hello World")
Phần split() kia là để thay thế các khoảng trắng giữa các từ với nhau, thì ở đây, mình sử dụng regExp là "/ +/" (Xem thêm ở đây: minecraftvn.net)

Ok,sau khi tạo xong variable args, tạo một cái biến cmd như sau
21579

Thì phần này khá đơn giản, ta gọi variable args đã tạo ở trên
shift() là nó sẽ di chuyển vị trí của các phần tử tiếp theo
(Tức là giả sử bạn nhập vào /say(0) hello(1) world(2) thì khi shift nó sẽ bỏ cái số 0 kia đi và di chuyển phần 1 và 2 và sẽ trả về cho bot: /say hello(0) world(1))
còn phần toLowerCase() kia là nó sẽ biến đổi tất cả các chữ hoa thành chữ thường

Oke thì phần còn lại khá đơn giản, chỉ cần tạo ra một cái if/else statement trong phần điều kiện thì ghi cmd === "tên lệnh"
và phần trả về khi thực hiện lệnh phải nằm ở trong cái statement nhé. Ví dụ như sau:
21580

đừng để ý phần gạch chân, vì khi bạn thêm async vào phần event thì chủ yếu một số ide sẽ bắt bạn thêm await vào trước dòng lệnh nhưng thực ra lại không cần thiết

Oke, tập này đến đây là hết, tập sau sẽ là về command handler
và nếu bạn có vấn đề, hãy tham gia server discord. Ở đó mình có thể giúp bạn: discord.gg
 

Đính kèm

  • 1587044767179.png
    1587044767179.png
    4.9 KB · Lượt xem: 26
  • 1587085713860.png
    1587085713860.png
    5.8 KB · Lượt xem: 20
Similar content Most view Xem thêm
Back
Top Bottom