UNPKG

funblox.js

Version:

This package made by fedee#9606 this a roblox API you may use it for your verification or something if you use our package give us credit <3.

2 lines 14.3 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var ge=Object.defineProperty;var de=(r,e)=>{for(var t in e)ge(r,t,{get:e[t],enumerable:!0})};var W={};de(W,{api:()=>T,auth:()=>E,catalog:()=>w,economy:()=>he,friends:()=>N,games:()=>y,groups:()=>u,mobileAPI:()=>G,thumbnails:()=>h,users:()=>P});var _gotcjs = require('got-cjs'); var _gotcjs2 = _interopRequireDefault(_gotcjs);var _toughcookie = require('tough-cookie'); var _toughcookie2 = _interopRequireDefault(_toughcookie);var _toughcookiefilestore = require('tough-cookie-file-store');var we=new _toughcookie2.default.CookieJar(new (0, _toughcookiefilestore.FileCookieStore)("./.cookies")),m=we;var l=new Map,k=new Map;var T=_gotcjs2.default.extend({prefixUrl:"https://api.roblox.com/",responseType:"json",cookieJar:m,cache:l}),he=_gotcjs2.default.extend({prefixUrl:"https://economy.roblox.com/",responseType:"json",cookieJar:m,cache:l}),E=_gotcjs2.default.extend({prefixUrl:"https://auth.roblox.com/",responseType:"json",cookieJar:m,cache:l}),u=_gotcjs2.default.extend({prefixUrl:"https://groups.roblox.com/",responseType:"json",cookieJar:m,cache:l}),y=_gotcjs2.default.extend({prefixUrl:"https://games.roblox.com/",responseType:"json",cookieJar:m,cache:l}),w=_gotcjs2.default.extend({prefixUrl:"https://catalog.roblox.com/",responseType:"json",cookieJar:m,cache:l}),N=_gotcjs2.default.extend({prefixUrl:"https://friends.roblox.com/",responseType:"json",cookieJar:m,cache:l}),h=_gotcjs2.default.extend({prefixUrl:"https://thumbnails.roblox.com/",responseType:"json",cookieJar:m,cache:l}),P=_gotcjs2.default.extend({prefixUrl:"https://users.roblox.com/",responseType:"json",cookieJar:m,cache:l}),G=_gotcjs2.default.extend({prefixUrl:"https://www.roblox.com/mobileapi/",responseType:"json",cookieJar:m,cache:l});function f(r,e){return new Promise(async(t,o)=>{let n=await P.post("v1/usernames/users",{json:{usernames:[r],excludeBannedUsers:e||!1},headers:{"Content-Type":"application/json",accept:"application/json"}}),s=JSON.parse(JSON.stringify(n.body));if(n.statusCode!==200)return o(new Error("Not found. - utils/getIdFromName.js"));t(s.data[0].id)})}async function C(r){return new Promise(async(e,t)=>{if(isNaN(r))if(typeof r=="string"){let o=await f(r),n=await C(o);e(n)}else t(new TypeError("Identifier must be a number or a string"));else{let o=Number(r),n=await P(`v1/users/${o}/`),s=await N(`v1/users/${o}/followers`),a=await N(`v1/users/${o}/friends`),i=await N(`v1/users/${o}/followings`),p=await h(`v1/users/avatar?userIds=${o}&size=720x720&format=Png&isCircular=false`),d=await N(`v1/users/${o}/followings/count`),b=await N(`v1/users/${o}/friends/count`),S=await N(`v1/users/${o}/followers/count`),c=JSON.parse(JSON.stringify(n.body)),v=JSON.parse(JSON.stringify(s.body)),$=JSON.parse(JSON.stringify(a.body)),I=JSON.parse(JSON.stringify(i.body)),ie=JSON.parse(JSON.stringify(p.body)),me=JSON.parse(JSON.stringify(d.body)),ue=JSON.parse(JSON.stringify(b.body)),pe=JSON.parse(JSON.stringify(S.body)),ce=me.count,le=ue.count,fe=pe.count,L=[];v.data.forEach(J=>{L.push(J.id)});let X=[];$.data.forEach(J=>{X.push(J.id)});let M=[];I.data.forEach(J=>{M.push(J.id)}),e({id:c.id,username:c.name,displayName:c.displayName,description:c.description,created:c.created,avatar_url:ie.data[0].imageUrl,friends:{count:le,ids:X},followers:{count:fe,ids:L},following:{count:ce,ids:M}})}})}function D(r){return new Promise(async(e,t)=>{if(typeof r=="number"){let o=await u.get(`v1/groups/${r}/roles`),n=await h.get(`v1/groups/icons?format=Png&groupIds=${r}&isCircular=false&size=420x420`),s=await u.get(`v1/groups/${r}`),a=JSON.parse(JSON.stringify(o.body)),i=JSON.parse(JSON.stringify(s.body)),p=JSON.parse(JSON.stringify(n.body)),d={id:i.id||null,name:i.name||null,description:i.description||null,owner:i.owner||null,membercount:i.memberCount||null,thumbnail:p.data[0].imageUrl||null,shout:null,roles:[]};i.shout&&(d.shout={content:i.shout.body,created:i.shout.created,author:{id:i.shout.poster.userId,username:i.shout.poster.username,displayName:i.shout.poster.displayName}});for(let b of a.roles){let S=a.roles.indexOf(b);if(d.roles.push({id:b.id,name:b.name,membercount:b.memberCount}),S+1==a.roles.length)return e(d)}return e(d)}else{let o=await u.get(`v1/groups/search/lookup?groupName=${r}`),n=JSON.parse(JSON.stringify(o.body));if(!n.data.length)throw new Error("Group not found");let s=await D(n.data[0].id);if(s)return e(s);t(new Error("Group not found"))}})}function R(r,e){return new Promise(async(t,o)=>{if(Number(e)){let n=await u.get(`v2/users/${Number(e)}/groups/roles?groupid=${Number(r)}`),s=JSON.parse(JSON.stringify(n.body));if(s.errors&&s.errors[0].code==1)return o(new Error("Not found. - getUserRank.js"));let a=s.data.find(i=>r===i.group.id);if(!a)return o(new Error("Not found. - getUserRank.js"));t(a.role)}else if(typeof e=="string"){let n=await f(e,!1);if(!n)return o(new TypeError("User was not found."));let s=await R(r,n);t(s)}})}function Y(r,e){return new Promise(async(t,o)=>{if(Number(r))try{let n=await y.get(`v2/users/${r}/favorite/games?accessFilter=All&limit=${e}&sortOrder=Asc`),s=JSON.parse(JSON.stringify(n.body));t(s.data)}catch(n){o(n)}else o(new Error("userId must be a number"))})}function _(){return new Promise(async(r,e)=>{try{let t=w.get("v1/categories");r(t.json())}catch(t){e(t)}})}function q(r){return new Promise(async(e,t)=>{if(Number(r))try{let o=await w.get(`v1/favorites/bundles/${r}/count`);e(JSON.parse(JSON.stringify(o.body)))}catch(o){t(o)}else t(new Error("Item ID must be a number"))})}function H(r){return new Promise(async(e,t)=>{if(Number(r))try{let o=await w.get(`v1/favorites/assets/${Number(r)}/count`);e(JSON.parse(JSON.stringify(o.body)))}catch(o){t(o)}else t(new Error("Item ID must be a number"))})}var j={body:{sizes:["30x30","48x48","60x60","75x75","100x100","110x110","140x140","150x150","150x200","180x180","250x250","352x352","420x420","720x720"],endpoint:"avatar"},bust:{sizes:["48x48","50x50","60x60","75x75","100x100","150x150","180x180","352x352","420x420"],endpoint:"avatar-bust"},headshot:{sizes:["48x48","50x50","60x60","75x75","100x100","110x110","150x150","180x180","352x352","420x420","720x720"],endpoint:"avatar-headshot"}};async function A(r,e,t,o,n="body"){return new Promise(async(s,a)=>{if(Number(r)){n=n.toLowerCase(),Object.keys(j).includes(n)||a(new TypeError(`Invalid cropping type provided: ${n} | Use: ${Object.keys(j).join(", ")}`));let{sizes:i,endpoint:p}=j[n];e=e||i[i.length-1],typeof e=="number"&&(e=`${e}x${e}`),i.includes(e)||a(new TypeError(`Invalid size parameter provided: ${e} | [${n.toUpperCase()}] Use: ${i.join(", ")}`)),t.toLowerCase()!=="png"&&t.toLowerCase()!=="jpeg"&&a(new TypeError(`Invalid image type provided: ${t} | Use: png, jpeg`));let d=await h.get(`v1/users/${p}?userIds=${r}&size=${e}&format=${t}&isCircular=${o}`),b=JSON.parse(JSON.stringify(d.body));return s({Thumbnail:b.data[0].imageUrl})}else{let i=await C(r);if(i.id){let p=await A(i.id,e,t,o,n);return s(p)}else a(new Error("User not found"))}})}function K(r){return new Promise(async(e,t)=>{try{let o=await w.get(`v1/users/${Number(r)}/bundles`),n=JSON.parse(JSON.stringify(o.body));e(n.data)}catch(o){t(o)}})}function xe(r){return new Promise(async(e,t)=>{if(Number(r)){let o=await y.get(`v1/games?universeIds=${r}`),n=await h.get(`v1/places/gameicons?placeIds=${r}&size=128x128&format=Jpeg&isCircular=true`),s=JSON.parse(JSON.stringify(o.body)),a=JSON.parse(JSON.stringify(n.body));e({id:s.id||null,name:s.name||null,description:s.description||null,creator:s.creator||null,thumbnails:a.imageUrl||null,price:s.price||null,allowedGearGenres:s.allowedGearGenres||null,allowedGearCategories:s.allowedGearCategories||null,playing:s.playing||null,visits:s.visits||null,maxPlayers:s.maxPlayers||null,created:s.created||null,updated:s.updated||null,genres:s.genres||null,favoritedCount:s.favoritedCount||null})}else return t(new Error("Invalid identifier, it should be a number not a string."))})}var Ne="Number is not a universe id, use getUniverseId() to get the universe id.";function Q(r){function e(t){return t==500,!0}return new Promise(async function(t,o){if(Number(r)){let n=await y.get(`v1/games/votes?universeIds=${r}`),s=JSON.parse(JSON.stringify(n.body));return e(n.statusCode)&&o(new Error(`${n.statusCode}: ${n.statusMessage}`)),s[0]||o(new TypeError(Ne)),t({upVotes:s.data[0].upVotes,downVotes:s.data[0].downVotes})}})}function Z(r){return new Promise(async(e,t)=>{let o=await T.get(`universes/get-universe-containing-place?placeid=${r}`),n=JSON.parse(JSON.stringify(o.body));n.body.success?e(n.data.universeId):t(new Error(n.data.errors[0].message))})}function x(){return new Promise(async(r,e)=>{if(k.has("XCSRF"))return r(k.get("XCSRF"));let t=await E.post("/v2/logout",{cookieJar:m});if(t.statusCode!==200)return e(new Error("Authentication API returned an error: "+t.statusCode));let o=t.headers["x-csrf-token"];return o?(k.set("XCSRF",o),r(o)):e(new Error("Could not get XCSRF token!"))})}function F(r){return new Promise(async(e,t)=>{if(typeof r=="number"){let o=await u.get(`v1/groups/${r}/roles`),n=JSON.parse(JSON.stringify(o.body)),s={roles:[]};for(let a of n.roles){let i=n.roles.indexOf(a);if(s[0].roles.push({id:a.id,name:a.name,membercount:a.memberCount}),i+1==n.roles.length)return e(s)}return e(s)}else t(new TypeError("Group param must be a number"))})}function B(r,e){return new Promise(async(t,o)=>{let n=await F(r);if(typeof e=="number"||typeof e=="string"&&typeof r=="number"){if(typeof e=="string"){let s=n.roles.find(({name:a})=>a===e);return t({id:s.id,name:s.name,membercount:s.membercount})}else if(typeof e=="number"){let s=n.roles.find(({id:a})=>a===e);return t({id:s.id,name:s.name,membercount:s.membercount})}}else o(new TypeError("The rank must be a number/string and the groupID must be a number."))})}function U(r,e,t){return new Promise(async(o,n)=>{if(typeof r=="number"&&typeof e=="number"&&typeof t=="number"){let s=await R(r,e),a={roleId:t};await u.patch(`v1/groups/${r}/users/${e}`,{cookieJar:m,json:a,headers:{"Content-Type":"application/json","X-CSRF-Token":await x()}}).then(function(){let i=B(r,t);o({oldRank:s,newRank:i})}).catch(function(i){n(i)})}else n(new TypeError("All the parameters in this function should be numeric, please check your parameters"))})}function O(r,e,t){return new Promise(async(o,n)=>{let s=await u.get(`v1/groups/${r}/roles`),a=JSON.parse(JSON.stringify(s.body)),i=await R(r,e);for(let p=0;p<a.roles.length;p++)if(a.roles[p].id===i.id){let S=p+t,c=a.roles[S],v=a.roles.indexOf(c),$=a.roles[v];c===0?n(new TypeError("Can't demote someone to rank 0 (GUEST) unless I exile them...")):c?c>0&&c&&c<255&&await U(r,e,v.rolese).then(async function(){return o({newRank:$,oldRank:i})}).catch(function(I){n(new TypeError(I))}):n(new TypeError("Can't find this user next rank..."))}})}async function ee(r,e){return new Promise(async(t,o)=>{if(!isNaN(r))if(typeof e=="number"){let n=await O(r,e,1);t(n)}else if(typeof e=="string"){let n=await f(e),s=await O(r,n,1);t(s)}else o(new TypeError("User must be a number or a string"))})}function re(r,e){return new Promise(async(t,o)=>{if(!isNaN(r))if(typeof e=="number"){let n=await O(r,e,-1);t(n)}else if(typeof e=="string"){let n=await f(e),s=await O(r,n,-1);t(s)}else o(new TypeError("User must be a number or a string"))})}function V(r){return new Promise(async function(e,t){switch(r){case r:let n=_toughcookie2.default.Cookie.parse(".ROBLOSECURITY");n.value=r,m.setCookie(n,"https://roblox.com",async a=>{switch(a){case!0:t(a);break;default:let i=await G.get("userinfo",{cookieJar:m});i.statusCode!==200&&t(new Error("You are not logged in!")),e(JSON.parse(JSON.stringify(i.body)))}});break;default:let s=await G.get("userinfo",{cookieJar:m});s.statusCode!==200&&t(new Error("You are not logged in!")),e(s.body);break}})}function te(r){return new Promise(async(e,t)=>{if(!r.toLowerCase().includes("warning:-"))return t(new TypeError("You didn't include the Roblox Warning. Please include the entire .ROBLOSECURITY cookie."));V(r).then(e).catch(t)})}function z(r){return new Promise(async(e,t)=>{if(Number(r)){let o=await u.get(`v2/users/${Number(r)}/groups/roles`),n=JSON.parse(JSON.stringify(o.body));if(n.errors&&n.errors[0].code==1)return t(new Error("Not found. - getUserRank.js"));e(n)}else if(typeof r=="string"){let o=await f(r);if(!o)return t(new TypeError("User was not found."));let n=await z(o);e(n)}})}function oe(r,e){return new Promise(async(t,o)=>{if(typeof r=="number"&&typeof e=="number")return(await u.delete(`/v1/groups/${r}/wall/posts/${e}`,{cookieJar:m,headers:{"Content-Type":"application/json","X-CSRF-Token":await x()}})).statusCode!==200?o(new Error("")):t(e)})}function ne(r,e){return new Promise(async(t,o)=>{if(typeof r=="number"&&typeof e=="number")return(await u.delete(`/v1/groups/${r}/wall/users/${e}/posts`,{cookieJar:m,headers:{"Content-Type":"application/json","X-CSRF-Token":await x()}})).statusCode!==200?o(new Error("")):t(e)})}function se(r,e,t,o){return new Promise(async(n,s)=>{if(typeof r=="number"){t||(t="cursor"),e||(e=10),o||(o="Asc");let a=await u.get(`/v1/groups/${r}/wall/posts?limit=${e}?cursor=${t}?sortOrder=${o}`,{cookieJar:m,headers:{"Content-Type":"application/json","X-CSRF-Token":await x()}});return a.statusCode!==200?s(new Error("")):n(JSON.parse(JSON.stringify(a.body)))}})}function ae(r){return new Promise(async(e,t)=>{let o=[],n=await y.get(`v2/groups/${r}/games`);JSON.parse(JSON.stringify(n.body)).data.forEach(a=>{o.push({id:a.id,name:a.name,description:a.description,placeVisits:a.placeVisits})}),e(o)})}exports.api = W; exports.deletePost = oe; exports.deletePostBySpecificUser = ne; exports.demote = re; exports.getCategories = _; exports.getFavoritesOfBundle = q; exports.getFavoritesOfItem = H; exports.getGameVotes = Q; exports.getGroup = D; exports.getGroupGames = ae; exports.getGroupWall = se; exports.getGroups = z; exports.getPlaceInfo = xe; exports.getPlayerThumbnail = A; exports.getUniverseId = Z; exports.getUser = C; exports.getUserBundles = K; exports.getUserFavoriteGames = Y; exports.getUserRank = R; exports.promote = ee; exports.setCookie = te; exports.setRank = U; //# sourceMappingURL=index.js.map