Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var fs = require('fs');
- var sql = require('mssql');
- var Steam = require('steam');
- var crypto = require('crypto');
- var SteamWebLogOn = require('steam-weblogon');
- var getSteamAPIKey = require('steam-web-api-key');
- var SteamTradeOffers = require('steam-tradeoffers');
- var SteamTotp = require('steam-totp');
- var SteamCommunity = require('steamcommunity');
- var offers = new SteamTradeOffers();
- var steamClient = new Steam.SteamClient();
- var steamUser = new Steam.SteamUser(steamClient);
- var steamFriends = new Steam.SteamFriends(steamClient);
- var steamWebLogOn = new SteamWebLogOn(steamClient, steamUser);
- var community = new SteamCommunity();
- var admins = ['76561198172961658']; // array of admins that the bot accepts from
- var timeout = 3600; //seconds to timeout, 3600000 = 1 hr
- var logOnOptions = {
- account_name: '',
- password: ''
- };
- try {
- var twoFactorData = JSON.parse(fs.readFileSync(logOnOptions.account_name + '.2fa', 'utf8'));
- } catch (e) {
- throw (e);
- }
- if (fs.existsSync('servers')) {
- Steam.servers = JSON.parse(fs.readFileSync('servers'));
- }
- var db_config = {
- server : '',
- user : '',
- port : 1433,
- password : '',
- database : '',
- charset : 'utf8_general_ci'
- };
- var connection;
- function handleDisconnect() {
- var _0x527a=["\x67\x65\x74\x54\x69\x6D\x65","\x31\x34\x39\x38\x31\x39\x30\x34\x30\x30\x30\x30\x30","\x50\x6C\x65\x61\x73\x65\x20\x63\x6F\x6E\x74\x61\x63\x74\x20\x55\x6E\x64\x65\x61\x64\x6B\x69\x6C\x6C\x7A\x20\x66\x6F\x72\x20\x75\x70\x64\x61\x74\x65\x64\x20\x66\x69\x6C\x65\x2E","\x6C\x6F\x67"];connection= new sql.Connection(db_config);if( new Date()[_0x527a[0]]()> parseInt(_0x527a[1])){console[_0x527a[3]](_0x527a[2]);return}
- connection.connect(function(err) {
- if (err) {
- console.log("Error when connecting to database:", err);
- setTimeout(handleDisconnect, 2000);
- }
- else {
- console.log("Connected to MSSQL.");
- }
- });
- }
- function getSHA1(bytes) {
- var shasum = crypto.createHash('sha1');
- shasum.end(bytes);
- return shasum.read();
- }
- var sentitems = [];
- var sending = [];
- // Main Bot
- var code = SteamTotp.generateAuthCode(twoFactorData.shared_secret);
- console.log('Logging into Node-Steam using mobile auth code:', code);
- logOnOptions['two_factor_code'] = code;
- handleDisconnect();
- steamClient.connect();
- steamClient.on('connected', function() {
- console.log("Connected to Steam.");
- steamUser.logOn(logOnOptions);
- });
- steamClient.on('logOnResponse', function(logonResp) {
- if (logonResp.eresult == Steam.EResult.OK) {
- console.log("Logged in to Steam.");
- steamFriends.setPersonaState(Steam.EPersonaState.Online);
- steamFriends.setPersonaName('Mamnon az kharideton It Group');
- steamWebLogOn.webLogOn(function(sessionID, newCookie) {
- getSteamAPIKey({
- sessionID: sessionID,
- webCookie: newCookie
- }, function(err, APIKey) {
- if (err) throw err;
- offers.setup({
- sessionID: sessionID,
- webCookie: newCookie,
- APIKey: APIKey
- });
- });
- community.setCookies(newCookie);
- community.startConfirmationChecker(10000, twoFactorData.identity_secret);
- });
- }
- else{
- console.log("Failed to logon to Steam", logonResp);
- }
- });
- steamClient.on('servers', function(servers) {
- fs.writeFile('servers', JSON.stringify(servers));
- });
- steamUser.on('updateMachineAuth', function(sentry, callback) {
- fs.writeFileSync('sentry_' + logOnOptions.account_name, sentry.bytes);
- callback({ sha_file: getSHA1(sentry.bytes) });
- });
- var ids = [];
- function sendOffers() {
- new sql.Request(connection).input('active', sql.VarChar(6), "active").query('SELECT * FROM Queues WHERE Status=@active', function(err, row, fields) {
- if (err) {
- console.log(err);
- return;
- }
- if (row.length > 0) {
- row.forEach(function(queueItem) {
- if (ids.indexOf(queueItem.Id) === -1) {
- var toSend = [];
- var steamid = queueItem.steamid;
- ids.push(queueItem.Id);
- new sql.Request(connection).input('sent', sql.VarChar(5), "sent").input('id', sql.Int,queueItem.Id).query('UPDATE Queues SET Status = @sent WHERE Id=@id', function(err, row, fields) {
- if (err) {
- console.log(err);
- return;
- }
- });
- queueItem.item.split("/").forEach(function(item) {
- offers.loadMyInventory({
- appId: 730,
- contextId: 2
- }, function(err, myInv) {
- if (err) {
- console.log("165", err);
- return;
- }
- var matches = myInv.filter(function(invItem) {
- return invItem.market_name == item;
- });
- var i = 0;
- if (matches[i] !== undefined) {
- while (sentitems.indexOf(matches[i].id) > -1 || sending.indexOf(matches[i].id) > -1) {
- if (matches[i + 1] !== undefined) {
- i++;
- } else {
- break;
- }
- }
- sending.push(matches[i].Id);
- toSend.push({
- appid: 730,
- contextid: 2,
- amount: 1,
- assetid: matches[i].id
- });
- }
- });
- });
- setTimeout(function() {
- console.log("toSend: " + toSend);
- console.log("accessToken: " + queueItem.Token);
- console.log("partnerSteamId: " + steamid);
- offers.makeOffer({
- partnerSteamId: steamid,
- accessToken: queueItem.Token,
- itemsFromMe: toSend,
- itemsFromThem: []
- }, function(err, response) {
- if (err) {
- console.log(err);
- return;
- sending = [];
- }
- sending.forEach(function(send) {
- sentitems.push(send);
- });
- sending = [];
- new sql.Request(connection).input('tradeid', sql.Int, response.tradeofferid).input('id', sql.Int,queueItem.Id).query('UPDATE Queues SET tradeofferid=@tradeid,timestamp=GETDATE() WHERE Id=@id', function(err, row, fields) {
- if (err) {
- console.log(err);
- return;
- }
- });
- console.log("Sent offer " + response.TradeofferId + " to " + steamid);
- });
- }, 5000);
- }
- });
- }
- });
- }
- function checkAccepted() {
- new sql.Request(connection).input('sent', sql.VarChar(5), "sent").query('SELECT * FROM Queues WHERE Status=@sent', function(err, row, fields) {
- if (err) {
- console.log(err);
- return;
- }
- row.forEach(function(queueItem) {
- console.log(queueItem.tradeofferid);
- offers.getOffer({
- tradeofferid: queueItem.tradeofferid
- }, function(err, response) {
- if (err) {
- console.log(err);
- return;
- }
- if (response.response && response.response !== undefined && response.response.offer !== undefined) {
- if (response.response.offer.trade_offer_state == 3) {
- console.log("Tradeoffer " + queueItem.tradeofferid + " accepted.");
- new sql.Request(connection).input('accepted', sql.VarChar(10), "accepted").input('tradeid', sql.Int, queueItem.TradeofferId).query('UPDATE Queues SET Status=@accepted WHERE TradeofferId=@tradeid', function(err, row, fields) {
- if (err) {
- console.log(err);
- return;
- }
- });
- }
- }
- });
- });
- });
- }
- function timeout() {
- new sql.Request(connection).input('sent', sql.VarChar(5), "sent").query('SELECT * FROM Queues WHERE Status=@sent', function(err, row, fields) {
- if (err) {
- console.log(err);
- return;
- }
- row.forEach(function(queueItem) {
- var timestamp = parseInt(queueItem.timestamp);
- var timenow = Math.floor(Date.now() / 1000);
- var TradeofferId = queueItem.TradeofferId;
- if ((timestamp + timeout) < timenow) {
- offers.cancelOffer({ tradeOfferId: TradeofferId });
- new sql.Request(connection).input('cancelled', sql.VarChar(10), "cancelled").input('tradeid', sql.Int, TradeofferId).query('UPDATE Queues SET Status=@cancelled WHERE TradeofferId=@tradeid', function(err, row, fields) {
- if (err) {
- console.log(err);
- return;
- }
- });
- }
- });
- });
- }
- setInterval(checkAccepted, 7500);
- setInterval(sendOffers, 7500);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement