Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var _ = require('lodash');
- var server = require('http').Server();
- var io = require('socket.io')(server);
- var mysql = require('mysql');
- var async = require("async");
- var connection = mysql.createConnection({
- host: 'localhost',
- user: 'adminn',
- password: 'C5kgXx((@@',
- database: 'jackpot'
- });
- server.listen(8788);
- var request = require("request");
- var admins = ['76561198269216247', '76561198258632124', '76561198023345468'];
- var util = require('util');
- var TradeOfferManager = require('steam-tradeoffer-manager');
- var fs = require('fs');
- var Steamcommunity = require('steamcommunity');
- var ParentBot = require('steam-parentbot'); //change to 'steam-parentbot' if not running from examples directory
- var Steam = ParentBot.Steam; //instance of the Steam object
- var PriceApiKey = 'fFlJtSeeJb7wzswQG5FYJyeytkVK6dE8';
- var request = require("request");
- var community = new Steamcommunity();
- var ChildBot = function () {
- ChildBot.super_.apply(this, arguments);
- }
- util.inherits(ChildBot, ParentBot);
- var Bot = new ChildBot('csboxbot1', 'C5kgXx99', {
- apikey: 'AC2CD27C06C67830F32F0B6D661461EE', //steam api key, will be registered automatically if one isn't supplied
- sentryfile: 'csboxbot1.sentry', //sentry file that stores steamguard info, defaults to username.sentry
- logfile: 'csboxbot1.log', //filename to log stuff to, defaults to username.log
- sharedSecret: 'hD41Fnt8Qe8TY3WQTyZhv8ZND8c=', //shared secret, needed to automatically generate twoFactorCode
- identitySecret: 'PUH91isKkTB3OJmcxIPdIb9b2ug=', //identity secret, needed to automatically confirm trade offers, must be used with confirmationInterval
- confirmationInterval: 10000, //how often we should check for new trades to confirm in miliseconds, must be used with identitySecret
- richPresenceID: 730 //game to use rich presence with, don't include for no rich presence
- });
- var SteamTotp = require('steam-totp');
- var util = require('util');
- var botMain = function () {
- botMain.super_.apply(this, arguments);
- }
- util.inherits(botMain, ParentBot);
- var TOTP = require('onceler').TOTP;
- var totp = new TOTP('D2EUYJ7OKUV6TUKU');
- var manager = new TradeOfferManager({
- "domain": "http://csgourban.com", // Our domain is example.com
- "language": "en", // We want English item descriptions
- "pollInterval": 5000 // We want to poll every 5 seconds since we don't have Steam notifying us of offers
- });
- if (fs.existsSync('polldata.json')) {
- manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
- }
- Bot.steamUser.on('tradeOffers', function (number) {
- if (number > 0) {
- handleOffers();
- bang('Przeglądam oferty :) Jest ich: ' + number + '');
- }
- });
- function sendMessage(steamID, message) {
- Bot.steamFriends.sendMessage(steamID, message);
- }
- Bot.steamClient.on('logOnResponse', function (logonResp) {
- //console.log('Event "logOnResponse": ' + JSON.stringify(logonResp));
- if (logonResp.eresult === Steam.EResult.OK) {
- console.log('Logged in!');
- SteamBot = true;
- reWebLogOn();
- }
- });
- Bot.steamClient.on('loggedOff', function () {
- SteamBot = false;
- });
- Bot.steamClient.on('error', function (e) {
- console.log('Wystąpił błąd : ' + e + '');
- });
- Bot.connect();
- io.on('connection', function (socket) {
- var withdraws = socket;
- withdraws.on('loadInventory', function () {
- Bot.offers.loadPartnerInventory({
- partnerSteamId: '76561198295495923',
- appId: '730',
- contextId: '2',
- language: 'pl'
- }, function (err, items) {
- var que = [];
- var showeq = [];
- connection.query('SELECT * FROM withdraw_que', function (error, results, fields) {
- async.each(results, function (value, callback) {
- que.push(value['assetID']);
- callback();
- }, function (err) {
- withdraws.emit('inventory', items);
- withdraws.emit('que', que);
- });
- });
- });
- });
- withdraws.on('steamide', function (data) {
- var steamID = data;
- withdraws.emit('processing', true);
- withdraws.on('withdrawItems', function (data) {
- var itemCost = 0;
- var fruits = data;
- async.each(data, function (value, callback) {
- var item = encodeURIComponent(value);
- request({
- url: 'http://csgourban.com/getItemPrice/' + item + '',
- json: true
- }, function (error, response, body) {
- if (body != '') {
- var itemPrice = body[0]['avgPrice30Days'];
- itemCost = parseInt(itemCost) + parseInt(itemPrice);
- callback();
- } else {
- withdraws.emit('processing', 'error');
- return;
- }
- });
- }, function (err) {
- // if any of the file processing produced an error, err would equal that error
- if (err) {
- withdraws.emit('processing', 'error');
- } else {
- itemCost = itemCost * 10;
- connection.query('SELECT * FROM users WHERE steamId64=' + steamID + '', function (error, results, fields) {
- var userCoins = results[0]['coins'];
- var tradeToken = results[0]['tradeToken'];
- connection.query('SELECT sum(itemPrice) as draw FROM wholeItems WHERE ownerSteamId64=' + steamID + '', function (error, results, fields) {
- if (error) {
- return;
- }
- var draw = results[0]['draw'];
- if (draw < 3000) {
- withdraws.emit('processing', 'draw');
- return;
- } else {
- if (userCoins < itemCost) {
- withdraws.emit('processing', 'low');
- } else {
- Bot.offers.loadMyInventory({
- appId: 730,
- contextId: 2
- }, function (err, items) {
- if (err) {
- withdraws.emit('processing', 'error');
- return;
- }
- var itemo = [], numo = 1;
- var itemosID = [];
- var itemssToSend = [];
- var itemsToSend = fruits;
- itemsToSend.forEach(function (value, index) {
- itemssToSend.push(value);
- });
- var prevID = 0;
- itemssToSend.forEach(function (value, index) {
- var finder = _.find(items, function (o) {
- var findom = _.find(itemo, {assetid: o.id});
- return o.id != prevID && o.market_name == value && findom == undefined;
- });
- if (finder != undefined) {
- var findero = finder['id'];
- itemosID.push({"findero": findero, "name": value});
- itemo[numo] = {
- appid: 730,
- contextid: 2,
- amount: 1,
- assetid: finder['id']
- }
- prevID = finder['id'];
- }
- numo++;
- });
- if (numo > 0) {
- async.each(itemosID, function (value, callback) {
- var itemname = encodeURIComponent(value['name']);
- connection.query('INSERT INTO withdraw_que SET user_id="' + steamID + '",' +
- 'assetID="' + value['findero'] + '",' +
- 'itemname="' + itemname + '"', function (error, results, fields) {
- if (error) {
- withdraws.emit('processing', 'error');
- console.log(error);
- return;
- } else {
- callback();
- }
- });
- }, function (err) {
- if (err) {
- withdraws.emit('processing', 'error');
- return;
- } else {
- withdraws.emit('processing', 'success');
- }
- });
- }
- });
- }
- }
- });
- });
- }
- });
- });
- });
- });
- setInterval(function () {
- handleOffers();
- }, 30000);
- setInterval(function () {
- handleQue();
- }, 10000);
- Bot.steamUser.on('webSessionID', function (webSessionID) {
- console.log('Event "webSessionID" sessionID: ' + webSessionID);
- console.log('Event "webSessionID" SteamClient.sessionID: ' + SteamClient.sessionID);
- gSessionID = webSessionID;
- globalSessionID = webSessionID;
- manager.setCookies(cookies, function(err) {
- if (err) {
- console.log(err);
- process.exit(1); // Fatal error since we couldn't get our API key
- return;
- }
- console.log("Got API key: " + manager.apiKey);
- });
- community.setCookies(cookies);
- community.startConfirmationChecker(30000, "identitySecret");
- });
- ChildBot.prototype._onFriendMsg = function (steamID, message, type) { //overwrite default event handlers
- if (admins.indexOf(steamID) !== -1) {
- if (message == '/token') {
- var _2facode = SteamTotp.generateAuthCode(Bot.sharedSecret);
- Bot.steamFriends.sendMessage(steamID, 'Proszę : ' + _2facode + '');
- } else if (message == '/send') {
- Bot.offers.loadMyInventory({
- appId: 730,
- contextId: 2
- }, function (err, items) {
- console.log(err);
- if (err) {
- console.log('Problem');
- steam.webLogOn(function (newCookie) {
- offers.setup({
- sessionID: globalSessionID,
- webCookie: newCookie
- }, function (err) {
- if (err) {
- }
- });
- });
- return;
- }
- var item = [], num = 0;
- var itemssToSend = [], numero = 0;
- for (var i = 0; i < items.length; i++) {
- if (items[i].tradable) {
- item[num] = {
- appid: 730,
- contextid: 2,
- amount: items[i].amount,
- assetid: items[i].id
- }
- num++;
- }
- }
- if (num > 0) {
- Bot.offers.makeOffer({
- partnerSteamId: steamID,
- itemsFromMe: item,
- itemsFromThem: [],
- message: ''
- }, function (err, response) {
- if (err) {
- throw err;
- }
- console.log('Wysłałem');
- });
- }
- });
- }
- } else {
- if (type === Steam.EChatEntryType.ChatMsg) {
- //Bot.steamFriends.sendMessage(steamID, 'CSBOX.pl'); //use your custom options
- //this.logger.info(steamID + ' sent: ' + message);
- }
- else {
- //console.log(type);
- }
- }
- }
- ChildBot.prototype._onFriend = function (steamID, relationship) {
- if (relationship === 2) {
- if (admins.indexOf(steamID) !== -1) {
- Bot.steamFriends.addFriend(steamID);
- }
- else {
- Bot.logger.warn('Someone who isn\'t an admin tried to add me, denying...');
- Bot.steamFriends.removeFriend(steamID);
- }
- }
- }
- ////////////// END OF BOT
- function reWebLogOn(callback) {
- Bot.steamUser.on('webSessionID', function (sessionID, newCookie) {
- console.log('webLogOn: ' + JSON.stringify({
- sessionID: sessionID,
- cookie: newCookie
- }));
- getSteamAPIKey({
- sessionID: sessionID,
- webCookie: newCookie
- }, function (err, apiKey) {
- if (err) {
- console.log('Ошибка в событии logOnResponse ERROR ' + err);
- }
- else {
- console.log('getSteamAPIKey: ' + apiKey);
- Bot.offers.setup({
- sessionID: sessionID,
- webCookie: newCookie, //APIKey: config.apiKey
- APIKey: apiKey
- });
- if (typeof callback == "function") {
- callback();
- }
- }
- });
- });
- }
- function handleQue() {
- connection.query('SELECT * FROM withdraw_que LEFT JOIN users ON users.steamId64=withdraw_que.user_id WHERE status="awaiting" GROUP BY user_id', function (error, results, fields) {
- if(results.length < 1) {
- return;
- }
- var users = [];
- async.each(results, function (value, callback) {
- users.push({"userid": value['user_id'], "tradeToken": value['tradeToken']});
- callback();
- }, function (err) {
- if (err) {
- console.log(err);
- } else {
- console.log('LIST OF PLAYERS LOADED');
- var fruits = [];
- async.each(users, function (value, callback) {
- var userid = value['userid'];
- var tradeToken = value['tradeToken'];
- connection.query('SELECT * FROM withdraw_que WHERE user_id=' + userid + ' AND status="awaiting"', function (error, results, fields) {
- if (!error) {
- fruits.push(results);
- callback();
- } else {
- console.log(error);
- }
- });
- }, function (err) {
- if (err) {
- console.log(err);
- } else {
- console.log('LIST OF ITEMS TO SEND LOADED');
- Bot.offers.loadMyInventory({
- appId: 730,
- contextId: 2
- }, function (err, items) {
- var itemo = [], numo = 1;
- var itemssToSend = [];
- var itemsToSend = fruits[0];
- var userID = itemsToSend[0]['user_id'];
- itemsToSend.forEach(function (value, index) {
- itemssToSend.push(value);
- });
- var prevID = 0;
- var itemCost = 0;
- async.each(itemssToSend, function (value, callback) {
- var item = value['itemname'];
- request({
- url: 'http://csgourban.com/getItemPrice/' + item + '',
- json: true
- }, function (error, response, body) {
- if (body != '') {
- var itemPrice = body[0]['avgPrice30Days'];
- itemCost = parseInt(itemCost) + parseInt(itemPrice);
- callback();
- } else {
- withdraws.emit('processing', 'error');
- return;
- }
- });
- }, function (err) {
- if (!err) {
- var prowizja = parseInt(itemCost) * 0.05;
- itemCost = parseInt(itemCost) * 10;
- itemCost = parseInt(itemCost) + parseInt(prowizja);
- //console.log(itemCost);
- connection.query('SELECT * FROM users WHERE steamId64=' + userID + '', function (error, results, fields) {
- //console.log(results);
- if (!error) {
- var tradeToken = results['tradeToken'];
- var userCoins = results['coins'];
- if (userCoins < itemCost) {
- connection.query('DELETE FROM withdraw_que WHERE user_id=' + userID + ' AND status="awaiting"', function (error, results, fields) {
- console.log('Nie stać go, usuwam');
- return;
- });
- }
- ;
- }
- });
- async.each(itemssToSend, function (value, callback) {
- var itemname = decodeURIComponent(value['itemname']);
- // console.log(itemname);
- var finder = _.find(items, function (o) {
- var findom = _.find(itemo, {assetid: o.id});
- return o.id != prevID && o.market_name == itemname && findom == undefined;
- });
- if (finder != undefined) {
- itemo[numo] = {
- appid: 730,
- contextid: 2,
- amount: 1,
- assetid: finder['id']
- }
- prevID = finder['id'];
- }
- numo++;
- callback();
- }, function (err) {
- if (numo > 0) {
- connection.query('SELECT * FROM users WHERE steamId64=' + userID + '', function (error, results, fields) {
- if (!error) {
- var tradeToken = results[0]['tradeToken'];
- //console.log(itemo);
- Bot.offers.makeOffer({
- partnerSteamId: userID,
- itemsFromMe: itemo,
- itemsFromThem: [],
- accessToken: tradeToken,
- message: 'Thanks for playing our site! Have a nice day!'
- }, function (err, response) {
- if (err) {
- console.log(err);
- return;
- }
- console.log(response);
- connection.query('UPDATE withdraw_que SET status="sended" WHERE user_id=' + userID + '', function (error, results, fields) {
- if (!error) {
- console.log('Withdraw offer send.');
- }
- });
- var offerID = response['tradeofferid'];
- var cost = itemCost;
- connection.query('INSERT INTO ofers SET userID=' + userID + ', value=' + itemCost + ',' +
- 'tradeOfferID=' + offerID + ',status="waiting"', function (error, results, fields) {
- if (!error) {
- console.log('Offer added to history');
- }
- });
- });
- }
- });
- //console.log('Są itemy do wysłania, jedziemy z koksem');
- }
- })
- }
- });
- });
- }
- });
- }
- });
- });
- }
- function handleOffers() {
- Bot.offers.getOffers({
- get_received_offers: 1,
- active_only: 1,
- time_historical_cutoff: Math.round(Date.now() / 1000),
- get_descriptions: 1
- }, function (error, body) {
- if (error) {
- return bang(error);
- }
- var TradesRecived = body.response.trade_offers_received;
- if (TradesRecived == undefined) {
- //bang('Brak ofert, papa :)');
- return false;
- } else {
- tradeOffersNumber = Object.keys(TradesRecived).length;
- if (tradeOffersNumber < 1) {
- } else {
- //bang('Ofert do przejrzenia : ' + tradeOffersNumber + '');
- }
- }
- TradesRecived.forEach(function (value, index) {
- var tradeOwner = value.steamid_other;
- var tradeID = value.tradeofferid;
- var tradeItems = value.items_to_receive;
- var csgo = true;
- var holded = false;
- if (value.items_to_receive != undefined) {
- value.items_to_receive.forEach(function (value, index) {
- if (value.appid != '730') {
- csgo = false;
- }
- });
- }
- request({
- url: 'http://csgourban.com/getUserInfo/' + tradeOwner + '',
- json: true
- }, function (error, response, body) {
- if (body == undefined) {
- return;
- }
- var tradeT = body['tradeToken'];
- Bot.offers.getHoldDuration({
- partnerSteamId: value.steamid_other,
- accessToken: tradeT
- }, function (err, response) {
- if (err) {
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- return;
- }
- var heis = response['their'];
- if (heis != 0) {
- //console.log('TradeLock, wyrzuć');
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- return;
- } else {
- Bot.offers.getTradeHoldDuration({
- tradeOfferId: tradeID
- }, function (err, hold) {
- if (err) {
- // console.log(heis);
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- return;
- } else {
- var HisHold = hold['their'];
- if (HisHold != '0') {
- holded = true;
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- return;
- } else {
- // console.log('Brak tradelocka, przyjmij.');
- }
- }
- });
- // console.log('Owner' + tradeOwner);
- request({
- url: 'http://csgourban.com/getUserInfo/' + tradeOwner + '',
- json: true
- }, function (error, response, body) {
- if (!error && response.statusCode === 200) {
- if (body == undefined) {
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- return;
- }
- var tradeOwnerNick = body.nick;
- if (value.items_to_give) {
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- return;
- }
- if (value.items_to_receive == undefined) {
- return;
- }
- if (value.items_to_receive.length == undefined) {
- return;
- }
- if (value.items_to_receive.length > 100 || tradeOwnerNick == undefined || value.items_to_give || csgo == false) {
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- } else {
- // console.log(holded);
- if (holded == true) {
- console.log(their);
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- return;
- } else {
- Bot.offers.loadPartnerInventory({
- partnerSteamId: tradeOwner,
- appId: '730',
- contextId: '2',
- language: 'pl'
- }, function (err, items) {
- if (!err) {
- if (value.items_to_receive != undefined) {
- var updateFor = 0;
- value.items_to_receive.forEach(function (value, index) {
- var itemDetils = _.find(items, {id: value.assetid});
- if (itemDetils != undefined) {
- var itemName = itemDetils['market_name'];
- var itemColor = itemDetils['name_color'];
- var itemType = itemDetils['type'];
- var itemIcon = itemDetils['icon_url'];
- var classid = itemDetils['classid'];
- var instanceid = itemDetils['id'];
- var ownerSteamID64 = tradeOwner;
- // console.log(itemDetils);
- secret = totp.now();
- apikey = '4ca564b7-ff8d-44d9-908f-c002bd28fd3f';
- var item = itemName;
- var item = encodeURIComponent(item);
- request({
- url: 'http://csgourban.com/getItemPrice/' + item + '',
- json: true
- }, function (error, response, body) {
- item = decodeURIComponent(item);
- if (body != '') {
- //console.log(body);
- var itemPrice = body[0]['avgPrice30Days'];
- updateFor = parseInt(updateFor) + parseInt(itemPrice);
- if (itemPrice < 20) {
- Bot.offers.declineOffer({tradeOfferId: tradeID});
- return;
- }
- connection.query('INSERT INTO wholeItems SET ownerSteamId64="' + ownerSteamID64 + '",' +
- 'ownerSteamId32="STEAM_0:0:128976850",' +
- 'itemName="' + body[0]['marketName'] + '",' +
- 'itemPrice="' + body[0]['avgPrice30Days'] + '",' +
- 'itemRarityName="' + itemType + '",' +
- 'itemRarityColor="' + itemColor + '",' +
- 'itemIcon="' + itemIcon + '"', function (error, results, fields) {
- if (error) {
- console.log(error)
- }
- });
- }
- });
- }
- })
- }
- Bot.offers.acceptOffer({
- tradeOfferId: tradeID
- }, function (err) {
- if (err) {
- Bot.offers.declineOffer({tradeOfferId: value.tradeofferid});
- return;
- } else {
- bang('Akceptuję ofertę od: (' + tradeOwnerNick + ')');
- request({
- url: 'http://csgourban.com/getUserInfo/' + tradeOwner + '',
- json: true
- }, function (error, response, body) {
- if (error) {
- Bot.offers.declineOffer({tradeOfferId: tradeID});
- return;
- }
- updateFor = updateFor * 10;
- var updateCoins = parseInt(body.coins) + parseInt(updateFor);
- console.log(updateCoins);
- connection.query('UPDATE users SET coins="' + updateCoins + '" WHERE steamId64="' + body.steamId64 + '"', function (err, rows) {
- if (err) {
- Bot.offers.declineOffer({tradeOfferId: tradeID});
- return;
- }
- });
- })
- }
- });
- }
- });
- }
- }
- }
- });
- }
- });
- });
- });
- });
- };
- function bang(message) {
- console.log(message);
- }
- manager.on('pollData', function(pollData) {
- fs.writeFile('polldata.json', JSON.stringify(pollData));
- console.log('Pulled Data');
- });
- manager.on('sentOfferChanged', function(offer, oldState) {
- console.log("Offer #" + offer.id + " changed: " + TradeOfferManager.getStateName(oldState) + " -> " + TradeOfferManager.getStateName(offer.state));
- if (offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
- offer.getReceivedItems(function(err, items) {
- if (err) {
- console.log("Couldn't get received items: " + err);
- } else {
- var names = items.map(function(item) {
- return item.name;
- });
- console.log("Received: " + names.join(', '));
- }
- });
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement