Thời gian cooldown gốc (seconds)
Ví dụ: 5 hoặc "5" hoặc "5s" = 5 giây
Optionalmessagemessage
Hàm custom message khi user đang trong cooldown.
Parameters: ms → thời gian còn lại (seconds) ctx → context của command (interaction/message) commandName → tên command đang chạy
Return: string hiển thị cho user
Ví dụ:
message: (ms, ctx) => `này <@${ctx.userId}> vui lòng chờ ${ms} giây trước khi sử dụng lại lệnh ${ctx.commandName}.`
OptionalpermissionpermissionBypass
Nếu member có quyền tương ứng → bỏ qua hoàn toàn cooldown
Ví dụ: permissionBypass: PermissionLevel.ADMIN hoặc [PermissionLevel.ADMIN, ....]
OptionalroleroleWeights
Cho phép giảm cooldown dựa trên role.
Key: roleId Value: multiplier (0 < number ≤ 1)
Ví dụ: VIP = 0.5 → giảm 50%
Nếu user có nhiều role được cấu hình: → Lấy weight nhỏ nhất (cooldown ngắn nhất)
roleWeights: (guildID, memberID) => {
console.log("guildID", guildID);
console.log("memberID", memberID);
return {
memberID: 0.1, // giảm 10%
};
},
Phạm vi áp dụng cooldown
Có thể:
Nếu dùng nhiều scope: → Chỉ cần 1 scope còn hiệu lực là bị block
CooldownConfig
Cấu hình cooldown cho từng command.
Ví dụ: cooldown: { duration: 10, scope: "user+role", roleWeights: { VIP_ID: 0.5 }, permissionBypass: PermissionLevel.ADMIN }