Spaces:
Runtime error
Runtime error
| const client = require('../bot/index'); | |
| // QUEUE SYSTEM FOR DISCORD RATE LIMITS (Max 1 msg per 500ms) | |
| const messageQueue = []; | |
| let isProcessingQueue = false; | |
| setInterval(async () => { | |
| if (messageQueue.length === 0 || isProcessingQueue) return; | |
| isProcessingQueue = true; | |
| const task = messageQueue.shift(); | |
| try { | |
| const user = await client.users.fetch(task.discordId); | |
| if (user) { | |
| await user.send(task.message); | |
| } else { | |
| console.log(`[Notification] Could not find Discord User ${task.discordId}`); | |
| } | |
| } catch (error) { | |
| console.error(`[Notification] Failed to send DM to ${task.discordId}:`, error.message); | |
| } | |
| isProcessingQueue = false; | |
| }, 500); // 500ms safe interval | |
| /** | |
| * Pushes a Direct Message into the secure Discord Throttle Queue. | |
| * @param {string} discordId - The user's Discord ID. | |
| * @param {string} message - The message content. | |
| */ | |
| async function sendNotification(discordId, message) { | |
| messageQueue.push({ discordId, message }); | |
| } | |
| module.exports = { sendNotification }; | |