UNPKG

nobloxmmc.js

Version:

A Node.js wrapper for ROBLOX. (original from sentanos)

68 lines (63 loc) 1.97 kB
// Dependencies var events = require('events') // Includes var onNotification = require('./onNotification.js').func var getMessages = require('./getMessages.js').func // Args exports.optional = ['jar'] // Define exports.func = function (args) { var jar = args.jar var onMessage = new events.EventEmitter() var waitingForRequest = false var latest getMessages({ jar: jar, page: 1, limit: 1 }) .then(function (initial) { latest = initial.messages[0] ? initial.messages[0].id : 0 var notifications = onNotification({ jar: jar }) notifications.on('data', function (name, message) { if (name === 'NotificationStream' && message.Type === 'NewNotification') { if (waitingForRequest) { waitingForRequest = false } else { getMessages({ jar: jar, page: 1 }) .then(function (inbox) { var messages = inbox.messages for (var i = messages.length - 1; i >= 0; i--) { var message = messages[i] var id = message.id if (id > latest) { latest = id onMessage.emit('data', message) } } }) } } else if (name === 'FriendshipNotifications' && message.Type === 'FriendshipRequested') { waitingForRequest = true } }) notifications.on('error', function (err) { onMessage.emit('error', err) }) notifications.on('connect', function () { onMessage.emit('connect') }) notifications.on('close', function (internal) { if (internal) { return } onMessage.emit('close', true) }) onMessage.on('close', function (internal) { if (internal) { return } notifications.emit('close', true) }) }) return onMessage }