Một bot Discord ngoại tuyến vì một trong vài lý do có thể đoán trước: token đã bị đặt lại, một intent đặc quyền bị tắt, khoảng thời gian bình chọn trên bot được lưu trữ đã hết hạn, hoặc bot bị xóa khỏi máy chủ mà nó phụ thuộc vào. Gateway của Discord cho bạn biết đó là lý do nào thông qua mã đóng; mã 4004 và 4013/4014 là hai mã bạn gặp thường xuyên nhất, và mỗi mã có một cách sửa cụ thể, có quy trình rõ ràng thay vì kiểu "cứ khởi động lại rồi hy vọng".
Bắt đầu từ đây: nguyên nhân có khả năng nhất trước
Theo thứ tự mức độ thường gặp:
- Token đã bị đặt lại. Ai đó đã nhấn Reset Token trong Developer Portal, cố ý hoặc vô tình, và token cũ mà bot đang dùng giờ đã vô hiệu.
- Một intent đặc quyền đã bị tắt. Server Members Intent hoặc Message Content Intent bị tắt sau khi bot đã được thiết lập.
- Khoảng thời gian bình chọn hoặc đăng ký đã hết. Trên một bot được lưu trữ như Custom Bot của Noxyr, thời gian hoạt động được gắn với lượt bình chọn trên Top.gg, và khoảng thời gian đó cùng thời gian ân hạn đã hết.
- Bot đã bị xóa khỏi máy chủ, hoặc một bot mà nó phụ thuộc vào đã bị xóa. Custom Bot cụ thể phụ thuộc vào việc Noxyr có mặt trong máy chủ; đuổi Noxyr ra sẽ dừng custom bot trong máy chủ đó.
- Sự cố thật sự. Bản thân Discord đang gặp sự cố. Hiếm khi xảy ra, nhưng hãy kiểm tra discordstatus.com trước khi cho rằng lỗi nằm ở thiết lập của bạn.
Ý nghĩa thực sự của các mã đóng gateway
| Mã | Ý nghĩa | Nguyên nhân thường gặp |
|---|---|---|
| 4004 | Xác thực thất bại | Token sai hoặc đã bị đặt lại trong Developer Portal |
| 4013 | Intent không hợp lệ | Mã của bot yêu cầu một intent không tồn tại, hoặc một tổ hợp mà Discord từ chối |
| 4014 | Intent không được phép | Bot yêu cầu một intent đặc quyền (Server Members hoặc Message Content) chưa được bật cho ứng dụng |
Trên thực tế, 4013 và 4014 thường xuất hiện vì cùng một nguyên nhân trên hầu hết các bot: một intent đặc quyền mà mã cần đã bị tắt trong portal. Discord.js và các thư viện tương tự đôi khi ghi lỗi này trong nhật ký dưới dạng "disallowed intents" thay vì mã số thô, nhưng vẫn là cùng một vấn đề. Hướng dẫn về intent gateway đặc quyền của chúng tôi giải thích sâu hơn từng intent kiểm soát điều gì và điều gì sẽ hỏng nếu thiếu nó.
Cách sửa từng lỗi trên Noxyr Custom Bot
Gateway 4004, hoặc "Discord đã từ chối token này"
Token mà bot đăng nhập lần cuối không còn tồn tại nữa. Điều này xảy ra khi token bị đặt lại trong Developer Portal, dù là cố ý (đổi token vì lý do bảo mật) hay do nhầm lẫn (nhấn Reset Token khi chỉ đang xem qua tab Bot).
- Mở Discord Developer Portal, chọn ứng dụng, rồi vào tab Bot.
- Nhấn Reset Token lần nữa để tạo token mới; sao chép ngay lập tức, vì Discord chỉ hiển thị token một lần.
- Mở trang Custom Bot trên dashboard Noxyr và dán token mới vào.
- Bật lại bot. Các node của Noxyr sẽ tự động tắt một bot có token không hợp lệ để nó không bị kẹt trong vòng lặp kết nối lại vô tận; việc dán một token hoạt động và bật bot lên chính là thứ khởi động lại nó.
Gateway 4013/4014, hoặc "Discord đã từ chối kết nối"
Một intent đặc quyền đã được bật lúc thiết lập nhưng sau đó bị tắt, thường là khi ai đó đang nhấp lung tung trong tab Bot vì một lý do không liên quan.
- Trong Developer Portal, vào Bot → Privileged Gateway Intents.
- Bật lại Server Members Intent và Message Content Intent. Cả hai đều bắt buộc; bộ tính năng của Noxyr (tin nhắn chào mừng, số lượng thành viên, AI chat, trả lời tự động, bản ghi ticket) cần cả hai.
- Lưu lại, rồi bật lại bot từ trang Custom Bot trên dashboard. Vì Discord chỉ áp dụng thay đổi intent ở lần đăng nhập tiếp theo, chỉ bật lại công tắc thì chưa đủ; bot phải kết nối lại.
Khoảng thời gian bình chọn và thời gian ân hạn đã hết
Custom Bot hoạt động dựa trên lượt bình chọn trên Top.gg. Một lượt bình chọn mở khóa bot trong 12 giờ; sau đó, 74 giờ ân hạn giữ cho bot tiếp tục chạy trong khi trang dashboard bị khóa. Nếu cả hai đều hết, bot sẽ ngoại tuyến, nhưng không có gì trong thiết lập của bạn bị xóa.
- Bình chọn cho Noxyr trên Top.gg.
- Quay lại trang Custom Bot; trang sẽ mở khóa ngay sau khi lượt bình chọn được ghi nhận.
- Bot sẽ tự khởi động lại, dùng cùng token và cài đặt như trước đó.
Một tin nhắn nhắc nhở qua DM được gửi 24 giờ sau lượt bình chọn gần nhất của bạn (12 giờ sau khi bắt đầu thời gian ân hạn), nhằm tránh tình trạng này. Nếu trạng thái bot hiển thị "suspended", chính trang đó sẽ cho biết đó là do bình chọn, do thời gian ân hạn, hay do một vấn đề khác trong danh sách dưới đây.
Noxyr đã bị xóa khỏi máy chủ
Custom Bot chạy dựa trên cài đặt và cơ sở dữ liệu của Noxyr cho máy chủ đó, nên nó phụ thuộc vào việc Noxyr vẫn còn là thành viên. Nếu Noxyr bị đuổi ra, custom bot sẽ ngừng phục vụ máy chủ đó trong vòng khoảng một phút, đồng thời gửi DM cho người đã xóa Noxyr (và chủ bot, nếu đó là người khác) kèm liên kết mời.
- Mời lại Noxyr bằng liên kết trong DM, hoặc từ trang chủ Noxyr.
- Custom bot sẽ tự hoạt động lại khi Noxyr trở lại máy chủ; bạn không cần động đến token hay intent.
Trong lúc bot dừng vì lý do cụ thể này, khoảng thời gian bình chọn được tạm dừng chứ không bị tiêu hao, nên việc mời lại Noxyr kịp thời sẽ không làm bạn mất thời gian.
Nếu không có cách nào ở trên hiệu quả
Trước tiên, hãy kiểm tra thông báo trạng thái trên trang Custom Bot; các node của Noxyr ghi lý do bằng ngôn ngữ dễ hiểu (token sai, intent sai, suspended, hoặc thông báo thử lại chung cho các trường hợp khác) thay vì chỉ một mã lỗi trơ trọi. Nếu thông báo trạng thái không khớp với bất kỳ trường hợp nào ở trên, hoặc bot vẫn ngoại tuyến sau khi bạn đã thử một cách sửa lẽ ra phải hiệu quả, Trung tâm hỗ trợ là cách nhanh nhất để nhờ người kiểm tra máy chủ cụ thể của bạn. Các bước thiết lập và khắc phục sự cố đầy đủ cũng có trong tài liệu Custom Bot.
Câu hỏi thường gặp
Vì sao bot của tôi ngoại tuyến ngay sau khi tôi không làm gì cả? "Không làm gì" thường nghĩa là một người khác có quyền truy cập portal hoặc máy chủ đã thay đổi điều gì đó: đặt lại token, bật/tắt intent, hoặc đuổi bot. Hãy kiểm tra thông báo trạng thái trên trang Custom Bot trước; nó sẽ nêu nguyên nhân.
Dữ liệu của tôi có bị mất nếu bot ngoại tuyến không? Không. Token, cài đặt, ticket, sản phẩm, hóa đơn và bản ghi hội thoại đều được giữ lại bất kể bot dừng vì lý do gì. Khi khắc phục nguyên nhân, mọi thứ sẽ trở lại đúng như trước.
Tôi có thể tránh hoàn toàn tình trạng ngoại tuyến do bình chọn không? Hãy bình chọn khoảng ba ngày rưỡi một lần (trước khi cửa sổ 12 giờ cộng với thời gian ân hạn 74 giờ hết hạn), và bot sẽ không bao giờ ngừng hoạt động vì lý do này.
Tôi có cần bật lại intent mỗi lần khởi động lại bot không? Không. Intent là một cài đặt trên chính ứng dụng Discord, không tự đặt lại. Khi cả hai đã được bật và lưu, chúng sẽ giữ nguyên trạng thái cho đến khi có người tắt chúng.
Sẵn sàng đưa bot hoạt động trở lại? Khắc phục nguyên nhân ở trên, rồi khởi động bot từ trang Custom Bot, hoặc thêm Noxyr miễn phí nếu bạn đang thiết lập lần đầu.