Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const request = require('request-promise');
- const twoFactor = require('node-2fa');
- //
- // Config
- const config = {
- apiKey: '0918c59659032b0290aea8851ac751',
- twoFactorSecret: 'CWRYF4YAZVESTAUN',
- opskinsid: '5679090', // Opskins User ID
- betTimes: -1, // -1 For no limit
- betMin: '5', // 1 Min
- betMax: '10',
- betMinTime: 160,
- betMaxTime: 200
- }
- //
- if (config.apiKey == '') throw new Error('Api-Key missing!');
- if (config.twoFactorSecret == '') throw new Error('Two-Factor missing!');
- if (config.opskinsid == '') throw new Error('Opskinsid missing!');
- var oprequest = request.defaults({
- auth: {
- user: config.apiKey,
- password: '',
- sendImmediately: true
- }
- });
- process.on('uncaughtException', function (err) {
- console.log("Error...");
- console.error(err);
- });
- //
- // WAX Inventory
- async function GetUserInventory(opskinsId, appId = 1, page = 1, mergeItems = []) {
- try {
- const data = await oprequest({
- method: 'GET',
- url: `https://api-trade.opskins.com/ITrade/GetUserInventory/v1/`,
- qs: {
- uid: opskinsId,
- app_id: appId,
- per_page: 500,
- page
- },
- json: true
- });
- if (data.status !== 1) {
- throw new Error(data.message);
- }
- mergeItems = mergeItems.concat(data.response.items);
- if (page + 1 > data.total_pages) {
- return mergeItems;
- }
- return GetUserInventory(opskinsId, appId, page + 1, mergeItems);
- } catch (err) {
- throw new Error((err.error && err.error.message ? err.error.message : err.message ? err.message : 'Opskins service is unreachable.'));
- }
- }
- var appIds = [
- 1, // VGO
- 13, // Gift Cards
- 15, // Game Items
- 16, // Digital Items
- 17, // G-Fuel
- 18, // Fan Gear
- 19, // Shoes
- 20, // Apparels
- 21, // Electronics
- 22, // Games
- ];
- async function WAXInventory(opskinsId) {
- let inventory = [];
- let inventoryValue = 0;
- for (var i = 0; i < appIds.length; i++) {
- let appId = appIds[i];
- let items = await GetUserInventory(opskinsId, appId);
- for (var j = 0; j < items.length; j++) {
- let item = items[j];
- inventoryValue += item.suggested_price;
- inventory.push({
- id: item.id,
- name: item.name,
- price: item.suggested_price/100
- });
- }
- }
- inventoryValue = inventoryValue/100;
- return [inventory, inventoryValue];
- }
- let pollTrades = {
- offers: [],
- timer: null
- };
- let betCount = 0;
- let randomTimes = 0;
- async function GetOfferTrades(offerId) {
- var res = await oprequest({
- method: 'GET',
- url: `https://api-trade.opskins.com/ITrade/GetOffer/v1/`,
- qs: {
- offer_id: offerId
- },
- json: true
- });
- return res.response.offer || null;
- }
- async function doPoolTrades() {
- if (pollTrades.offers.length) {
- for (var i = pollTrades.offers.length - 1; i >= 0; i--) {
- let trade = pollTrades.offers[i];
- try {
- let offer = await GetOfferTrades(trade.tradeid);
- if (!offer || !offer.state) throw new Error('Failed to load offer.');
- if (trade.last_state != offer.state) {
- if (offer.state === 3) {
- console.log('Deposit offer has been accepted.');
- } else {
- console.log('Deposit offer has been rejected.');
- }
- StartBet();
- }
- trade.last_state = offer.state;
- if (offer.state !== 2) {
- pollTrades.offers.splice(i, 1);
- }
- } catch (err) {
- console.log("doPoolTrades", "Trade pool error for offer "+trade.tradeid+" Error: " + err.message);
- }
- }
- }
- pollTrades.timer = setTimeout(doPoolTrades.bind(this), 2000);
- }
- doPoolTrades();
- // Shit function
- function Randomitems(inventory) {
- if (randomTimes >= 50) throw new Error('Failed to get random items to bet.');
- let betMin = parseFloat(config.betMin);
- let betMax = parseFloat(config.betMax);
- let gotValue = 0;
- let gotItems = [];
- while(true) {
- var item = inventory[Math.floor(Math.random()*inventory.length)];
- if (gotItems.indexOf(item.id) != -1) continue;
- if (item.price > betMax || item.price + gotValue > betMax || gotItems.length >= 20) {
- randomTimes++;
- return Randomitems(inventory);
- }
- gotValue += item.price;
- gotItems.push(item.id);
- if (gotValue >= betMin) return [gotItems, gotValue];
- }
- }
- async function DepositOffer(items, value) {
- console.log('Creating deposit offer for '+items.length+' items valuated at $'+value.toFixed(2)+'.');
- try {
- var data = await oprequest({
- method: 'POST',
- url: `https://api-trade.opskins.com/ITrade/SendOffer/v1/`,
- form: {
- uid: '5698156',
- token: 'zrI76U4A',
- items_to_send: items.join(','),
- twofactor_code: twoFactor.generateToken(config.twoFactorSecret).token
- },
- json: true
- });
- pollTrades.offers.push({
- tradeid: data.response.offer.id,
- last_state: data.response.offer.state
- });
- betCount++;
- console.log('Deposit offer created.');
- } catch (err) {
- console.log(err.message)
- console.log('Failed to create deposit offer. Retrying in 5sec...');
- setTimeout(function() {
- StartBet();
- }, 5000);
- }
- }
- console.log('\x1b[36mBot sted: Min deposit: $'+config.betMin+', Max deposit: $'+config.betMax+', Min time: '+config.betMinTime+'sec, Max time: '+config.betMaxTime+'sec.' ,'\x1b[0m');
- let startBalance = -1;
- let currentBet = 0;
- async function StartBet() {
- if (config.betTimes != -1 && betCount >= config.betTimes) throw new Error('Bet limit reached');
- var [ inventory, value ] = await WAXInventory(config.opskinsid);
- console.log('Loaded user inventory: items: '+inventory.length+', value: $'+value.toFixed(2)+'.');
- if (value < parseFloat(config.betMin)) throw new Error('Not enough value in inventory to make bet.');
- if (startBalance == -1) startBalance = value;
- currentBet++;
- console.log('\x1b[32mCurrent bet ' + currentBet + '. Profit: '+(value - startBalance).toFixed(2)+'.' ,'\x1b[0m');
- let timeout = Math.floor(Math.random()*(config.betMaxTime-config.betMinTime+1)+config.betMinTime);
- console.log('Next bet in ' + timeout + ' secoonds.');
- setTimeout(function() {
- randomTimes = 0;
- var [items, value] = Randomitems(inventory);
- DepositOffer(items, value);
- }, timeout * 1000);
- }
- StartBet();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement