Discord Gateway Intents: Bot được phép nghe những gì
Gateway intents là các tùy chọn mà bot khai báo khi kết nối, cho Discord biết những nhóm sự kiện trực tiếp nào bot muốn nhận. Một bot không yêu cầu một intent thì sẽ đơn giản là không bao giờ nhận các sự kiện đó, nhờ vậy dữ liệu được giữ riêng tư và lưu lượng nhỏ.
Gateway là gì
Bot giữ một kết nối liên tục với Discord, gọi là gateway. Qua kết nối này, Discord đẩy các sự kiện ngay khi chúng xảy ra: một tin nhắn được gửi, một thành viên tham gia, ai đó bắt đầu gõ, một kênh thoại thay đổi. Nếu không có giới hạn, mọi bot sẽ nhận mọi sự kiện từ mọi máy chủ.
Intent là bộ lọc. Trong tin nhắn đầu tiên bot gửi sau khi kết nối, nó liệt kê các intent muốn nhận dưới dạng một số duy nhất. Khi đó Discord chỉ gửi những sự kiện phù hợp.
Các intent thường gặp
- Guilds: máy chủ, kênh và vai trò được tạo hoặc thay đổi. Gần như bot nào cũng dùng.
- Guild messages: tin nhắn trong các kênh của máy chủ. Nội dung của những tin nhắn đó cần một intent đặc quyền, xem bên dưới.
- Guild voice states: ai tham gia hoặc rời kênh thoại. Các công cụ nhạc và thoại cần nó.
- Guild moderation: lệnh cấm và các mục trong nhật ký kiểm toán.
- Guild message reactions: các biểu cảm được thêm hoặc gỡ bỏ.
Ba intent có tính đặc biệt: presence, server members và message content. Chúng là intent đặc quyền, vì chúng để lộ nhiều dữ liệu cá nhân hơn và cần thêm phê duyệt đối với bot lớn.
Vì sao điều này quan trọng với chủ máy chủ
Khi một bot online nhưng bỏ qua tin nhắn, lượt tham gia hoặc thay đổi thoại, thiếu intent là một nguyên nhân thường gặp. Nó cũng có thể giải thích việc ngắt kết nối với mã lỗi 4014, khi bot yêu cầu một intent đặc quyền chưa được bật trong cài đặt. Bài viết lỗi gateway khiến bot offline 4004 và 4014 có đề cập đến vấn đề này.
Intent cũng là một tín hiệu về quyền riêng tư. Một bot chỉ yêu cầu những gì tính năng của nó cần thì dễ được tin cậy hơn.
Intent và Noxyr
Bot Noxyr chính được quản lý thay bạn. Nếu bạn thiết lập một bot tùy chỉnh với ứng dụng riêng, Server Members Intent và Message Content Intent phải được bật trong Discord Developer Portal, như hướng dẫn thiết lập giải thích. Chúng cần cho các tính năng như tin nhắn chào mừng và lệnh tiền tố. Nếu bot tùy chỉnh bị offline, hãy bắt đầu với hướng dẫn xử lý bot offline.
Để biết thêm chi tiết, xem giải thích về gateway intent đặc quyền.
Kiểm tra một bot bạn không tự viết
Nếu một bot bạn đã cài hoạt động lạ, hãy hỏi nhà phát triển của nó xem nó dùng những intent nào và vì sao. Bot tốt sẽ liệt kê chúng trong tài liệu. Với bot của chính bạn, hãy mở Developer Portal, vào trang Bot và so sánh các công tắc với những gì mã nguồn yêu cầu. Chỗ không khớp là thứ cần sửa trước tiên.
Câu hỏi thường gặp
Điều gì xảy ra nếu bot không yêu cầu một intent?
Discord sẽ không gửi cho nó các sự kiện tương ứng. Bot vẫn online nhưng không thể phản ứng với những việc đó.
Tôi bật intent cho bot của mình ở đâu?
Trong Discord Developer Portal, mở ứng dụng của bạn, vào Bot và bật các intent đặc quyền mà nó cần.
Mọi intent đều là đặc quyền à?
Không. Chỉ presence, server members và message content là đặc quyền. Các intent còn lại có thể dùng tự do.