noblox-asset.js 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
- package/.github/workflows/doc-publish.yml +33 -0
- package/.github/workflows/npmpublish.yml +72 -0
- package/.github/workflows/run-tests.yml +49 -0
- package/CODE_OF_CONDUCT.md +76 -0
- package/LICENSE +21 -0
- package/README.md +182 -0
- package/eslint.config.mjs +34 -0
- package/examples/cleanPlayers.js +130 -0
- package/examples/cleanWall.js +110 -0
- package/examples/revertRanks.js +100 -0
- package/examples/savePlayers.js +119 -0
- package/examples/saveWall.js +96 -0
- package/img/moderatedThumbnails/moderatedThumbnail_100x100.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_110x110.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_140x140.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_150x150.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_150x200.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_180x180.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_250x250.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_30x30.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_352x352.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_420x420.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_48x48.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_50x50.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_60x60.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_720x720.png +0 -0
- package/img/moderatedThumbnails/moderatedThumbnail_75x75.png +0 -0
- package/img/noblox-js-small.png +0 -0
- package/img/noblox-js.png +0 -0
- package/img/thumbnailSizes.png +0 -0
- package/jsDocsConfig.json +55 -0
- package/lib/accountinformation/getUserSocialLinks.js +40 -0
- package/lib/accountsettings/block.js +53 -0
- package/lib/accountsettings/unblock.js +53 -0
- package/lib/asset/deleteFromInventory.js +56 -0
- package/lib/asset/getGamePassProductInfo.js +50 -0
- package/lib/asset/getProductInfo.js +46 -0
- package/lib/asset/uploadAnimation.js +103 -0
- package/lib/asset/uploadItem.js +83 -0
- package/lib/asset/uploadModel.js +90 -0
- package/lib/avatar/avatarRules.js +39 -0
- package/lib/avatar/currentlyWearing.js +33 -0
- package/lib/avatar/getAvatar.js +36 -0
- package/lib/avatar/getCurrentAvatar.js +38 -0
- package/lib/avatar/getRecentItems.js +36 -0
- package/lib/avatar/outfitDetails.js +33 -0
- package/lib/avatar/outfits.js +38 -0
- package/lib/avatar/redrawAvatar.js +47 -0
- package/lib/avatar/removeAssetId.js +51 -0
- package/lib/avatar/setAvatarBodyColors.js +61 -0
- package/lib/avatar/setAvatarScales.js +61 -0
- package/lib/avatar/setPlayerAvatarType.js +51 -0
- package/lib/avatar/setWearingAssets.js +51 -0
- package/lib/avatar/wearAssetId.js +51 -0
- package/lib/badges/getAwardedTimestamps.js +49 -0
- package/lib/badges/getBadgeInfo.js +44 -0
- package/lib/badges/getGameBadges.js +63 -0
- package/lib/badges/getPlayerBadges.js +28 -0
- package/lib/badges/updateBadgeInfo.js +75 -0
- package/lib/cache/add.js +14 -0
- package/lib/cache/addIf.js +26 -0
- package/lib/cache/clear.js +8 -0
- package/lib/cache/get.js +28 -0
- package/lib/cache/index.js +17 -0
- package/lib/cache/new.js +12 -0
- package/lib/cache/wrap.js +25 -0
- package/lib/chat/addUsersToConversation.js +58 -0
- package/lib/chat/chatSettings.js +34 -0
- package/lib/chat/getChatMessages.js +41 -0
- package/lib/chat/getConversations.js +44 -0
- package/lib/chat/getRolloutSettings.js +36 -0
- package/lib/chat/getUnreadConversationCount.js +34 -0
- package/lib/chat/getUnreadMessages.js +39 -0
- package/lib/chat/getUserConversations.js +38 -0
- package/lib/chat/markChatAsRead.js +53 -0
- package/lib/chat/markChatAsSeen.js +51 -0
- package/lib/chat/multiGetLatestMessages.js +38 -0
- package/lib/chat/onNewConversation.js +50 -0
- package/lib/chat/onNewMessage.js +53 -0
- package/lib/chat/onNewMessageBySelf.js +50 -0
- package/lib/chat/onUserOnline.js +50 -0
- package/lib/chat/onUserTyping.js +54 -0
- package/lib/chat/removeFromGroupConversation.js +59 -0
- package/lib/chat/renameGroupConversation.js +58 -0
- package/lib/chat/sendChatMessage.js +58 -0
- package/lib/chat/setChatUserTyping.js +58 -0
- package/lib/chat/start121Conversation.js +51 -0
- package/lib/chat/startCloudEditConversation.js +51 -0
- package/lib/chat/startGroupConversation.js +59 -0
- package/lib/client/onNotification.js +86 -0
- package/lib/client/setAPIKey.js +18 -0
- package/lib/client/setCookie.js +38 -0
- package/lib/datastores/deleteDatastoreEntry.js +56 -0
- package/lib/datastores/getDatastoreEntry.js +88 -0
- package/lib/datastores/getDatastoreEntryVersions.js +73 -0
- package/lib/datastores/getDatastoreKeys.js +63 -0
- package/lib/datastores/getDatastores.js +62 -0
- package/lib/datastores/incrementDatastoreEntry.js +83 -0
- package/lib/datastores/setDatastoreEntry.js +80 -0
- package/lib/develop/canManage.js +42 -0
- package/lib/develop/configureItem.js +210 -0
- package/lib/develop/updateUniverse.js +52 -0
- package/lib/develop/updateUniverseAccess.js +54 -0
- package/lib/economy/getGroupFunds.js +42 -0
- package/lib/economy/getGroupPayoutEligibility.js +55 -0
- package/lib/economy/getGroupRevenueSummary.js +42 -0
- package/lib/economy/getGroupTransactions.js +32 -0
- package/lib/economy/getResaleData.js +48 -0
- package/lib/economy/getResellers.js +35 -0
- package/lib/economy/getUserFunds.js +43 -0
- package/lib/economy/getUserTransactions.js +34 -0
- package/lib/economy/onGroupTransaction.js +74 -0
- package/lib/friends/acceptFriendRequest.js +54 -0
- package/lib/friends/declineAllFriendRequests.js +52 -0
- package/lib/friends/declineFriendRequest.js +54 -0
- package/lib/friends/getFollowerCount.js +35 -0
- package/lib/friends/getFollowers.js +56 -0
- package/lib/friends/getFollowingCount.js +35 -0
- package/lib/friends/getFollowings.js +56 -0
- package/lib/friends/getFriendCount.js +35 -0
- package/lib/friends/getFriendRequests.js +51 -0
- package/lib/friends/getFriends.js +48 -0
- package/lib/friends/onFriendRequest.js +58 -0
- package/lib/friends/removeFriend.js +53 -0
- package/lib/friends/sendFriendRequest.js +54 -0
- package/lib/friends/unfollow.js +53 -0
- package/lib/games/addDeveloperProduct.js +53 -0
- package/lib/games/configureGamePass.js +126 -0
- package/lib/games/getDeveloperProducts.js +44 -0
- package/lib/games/getGameInstances.js +31 -0
- package/lib/games/getGamePasses.js +39 -0
- package/lib/games/getGameRevenue.js +48 -0
- package/lib/games/getGameSocialLinks.js +42 -0
- package/lib/games/getGroupGames.js +30 -0
- package/lib/games/getPlaceInfo.js +47 -0
- package/lib/games/getUniverseInfo.js +50 -0
- package/lib/games/publishToTopic.js +52 -0
- package/lib/games/sendUserNotification.js +65 -0
- package/lib/games/updateDeveloperProduct.js +56 -0
- package/lib/groups/banFromGroup.js +47 -0
- package/lib/groups/changeRank.js +59 -0
- package/lib/groups/deleteWallPost.js +59 -0
- package/lib/groups/deleteWallPostsByUser.js +55 -0
- package/lib/groups/demote.js +25 -0
- package/lib/groups/exile.js +55 -0
- package/lib/groups/getAuditLog.js +64 -0
- package/lib/groups/getGroup.js +50 -0
- package/lib/groups/getGroupBans.js +37 -0
- package/lib/groups/getGroupSocialLinks.js +41 -0
- package/lib/groups/getGroups.js +82 -0
- package/lib/groups/getJoinRequest.js +47 -0
- package/lib/groups/getJoinRequests.js +53 -0
- package/lib/groups/getPlayers.js +103 -0
- package/lib/groups/getRankInGroup.js +45 -0
- package/lib/groups/getRankNameInGroup.js +44 -0
- package/lib/groups/getRole.js +64 -0
- package/lib/groups/getRolePermissions.js +48 -0
- package/lib/groups/getRoles.js +53 -0
- package/lib/groups/getShout.js +47 -0
- package/lib/groups/getWall.js +56 -0
- package/lib/groups/groupPayout.js +103 -0
- package/lib/groups/handleJoinRequest.js +57 -0
- package/lib/groups/handleJoinRequests.js +61 -0
- package/lib/groups/leaveGroup.js +56 -0
- package/lib/groups/onAuditLog.js +62 -0
- package/lib/groups/onJoinRequest.js +63 -0
- package/lib/groups/onJoinRequestHandle.js +105 -0
- package/lib/groups/onShout.js +57 -0
- package/lib/groups/onWallPost.js +58 -0
- package/lib/groups/promote.js +25 -0
- package/lib/groups/searchGroups.js +32 -0
- package/lib/groups/setGroupDescription.js +58 -0
- package/lib/groups/setGroupName.js +59 -0
- package/lib/groups/setRank.js +74 -0
- package/lib/groups/setRoleInfo.js +84 -0
- package/lib/groups/shout.js +58 -0
- package/lib/groups/unbanFromGroup.js +41 -0
- package/lib/index.js +212 -0
- package/lib/internal/levelOneCopy.js +16 -0
- package/lib/internal/queue.js +61 -0
- package/lib/internal/timeout.js +30 -0
- package/lib/internal/wrap.js +78 -0
- package/lib/inventory/getCollectibles.js +31 -0
- package/lib/inventory/getInventory.js +32 -0
- package/lib/inventory/getInventoryById.js +31 -0
- package/lib/inventory/getOwnership.js +47 -0
- package/lib/inventory/getUAIDs.js +47 -0
- package/lib/itemconfiguration/getGroupAssets.js +32 -0
- package/lib/options.js +26 -0
- package/lib/party/onPartyDeleted.js +53 -0
- package/lib/party/onPartyInvite.js +53 -0
- package/lib/party/onPartyJoinedGame.js +53 -0
- package/lib/party/onPartyLeftGame.js +53 -0
- package/lib/party/onPartySelfJoined.js +53 -0
- package/lib/party/onPartySelfLeft.js +53 -0
- package/lib/party/onPartyUserJoined.js +53 -0
- package/lib/party/onPartyUserLeft.js +53 -0
- package/lib/premiumfeatures/getPremium.js +46 -0
- package/lib/presence/getPresences.js +60 -0
- package/lib/privatemessages/getMessages.js +55 -0
- package/lib/privatemessages/message.js +75 -0
- package/lib/privatemessages/onMessage.js +89 -0
- package/lib/thumbnails/getLogo.js +56 -0
- package/lib/thumbnails/getPlayerThumbnail.js +120 -0
- package/lib/thumbnails/getThumbnails.js +92 -0
- package/lib/trades/acceptTrade.js +52 -0
- package/lib/trades/canTradeWith.js +43 -0
- package/lib/trades/counterTrade.js +78 -0
- package/lib/trades/declineTrade.js +52 -0
- package/lib/trades/getTradeInfo.js +47 -0
- package/lib/trades/getTrades.js +37 -0
- package/lib/trades/sendTrade.js +76 -0
- package/lib/users/getBlurb.js +37 -0
- package/lib/users/getIdFromUsername.js +56 -0
- package/lib/users/getPlayerInfo.js +128 -0
- package/lib/users/getUserInfo.js +35 -0
- package/lib/users/getUsernameFromId.js +45 -0
- package/lib/users/getUsernameHistory.js +42 -0
- package/lib/users/onBlurbChange.js +46 -0
- package/lib/users/searchUsers.js +41 -0
- package/lib/util/apiError.js +50 -0
- package/lib/util/clearSession.js +32 -0
- package/lib/util/generalRequest.js +61 -0
- package/lib/util/getAction.js +45 -0
- package/lib/util/getAuthenticatedUser.js +41 -0
- package/lib/util/getCurrentUser.js +58 -0
- package/lib/util/getGeneralToken.js +52 -0
- package/lib/util/getHash.js +29 -0
- package/lib/util/getInputs.js +37 -0
- package/lib/util/getPageResults.js +86 -0
- package/lib/util/getSenderUserId.js +30 -0
- package/lib/util/getSession.js +38 -0
- package/lib/util/getVerification.js +60 -0
- package/lib/util/getVerificationInputs.js +31 -0
- package/lib/util/http.js +138 -0
- package/lib/util/jar.js +25 -0
- package/lib/util/refreshCookie.js +52 -0
- package/lib/util/relog.js +81 -0
- package/lib/util/setOptions.js +54 -0
- package/lib/util/shortPoll.js +102 -0
- package/package.json +76 -0
- package/postinstall.mjs +1 -0
- package/settings.json +115 -0
- package/test/accountinformation.test.js +27 -0
- package/test/accountsettings.test.js +27 -0
- package/test/asset.test.js +81 -0
- package/test/assets/Great-White-Shark-Fin.rbxm +0 -0
- package/test/assets/KeyframeSequence.rbxm +0 -0
- package/test/avatar.test.js +164 -0
- package/test/badges.test.js +96 -0
- package/test/chat.test.js +104 -0
- package/test/datastore.test.js +105 -0
- package/test/develop.test.js +53 -0
- package/test/economy.test.js +143 -0
- package/test/friends.test.js +146 -0
- package/test/games.test.js +229 -0
- package/test/groups.test.js +405 -0
- package/test/inventory.test.js +98 -0
- package/test/itemconfiguration.test.js +24 -0
- package/test/premiumfeatures.test.js +17 -0
- package/test/presence.test.js +25 -0
- package/test/privatemessages.test.js +33 -0
- package/test/thumbnails.test.js +53 -0
- package/test/users.test.js +110 -0
- package/tutorials/Authentication.md +75 -0
- package/tutorials/Event Emitters.md +26 -0
- package/tutorials/Promises.md +86 -0
- package/tutorials/VPS Authentication.md +72 -0
- package/typings/index.d.ts +2639 -0
- package/typings/jsDocs.ts +1987 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Includes
|
|
2
|
+
const http = require('../util/http.js').func
|
|
3
|
+
const getGeneralToken = require('../util/getGeneralToken.js').func
|
|
4
|
+
const RobloxAPIError = require('../util/apiError.js')
|
|
5
|
+
|
|
6
|
+
// Args
|
|
7
|
+
exports.required = ['group']
|
|
8
|
+
exports.optional = ['description', 'jar']
|
|
9
|
+
|
|
10
|
+
// Docs
|
|
11
|
+
/**
|
|
12
|
+
* 🔐 Update a group description
|
|
13
|
+
* @category Group
|
|
14
|
+
* @alias setGroupDescription
|
|
15
|
+
* @param {number} group - The id of the group.
|
|
16
|
+
* @param {string=} [description=""] - The new description for the group
|
|
17
|
+
* @returns {Promise<GroupDescriptionResult>}
|
|
18
|
+
* @example const noblox = require("noblox.js")
|
|
19
|
+
* // Login using your cookie
|
|
20
|
+
* noblox.setGroupDescription(1, "Group Description!")
|
|
21
|
+
**/
|
|
22
|
+
|
|
23
|
+
function changeGroupDesc (group, description = '', jar, xcsrf) {
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
|
+
const httpOpt = {
|
|
26
|
+
url: `https://groups.roblox.com/v1/groups/${group}/description`,
|
|
27
|
+
options: {
|
|
28
|
+
method: 'PATCH',
|
|
29
|
+
resolveWithFullResponse: true,
|
|
30
|
+
json: {
|
|
31
|
+
description
|
|
32
|
+
},
|
|
33
|
+
jar,
|
|
34
|
+
headers: {
|
|
35
|
+
'X-CSRF-TOKEN': xcsrf
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return http(httpOpt)
|
|
41
|
+
.then(function (res) {
|
|
42
|
+
if (res.statusCode === 200) {
|
|
43
|
+
resolve(res.body)
|
|
44
|
+
} else {
|
|
45
|
+
reject(new RobloxAPIError(res))
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Define
|
|
52
|
+
exports.func = function (args) {
|
|
53
|
+
const jar = args.jar
|
|
54
|
+
return getGeneralToken({ jar })
|
|
55
|
+
.then(function (xcsrf) {
|
|
56
|
+
return changeGroupDesc(args.group, args.description, args.jar, xcsrf)
|
|
57
|
+
})
|
|
58
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Includes
|
|
2
|
+
const http = require('../util/http.js').func
|
|
3
|
+
const getGeneralToken = require('../util/getGeneralToken.js').func
|
|
4
|
+
const RobloxAPIError = require('../util/apiError.js')
|
|
5
|
+
|
|
6
|
+
// Args
|
|
7
|
+
exports.required = ['group', 'name']
|
|
8
|
+
exports.optional = ['jar']
|
|
9
|
+
|
|
10
|
+
// Docs
|
|
11
|
+
/**
|
|
12
|
+
* 🔐 Update a group name. This method will trigger a Robux charge to your account, and can only be performed by the group
|
|
13
|
+
* owner.
|
|
14
|
+
* @category Group
|
|
15
|
+
* @alias setGroupName
|
|
16
|
+
* @param {number} group - The id of the group.
|
|
17
|
+
* @param {string=} name - The new name for the group
|
|
18
|
+
* @returns {Promise<GroupNameResult>}
|
|
19
|
+
* @example const noblox = require("noblox.js")
|
|
20
|
+
* // Login using your cookie
|
|
21
|
+
* noblox.setGroupName(1, "Cool group")
|
|
22
|
+
**/
|
|
23
|
+
|
|
24
|
+
function changeGroupName (group, name, jar, xcsrf) {
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
const httpOpt = {
|
|
27
|
+
url: `https://groups.roblox.com/v1/groups/${group}/name`,
|
|
28
|
+
options: {
|
|
29
|
+
method: 'PATCH',
|
|
30
|
+
resolveWithFullResponse: true,
|
|
31
|
+
json: {
|
|
32
|
+
name
|
|
33
|
+
},
|
|
34
|
+
jar,
|
|
35
|
+
headers: {
|
|
36
|
+
'X-CSRF-TOKEN': xcsrf
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return http(httpOpt)
|
|
42
|
+
.then(function (res) {
|
|
43
|
+
if (res.statusCode === 200) {
|
|
44
|
+
resolve(res.body)
|
|
45
|
+
} else {
|
|
46
|
+
reject(new RobloxAPIError(res))
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Define
|
|
53
|
+
exports.func = function (args) {
|
|
54
|
+
const jar = args.jar
|
|
55
|
+
return getGeneralToken({ jar })
|
|
56
|
+
.then(function (xcsrf) {
|
|
57
|
+
return changeGroupName(args.group, args.name, args.jar, xcsrf)
|
|
58
|
+
})
|
|
59
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Includes
|
|
2
|
+
const http = require('../util/http.js').func
|
|
3
|
+
const getGeneralToken = require('../util/getGeneralToken.js').func
|
|
4
|
+
const getRole = require('./getRole.js').func
|
|
5
|
+
const RobloxAPIError = require('../util/apiError.js')
|
|
6
|
+
|
|
7
|
+
// Args
|
|
8
|
+
exports.required = ['group', 'target', 'rank']
|
|
9
|
+
exports.optional = ['jar']
|
|
10
|
+
|
|
11
|
+
// Docs
|
|
12
|
+
/**
|
|
13
|
+
* 🔐 Change a user's rank.
|
|
14
|
+
* @category Group
|
|
15
|
+
* @alias setRank
|
|
16
|
+
* @param {number} group - The id of the group.
|
|
17
|
+
* @param {number} target - The id of the user whose rank is being changed.
|
|
18
|
+
* @param {number | string | Role} rank - The rank, roleset ID, name of the role, or the actual Role itself.
|
|
19
|
+
* @returns {Promise<Role>}
|
|
20
|
+
* @example const noblox = require("noblox.js")
|
|
21
|
+
* // Login using your cookie
|
|
22
|
+
* noblox.setRank(1, 1, "Customer")
|
|
23
|
+
**/
|
|
24
|
+
|
|
25
|
+
// Define
|
|
26
|
+
function setRank (jar, xcsrf, group, target, role) {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const httpOpt = {
|
|
29
|
+
url: `//groups.roblox.com/v1/groups/${group}/users/${target}`,
|
|
30
|
+
options: {
|
|
31
|
+
resolveWithFullResponse: true,
|
|
32
|
+
method: 'PATCH',
|
|
33
|
+
jar,
|
|
34
|
+
headers: {
|
|
35
|
+
'Content-Type': 'application/json',
|
|
36
|
+
'X-CSRF-TOKEN': xcsrf
|
|
37
|
+
},
|
|
38
|
+
body: JSON.stringify({
|
|
39
|
+
roleId: role.id
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return http(httpOpt)
|
|
44
|
+
.then(function (res) {
|
|
45
|
+
if (res.statusCode === 200) {
|
|
46
|
+
resolve(role)
|
|
47
|
+
} else {
|
|
48
|
+
reject(new RobloxAPIError(res))
|
|
49
|
+
}
|
|
50
|
+
}).catch(error => reject(error))
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function runWithToken (args) {
|
|
55
|
+
const jar = args.jar
|
|
56
|
+
return getGeneralToken({ jar })
|
|
57
|
+
.then(function (xcsrf) {
|
|
58
|
+
return setRank(jar, xcsrf, args.group, args.target, args.role)
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
exports.func = function (args) {
|
|
63
|
+
if (typeof args.rank === 'object') { // assumes they gave Role
|
|
64
|
+
args.role = args.rank
|
|
65
|
+
return runWithToken(args)
|
|
66
|
+
} else if (typeof args.rank === 'number' || typeof args.rank === 'string') {
|
|
67
|
+
return getRole({ group: args.group, roleQuery: args.rank }).then((role) => {
|
|
68
|
+
args.role = role
|
|
69
|
+
return runWithToken(args)
|
|
70
|
+
})
|
|
71
|
+
} else {
|
|
72
|
+
throw new Error('Please provide either a Role, rank, or role name to change the user\'s rank to')
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Includes
|
|
2
|
+
const http = require('../util/http.js').func
|
|
3
|
+
const getGeneralToken = require('../util/getGeneralToken.js').func
|
|
4
|
+
const getRole = require('./getRole.js').func
|
|
5
|
+
|
|
6
|
+
// Args
|
|
7
|
+
exports.required = ['group', 'role', 'newRoleInfo']
|
|
8
|
+
exports.optional = ['jar']
|
|
9
|
+
|
|
10
|
+
// Docs
|
|
11
|
+
/**
|
|
12
|
+
* 🔐 Update a role's information
|
|
13
|
+
* @category Group
|
|
14
|
+
* @alias setRoleInfo
|
|
15
|
+
* @param {number} group - The id of the group.
|
|
16
|
+
* @param {number | string | Role} role - The rank, roleset ID, name of the role, or the actual Role itself.
|
|
17
|
+
* @param {Role} newRoleInfo - The new info for the role
|
|
18
|
+
* @returns {Promise<Role>}
|
|
19
|
+
* @example const noblox = require("noblox.js")
|
|
20
|
+
* // Login using your cookie
|
|
21
|
+
* noblox.setRoleInfo(1, 2342243, )
|
|
22
|
+
**/
|
|
23
|
+
|
|
24
|
+
// Define
|
|
25
|
+
function setRoleInfo (jar, xcsrf, group, role, newRoleInfo) {
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
const httpOpt = {
|
|
28
|
+
url: `//groups.roblox.com/v1/groups/${group}/rolesets/${role.id}`,
|
|
29
|
+
options: {
|
|
30
|
+
resolveWithFullResponse: true,
|
|
31
|
+
method: 'PATCH',
|
|
32
|
+
jar,
|
|
33
|
+
headers: {
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
'X-CSRF-TOKEN': xcsrf
|
|
36
|
+
},
|
|
37
|
+
body: JSON.stringify({
|
|
38
|
+
name: newRoleInfo.name,
|
|
39
|
+
rank: newRoleInfo.rank,
|
|
40
|
+
description: newRoleInfo.description
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return http(httpOpt)
|
|
45
|
+
.then(function (res) {
|
|
46
|
+
if (res.statusCode === 200) {
|
|
47
|
+
role.name = newRoleInfo.name
|
|
48
|
+
role.rank = newRoleInfo.rank
|
|
49
|
+
role.description = newRoleInfo.description
|
|
50
|
+
|
|
51
|
+
resolve(role)
|
|
52
|
+
} else {
|
|
53
|
+
const body = JSON.parse(res.body) || {}
|
|
54
|
+
if (body.errors && body.errors.length > 0) {
|
|
55
|
+
const errors = body.errors.map((e) => {
|
|
56
|
+
return e.message
|
|
57
|
+
})
|
|
58
|
+
reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}).catch(error => reject(error))
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function runWithToken (args) {
|
|
66
|
+
const jar = args.jar
|
|
67
|
+
return getGeneralToken({ jar })
|
|
68
|
+
.then(function (xcsrf) {
|
|
69
|
+
return setRoleInfo(jar, xcsrf, args.group, args.role, args.newRoleInfo)
|
|
70
|
+
})
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
exports.func = function (args) {
|
|
74
|
+
if (typeof args.role === 'object') { // assumes they gave Role
|
|
75
|
+
return runWithToken(args)
|
|
76
|
+
} else if (typeof args.role === 'number' || typeof args.role === 'string') {
|
|
77
|
+
return getRole({ group: args.group, roleQuery: args.role }).then((role) => {
|
|
78
|
+
args.role = role
|
|
79
|
+
return runWithToken(args)
|
|
80
|
+
})
|
|
81
|
+
} else {
|
|
82
|
+
throw new Error('Please provide either a Role, rank, or role name to change its info')
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Includes
|
|
2
|
+
const http = require('../util/http.js').func
|
|
3
|
+
const getGeneralToken = require('../util/getGeneralToken.js').func
|
|
4
|
+
const RobloxAPIError = require('../util/apiError.js')
|
|
5
|
+
|
|
6
|
+
// Args
|
|
7
|
+
exports.required = ['group']
|
|
8
|
+
exports.optional = ['message', 'jar']
|
|
9
|
+
|
|
10
|
+
// Docs
|
|
11
|
+
/**
|
|
12
|
+
* 🔐 Change a group's shout.
|
|
13
|
+
* @category Group
|
|
14
|
+
* @alias shout
|
|
15
|
+
* @param {number} group - The id of the group.
|
|
16
|
+
* @param {string=} [message=""] - The message to shout
|
|
17
|
+
* @returns {Promise<GroupShout>}
|
|
18
|
+
* @example const noblox = require("noblox.js")
|
|
19
|
+
* // Login using your cookie
|
|
20
|
+
* noblox.shout(1, "Hello world!")
|
|
21
|
+
**/
|
|
22
|
+
|
|
23
|
+
function shoutOnGroup (group, message = '', jar, xcsrf) {
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
|
+
const httpOpt = {
|
|
26
|
+
url: `https://groups.roblox.com/v1/groups/${group}/status`,
|
|
27
|
+
options: {
|
|
28
|
+
method: 'PATCH',
|
|
29
|
+
resolveWithFullResponse: true,
|
|
30
|
+
json: {
|
|
31
|
+
message
|
|
32
|
+
},
|
|
33
|
+
jar,
|
|
34
|
+
headers: {
|
|
35
|
+
'X-CSRF-TOKEN': xcsrf
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return http(httpOpt)
|
|
41
|
+
.then(function (res) {
|
|
42
|
+
if (res.statusCode === 200) {
|
|
43
|
+
resolve(res.body)
|
|
44
|
+
} else {
|
|
45
|
+
reject(new RobloxAPIError(res))
|
|
46
|
+
}
|
|
47
|
+
}).catch(error => reject(error))
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Define
|
|
52
|
+
exports.func = function (args) {
|
|
53
|
+
const jar = args.jar
|
|
54
|
+
return getGeneralToken({ jar })
|
|
55
|
+
.then(function (xcsrf) {
|
|
56
|
+
return shoutOnGroup(args.group, args.message, args.jar, xcsrf)
|
|
57
|
+
})
|
|
58
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Includes
|
|
2
|
+
const http = require('../util/http.js')
|
|
3
|
+
const getGeneralToken = require('../util/getGeneralToken.js')
|
|
4
|
+
const RobloxAPIError = require('../util/apiError.js')
|
|
5
|
+
|
|
6
|
+
// Args
|
|
7
|
+
exports.required = ['groupId', 'userId']
|
|
8
|
+
exports.optional = ['jar']
|
|
9
|
+
|
|
10
|
+
// Docs
|
|
11
|
+
/**
|
|
12
|
+
* 🔐 Unbans a user from the specified group.
|
|
13
|
+
* @alias unbanFromGroup
|
|
14
|
+
* @param {number} groupId - The ID of the group
|
|
15
|
+
* @param {number} userId - The ID of the target user
|
|
16
|
+
* @returns {Promise<void>}
|
|
17
|
+
* @example const noblox = require("noblox.js")
|
|
18
|
+
* // Log in
|
|
19
|
+
* await noblox.unbanFromGroup(1, 2)
|
|
20
|
+
**/
|
|
21
|
+
|
|
22
|
+
// Define
|
|
23
|
+
exports.func = async function (args) {
|
|
24
|
+
const { groupId, jar, userId } = args
|
|
25
|
+
const token = await getGeneralToken({ jar })
|
|
26
|
+
|
|
27
|
+
const response = await http({
|
|
28
|
+
url: `//groups.roblox.com/v1/groups/${groupId}/bans/${userId}`,
|
|
29
|
+
options: {
|
|
30
|
+
method: 'DELETE',
|
|
31
|
+
jar,
|
|
32
|
+
headers: {
|
|
33
|
+
'x-csrf-token': token
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
if (response.statusCode !== 200) {
|
|
39
|
+
throw new RobloxAPIError(response)
|
|
40
|
+
}
|
|
41
|
+
}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
const noblox = {}
|
|
2
|
+
|
|
3
|
+
noblox.getUserSocialLinks = require('./accountinformation/getUserSocialLinks.js')
|
|
4
|
+
noblox.block = require('./accountsettings/block.js')
|
|
5
|
+
noblox.unblock = require('./accountsettings/unblock.js')
|
|
6
|
+
noblox.deleteFromInventory = require('./asset/deleteFromInventory.js')
|
|
7
|
+
noblox.getGamePassProductInfo = require('./asset/getGamePassProductInfo.js')
|
|
8
|
+
noblox.getProductInfo = require('./asset/getProductInfo.js')
|
|
9
|
+
noblox.uploadAnimation = require('./asset/uploadAnimation.js')
|
|
10
|
+
noblox.uploadItem = require('./asset/uploadItem.js')
|
|
11
|
+
noblox.uploadModel = require('./asset/uploadModel.js')
|
|
12
|
+
noblox.avatarRules = require('./avatar/avatarRules.js')
|
|
13
|
+
noblox.currentlyWearing = require('./avatar/currentlyWearing.js')
|
|
14
|
+
noblox.getAvatar = require('./avatar/getAvatar.js')
|
|
15
|
+
noblox.getCurrentAvatar = require('./avatar/getCurrentAvatar.js')
|
|
16
|
+
noblox.getRecentItems = require('./avatar/getRecentItems.js')
|
|
17
|
+
noblox.outfitDetails = require('./avatar/outfitDetails.js')
|
|
18
|
+
noblox.outfits = require('./avatar/outfits.js')
|
|
19
|
+
noblox.redrawAvatar = require('./avatar/redrawAvatar.js')
|
|
20
|
+
noblox.removeAssetId = require('./avatar/removeAssetId.js')
|
|
21
|
+
noblox.setAvatarBodyColors = require('./avatar/setAvatarBodyColors.js')
|
|
22
|
+
noblox.setAvatarScales = require('./avatar/setAvatarScales.js')
|
|
23
|
+
noblox.setPlayerAvatarType = require('./avatar/setPlayerAvatarType.js')
|
|
24
|
+
noblox.setWearingAssets = require('./avatar/setWearingAssets.js')
|
|
25
|
+
noblox.wearAssetId = require('./avatar/wearAssetId.js')
|
|
26
|
+
noblox.getAwardedTimestamps = require('./badges/getAwardedTimestamps.js')
|
|
27
|
+
noblox.getBadgeInfo = require('./badges/getBadgeInfo.js')
|
|
28
|
+
noblox.getGameBadges = require('./badges/getGameBadges.js')
|
|
29
|
+
noblox.getPlayerBadges = require('./badges/getPlayerBadges.js')
|
|
30
|
+
noblox.updateBadgeInfo = require('./badges/updateBadgeInfo.js')
|
|
31
|
+
noblox.addUsersToConversation = require('./chat/addUsersToConversation.js')
|
|
32
|
+
noblox.chatSettings = require('./chat/chatSettings.js')
|
|
33
|
+
noblox.getChatMessages = require('./chat/getChatMessages.js')
|
|
34
|
+
noblox.getConversations = require('./chat/getConversations.js')
|
|
35
|
+
noblox.getRolloutSettings = require('./chat/getRolloutSettings.js')
|
|
36
|
+
noblox.getUnreadConversationCount = require('./chat/getUnreadConversationCount.js')
|
|
37
|
+
noblox.getUnreadMessages = require('./chat/getUnreadMessages.js')
|
|
38
|
+
noblox.getUserConversations = require('./chat/getUserConversations.js')
|
|
39
|
+
noblox.markChatAsRead = require('./chat/markChatAsRead.js')
|
|
40
|
+
noblox.markChatAsSeen = require('./chat/markChatAsSeen.js')
|
|
41
|
+
noblox.multiGetLatestMessages = require('./chat/multiGetLatestMessages.js')
|
|
42
|
+
noblox.onNewConversation = require('./chat/onNewConversation.js')
|
|
43
|
+
noblox.onNewMessage = require('./chat/onNewMessage.js')
|
|
44
|
+
noblox.onNewMessageBySelf = require('./chat/onNewMessageBySelf.js')
|
|
45
|
+
noblox.onUserOnline = require('./chat/onUserOnline.js')
|
|
46
|
+
noblox.onUserTyping = require('./chat/onUserTyping.js')
|
|
47
|
+
noblox.removeFromGroupConversation = require('./chat/removeFromGroupConversation.js')
|
|
48
|
+
noblox.renameGroupConversation = require('./chat/renameGroupConversation.js')
|
|
49
|
+
noblox.sendChatMessage = require('./chat/sendChatMessage.js')
|
|
50
|
+
noblox.setChatUserTyping = require('./chat/setChatUserTyping.js')
|
|
51
|
+
noblox.start121Conversation = require('./chat/start121Conversation.js')
|
|
52
|
+
noblox.startCloudEditConversation = require('./chat/startCloudEditConversation.js')
|
|
53
|
+
noblox.startGroupConversation = require('./chat/startGroupConversation.js')
|
|
54
|
+
noblox.onNotification = require('./client/onNotification.js')
|
|
55
|
+
noblox.setAPIKey = require('./client/setAPIKey.js')
|
|
56
|
+
noblox.setCookie = require('./client/setCookie.js')
|
|
57
|
+
noblox.deleteDatastoreEntry = require('./datastores/deleteDatastoreEntry.js')
|
|
58
|
+
noblox.getDatastoreEntry = require('./datastores/getDatastoreEntry.js')
|
|
59
|
+
noblox.getDatastoreEntryVersions = require('./datastores/getDatastoreEntryVersions.js')
|
|
60
|
+
noblox.getDatastoreKeys = require('./datastores/getDatastoreKeys.js')
|
|
61
|
+
noblox.getDatastores = require('./datastores/getDatastores.js')
|
|
62
|
+
noblox.incrementDatastoreEntry = require('./datastores/incrementDatastoreEntry.js')
|
|
63
|
+
noblox.setDatastoreEntry = require('./datastores/setDatastoreEntry.js')
|
|
64
|
+
noblox.canManage = require('./develop/canManage.js')
|
|
65
|
+
noblox.configureItem = require('./develop/configureItem.js')
|
|
66
|
+
noblox.updateUniverse = require('./develop/updateUniverse.js')
|
|
67
|
+
noblox.updateUniverseAccess = require('./develop/updateUniverseAccess.js')
|
|
68
|
+
noblox.getGroupFunds = require('./economy/getGroupFunds.js')
|
|
69
|
+
noblox.getGroupRevenueSummary = require('./economy/getGroupRevenueSummary.js')
|
|
70
|
+
noblox.getGroupTransactions = require('./economy/getGroupTransactions.js')
|
|
71
|
+
noblox.getResaleData = require('./economy/getResaleData.js')
|
|
72
|
+
noblox.getResellers = require('./economy/getResellers.js')
|
|
73
|
+
noblox.getUserFunds = require('./economy/getUserFunds.js')
|
|
74
|
+
noblox.getUserTransactions = require('./economy/getUserTransactions.js')
|
|
75
|
+
noblox.onGroupTransaction = require('./economy/onGroupTransaction.js')
|
|
76
|
+
noblox.acceptFriendRequest = require('./friends/acceptFriendRequest.js')
|
|
77
|
+
noblox.declineAllFriendRequests = require('./friends/declineAllFriendRequests.js')
|
|
78
|
+
noblox.declineFriendRequest = require('./friends/declineFriendRequest.js')
|
|
79
|
+
noblox.getFollowerCount = require('./friends/getFollowerCount.js')
|
|
80
|
+
noblox.getFollowers = require('./friends/getFollowers.js')
|
|
81
|
+
noblox.getFollowingCount = require('./friends/getFollowingCount.js')
|
|
82
|
+
noblox.getFollowings = require('./friends/getFollowings.js')
|
|
83
|
+
noblox.getFriendCount = require('./friends/getFriendCount.js')
|
|
84
|
+
noblox.getFriendRequests = require('./friends/getFriendRequests.js')
|
|
85
|
+
noblox.getFriends = require('./friends/getFriends.js')
|
|
86
|
+
noblox.onFriendRequest = require('./friends/onFriendRequest.js')
|
|
87
|
+
noblox.removeFriend = require('./friends/removeFriend.js')
|
|
88
|
+
noblox.sendFriendRequest = require('./friends/sendFriendRequest.js')
|
|
89
|
+
noblox.unfollow = require('./friends/unfollow.js')
|
|
90
|
+
noblox.addDeveloperProduct = require('./games/addDeveloperProduct.js')
|
|
91
|
+
noblox.configureGamePass = require('./games/configureGamePass.js')
|
|
92
|
+
noblox.getDeveloperProducts = require('./games/getDeveloperProducts.js')
|
|
93
|
+
noblox.getGameInstances = require('./games/getGameInstances.js')
|
|
94
|
+
noblox.getGamePasses = require('./games/getGamePasses.js')
|
|
95
|
+
noblox.getGameRevenue = require('./games/getGameRevenue.js')
|
|
96
|
+
noblox.getGameSocialLinks = require('./games/getGameSocialLinks.js')
|
|
97
|
+
noblox.getGroupGames = require('./games/getGroupGames.js')
|
|
98
|
+
noblox.getPlaceInfo = require('./games/getPlaceInfo.js')
|
|
99
|
+
noblox.getUniverseInfo = require('./games/getUniverseInfo.js')
|
|
100
|
+
noblox.sendUserNotification = require('./games/sendUserNotification.js')
|
|
101
|
+
noblox.publishToTopic = require('./games/publishToTopic.js')
|
|
102
|
+
noblox.updateDeveloperProduct = require('./games/updateDeveloperProduct.js')
|
|
103
|
+
noblox.changeRank = require('./groups/changeRank.js')
|
|
104
|
+
noblox.deleteWallPost = require('./groups/deleteWallPost.js')
|
|
105
|
+
noblox.deleteWallPostsByUser = require('./groups/deleteWallPostsByUser.js')
|
|
106
|
+
noblox.demote = require('./groups/demote.js')
|
|
107
|
+
noblox.exile = require('./groups/exile.js')
|
|
108
|
+
noblox.getAuditLog = require('./groups/getAuditLog.js')
|
|
109
|
+
noblox.getGroup = require('./groups/getGroup.js')
|
|
110
|
+
noblox.getGroupPayoutEligibility = require('./economy/getGroupPayoutEligibility.js')
|
|
111
|
+
noblox.getGroupSocialLinks = require('./groups/getGroupSocialLinks.js')
|
|
112
|
+
noblox.getGroups = require('./groups/getGroups.js')
|
|
113
|
+
noblox.getJoinRequest = require('./groups/getJoinRequest.js')
|
|
114
|
+
noblox.getJoinRequests = require('./groups/getJoinRequests.js')
|
|
115
|
+
noblox.getPlayers = require('./groups/getPlayers.js')
|
|
116
|
+
noblox.getRankInGroup = require('./groups/getRankInGroup.js')
|
|
117
|
+
noblox.getRankNameInGroup = require('./groups/getRankNameInGroup.js')
|
|
118
|
+
noblox.getRole = require('./groups/getRole.js')
|
|
119
|
+
noblox.getRolePermissions = require('./groups/getRolePermissions.js')
|
|
120
|
+
noblox.getRoles = require('./groups/getRoles.js')
|
|
121
|
+
noblox.getShout = require('./groups/getShout.js')
|
|
122
|
+
noblox.getWall = require('./groups/getWall.js')
|
|
123
|
+
noblox.groupPayout = require('./groups/groupPayout.js')
|
|
124
|
+
noblox.handleJoinRequest = require('./groups/handleJoinRequest.js')
|
|
125
|
+
noblox.handleJoinRequests = require('./groups/handleJoinRequests.js')
|
|
126
|
+
noblox.leaveGroup = require('./groups/leaveGroup.js')
|
|
127
|
+
noblox.onAuditLog = require('./groups/onAuditLog.js')
|
|
128
|
+
noblox.onJoinRequest = require('./groups/onJoinRequest.js')
|
|
129
|
+
noblox.onJoinRequestHandle = require('./groups/onJoinRequestHandle.js')
|
|
130
|
+
noblox.onShout = require('./groups/onShout.js')
|
|
131
|
+
noblox.onWallPost = require('./groups/onWallPost.js')
|
|
132
|
+
noblox.promote = require('./groups/promote.js')
|
|
133
|
+
noblox.searchGroups = require('./groups/searchGroups.js')
|
|
134
|
+
noblox.setGroupDescription = require('./groups/setGroupDescription.js')
|
|
135
|
+
noblox.setGroupName = require('./groups/setGroupName.js')
|
|
136
|
+
noblox.setRank = require('./groups/setRank.js')
|
|
137
|
+
noblox.setRoleInfo = require('./groups/setRoleInfo.js')
|
|
138
|
+
noblox.shout = require('./groups/shout.js')
|
|
139
|
+
noblox.index = require('./index.js')
|
|
140
|
+
noblox.levelOneCopy = require('./internal/levelOneCopy.js')
|
|
141
|
+
noblox.queue = require('./internal/queue.js')
|
|
142
|
+
noblox.timeout = require('./internal/timeout.js')
|
|
143
|
+
noblox.wrap = require('./internal/wrap.js')
|
|
144
|
+
noblox.getCollectibles = require('./inventory/getCollectibles.js')
|
|
145
|
+
noblox.getInventory = require('./inventory/getInventory.js')
|
|
146
|
+
noblox.getInventoryById = require('./inventory/getInventoryById.js')
|
|
147
|
+
noblox.getOwnership = require('./inventory/getOwnership.js')
|
|
148
|
+
noblox.getUAIDs = require('./inventory/getUAIDs.js')
|
|
149
|
+
noblox.getGroupAssets = require('./itemconfiguration/getGroupAssets.js')
|
|
150
|
+
noblox.options = require('./options.js')
|
|
151
|
+
noblox.onPartyDeleted = require('./party/onPartyDeleted.js')
|
|
152
|
+
noblox.onPartyInvite = require('./party/onPartyInvite.js')
|
|
153
|
+
noblox.onPartyJoinedGame = require('./party/onPartyJoinedGame.js')
|
|
154
|
+
noblox.onPartyLeftGame = require('./party/onPartyLeftGame.js')
|
|
155
|
+
noblox.onPartySelfJoined = require('./party/onPartySelfJoined.js')
|
|
156
|
+
noblox.onPartySelfLeft = require('./party/onPartySelfLeft.js')
|
|
157
|
+
noblox.onPartyUserJoined = require('./party/onPartyUserJoined.js')
|
|
158
|
+
noblox.onPartyUserLeft = require('./party/onPartyUserLeft.js')
|
|
159
|
+
noblox.getPremium = require('./premiumfeatures/getPremium.js')
|
|
160
|
+
noblox.getPresences = require('./presence/getPresences.js')
|
|
161
|
+
noblox.getMessages = require('./privatemessages/getMessages.js')
|
|
162
|
+
noblox.message = require('./privatemessages/message.js')
|
|
163
|
+
noblox.onMessage = require('./privatemessages/onMessage.js')
|
|
164
|
+
noblox.getLogo = require('./thumbnails/getLogo.js')
|
|
165
|
+
noblox.getPlayerThumbnail = require('./thumbnails/getPlayerThumbnail.js')
|
|
166
|
+
noblox.getThumbnails = require('./thumbnails/getThumbnails.js')
|
|
167
|
+
noblox.acceptTrade = require('./trades/acceptTrade.js')
|
|
168
|
+
noblox.canTradeWith = require('./trades/canTradeWith.js')
|
|
169
|
+
noblox.counterTrade = require('./trades/counterTrade.js')
|
|
170
|
+
noblox.declineTrade = require('./trades/declineTrade.js')
|
|
171
|
+
noblox.getTradeInfo = require('./trades/getTradeInfo.js')
|
|
172
|
+
noblox.getTrades = require('./trades/getTrades.js')
|
|
173
|
+
noblox.sendTrade = require('./trades/sendTrade.js')
|
|
174
|
+
noblox.getBlurb = require('./users/getBlurb.js')
|
|
175
|
+
noblox.getIdFromUsername = require('./users/getIdFromUsername.js')
|
|
176
|
+
noblox.getPlayerInfo = require('./users/getPlayerInfo.js')
|
|
177
|
+
noblox.getUserInfo = require('./users/getUserInfo.js')
|
|
178
|
+
noblox.getUsernameFromId = require('./users/getUsernameFromId.js')
|
|
179
|
+
noblox.getUsernameHistory = require('./users/getUsernameHistory.js')
|
|
180
|
+
noblox.onBlurbChange = require('./users/onBlurbChange.js')
|
|
181
|
+
noblox.searchUsers = require('./users/searchUsers.js')
|
|
182
|
+
noblox.clearSession = require('./util/clearSession.js')
|
|
183
|
+
noblox.generalRequest = require('./util/generalRequest.js')
|
|
184
|
+
noblox.getAction = require('./util/getAction.js')
|
|
185
|
+
noblox.getAuthenticatedUser = require('./util/getAuthenticatedUser.js')
|
|
186
|
+
noblox.getCurrentUser = require('./util/getCurrentUser.js')
|
|
187
|
+
noblox.getGeneralToken = require('./util/getGeneralToken.js')
|
|
188
|
+
noblox.getHash = require('./util/getHash.js')
|
|
189
|
+
noblox.getInputs = require('./util/getInputs.js')
|
|
190
|
+
noblox.getPageResults = require('./util/getPageResults.js')
|
|
191
|
+
noblox.getSenderUserId = require('./util/getSenderUserId.js')
|
|
192
|
+
noblox.getSession = require('./util/getSession.js')
|
|
193
|
+
noblox.getVerification = require('./util/getVerification.js')
|
|
194
|
+
noblox.getVerificationInputs = require('./util/getVerificationInputs.js')
|
|
195
|
+
noblox.http = require('./util/http.js')
|
|
196
|
+
noblox.jar = require('./util/jar.js')
|
|
197
|
+
noblox.refreshCookie = require('./util/refreshCookie.js')
|
|
198
|
+
noblox.relog = require('./util/relog.js')
|
|
199
|
+
noblox.setOptions = require('./util/setOptions.js')
|
|
200
|
+
noblox.shortPoll = require('./util/shortPoll.js')
|
|
201
|
+
|
|
202
|
+
for (const name in noblox) {
|
|
203
|
+
const exporter = noblox[name]
|
|
204
|
+
if (Object.prototype.hasOwnProperty.call(exporter, 'func')) {
|
|
205
|
+
module.exports[name] = noblox.wrap.wrapExport(exporter.func, exporter.required || [], exporter.optional || [])
|
|
206
|
+
} else {
|
|
207
|
+
module.exports[name] = noblox[name]
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
exports.options = require('./options.js')
|
|
212
|
+
exports.settings = require('../settings.json')
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Define
|
|
2
|
+
function shallowCopy (obj) {
|
|
3
|
+
return Object.assign(obj instanceof Array ? [] : {}, obj)
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
module.exports = function (obj) {
|
|
7
|
+
const newObj = shallowCopy(obj)
|
|
8
|
+
for (const index in obj) {
|
|
9
|
+
let value = obj[index]
|
|
10
|
+
if (value instanceof Object) {
|
|
11
|
+
value = shallowCopy(value)
|
|
12
|
+
}
|
|
13
|
+
newObj[index] = value
|
|
14
|
+
}
|
|
15
|
+
return newObj
|
|
16
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Includes
|
|
2
|
+
const options = require('../options.js')
|
|
3
|
+
|
|
4
|
+
// Define
|
|
5
|
+
module.exports = function (type, index, func, handler) {
|
|
6
|
+
const group = options.queue[type]
|
|
7
|
+
if (!group[index]) {
|
|
8
|
+
group[index] = {
|
|
9
|
+
jobs: []
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const home = group[index]
|
|
13
|
+
function run (time) {
|
|
14
|
+
return function (resolve, reject) {
|
|
15
|
+
setTimeout(function () {
|
|
16
|
+
func().then(resolve).catch(reject)
|
|
17
|
+
}, time)
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const jobs = home.jobs
|
|
21
|
+
function deactivate (err) {
|
|
22
|
+
jobs.shift()
|
|
23
|
+
if (!handler(err)) {
|
|
24
|
+
home.last = Date.now()
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function next () {
|
|
28
|
+
jobs.shift()
|
|
29
|
+
home.last = Date.now()
|
|
30
|
+
}
|
|
31
|
+
if (group.delay > 0) {
|
|
32
|
+
const delay = group.delay
|
|
33
|
+
const last = home.last
|
|
34
|
+
if (jobs.length === 0) {
|
|
35
|
+
let item
|
|
36
|
+
const diff = Date.now() - last
|
|
37
|
+
if (!last || diff > delay) {
|
|
38
|
+
item = func()
|
|
39
|
+
} else {
|
|
40
|
+
item = new Promise(run(delay - diff))
|
|
41
|
+
}
|
|
42
|
+
jobs.push(item)
|
|
43
|
+
item.then(next).catch(deactivate)
|
|
44
|
+
return item
|
|
45
|
+
} else {
|
|
46
|
+
const job = jobs[jobs.length - 1].then(function () {
|
|
47
|
+
const item = new Promise(run(delay))
|
|
48
|
+
item.then(next).catch(deactivate)
|
|
49
|
+
return item
|
|
50
|
+
}).catch(function (err) {
|
|
51
|
+
const item = handler && handler(err) ? func() : new Promise(run(delay))
|
|
52
|
+
item.then(next).catch(deactivate)
|
|
53
|
+
return item
|
|
54
|
+
})
|
|
55
|
+
jobs.push(job)
|
|
56
|
+
return job
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
return func()
|
|
60
|
+
}
|
|
61
|
+
}
|