UNPKG

nobloxmmc.js

Version:

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

65 lines (61 loc) 1.84 kB
// Dependencies var Promise = require('bluebird') // Includes var settings = require('../../settings.json') var shortPoll = require('../util/shortPoll.js').func var getJoinRequests = require('./getJoinRequests.js').func var handleJoinRequestId = require('./handleJoinRequestId.js').func // Args exports.required = ['group'] exports.optional = ['jar'] // Define exports.func = function (args) { var group = args.group var jar = args.jar var timeout = settings.event.timeout function getLatest (latest, evt) { return getJoinRequests({ jar: jar, group: group }) .timeout(timeout) .then(function (requests) { var complete = { data: [], latest: -2, repeat: requests.length >= 20 } var handled = 0 var promise if (requests.length > 0) { promise = new Promise(function (resolve, reject) { evt.on('handle', function (request, accept, callback) { var id = request.requestId handleJoinRequestId({ jar: jar, group: group, requestId: id, accept: accept }) .then(function () { handled++ if (callback) { callback() } if (handled === requests.length) { evt.removeAllListeners('handle') resolve(complete) } }) .catch(reject) }) }) } for (var i = 0; i < requests.length; i++) { var request = requests[i] evt.emit('data', request) } if (requests.length > 0) { return promise } return complete }) } return shortPoll({ getLatest: getLatest, delay: 'onJoinRequestHandle', timeout: -1 }) }