Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Initalizing packages
- */
- const SteamUser = require('steam-user');
- const TradeOfferManager = require('steam-tradeoffer-manager');
- const SteamTotp = require('steam-totp');
- const SteamCommunity = require('steamcommunity');
- const fs = require('fs');
- const request = require('request');
- const config = require('./configmultilevel.json');
- const community = new SteamCommunity();
- const client = new SteamUser();
- const manager = new TradeOfferManager({
- steam: client,
- domain: 'example.com',
- language: 'en'
- });
- /*
- Polling Steam and Logging On
- */
- client.logOn({
- accountName: config.username,
- password: config.password,
- twoFactorCode: SteamTotp.generateAuthCode(config.sharedSecret)
- });
- /*
- Getting prices
- */
- const priceUrl = 'https://api.steamapi.io/market/prices/'+config.options.appid+'?key='+config.options.apikey;
- function getPriceList() {
- request(priceUrl, (error, response, body) => {
- if (error || response.statusCode !== 200) return console.log(`Error: ${error} - Status Code: ${response.statusCode}`);
- fs.writeFile('prices.json', body);
- });
- }
- function priceItemsInOffer(offer) {
- let offerValue = 0;
- if (offer) {
- const prices = require('./prices.json'); //Requiring price file
- //Loop through offer and get total price
- for (var x in offer) {
- if (prices[offer[x].market_hash_name] <= config.options.minPricePerItem) {
- offerValue += (prices[offer[x].market_hash_name] * 0.1)
- }
- else if (prices[offer[x].market_hash_name] <= config.options.minPricePerItem2) {
- offerValue += (prices[offer[x].market_hash_name] * 0.3)
- }
- else if (prices[offer[x].market_hash_name] <= config.options.minPricePerItem3) {
- offerValue += (prices[offer[x].market_hash_name] * 0.8)
- }
- else offerValue += prices[offer[x].market_hash_name]
- }
- }
- return offerValue;
- }
- //Make the first price request
- getPriceList();
- //Auto Refresh price
- setInterval(getPriceList, config.options.priceRefreshInterval * 1000);
- /*
- Friend requests and chat
- */
- // Accepting friends requests.
- client.on("friendRelationship", (steamid, reletionship) => {
- if (reletionship === 2) {
- community.getGroupMembers('103582791458524004', function(err, members) {
- if (members.indexOf(steamid) > -1) {
- client.addFriend(steamid);
- client.chatMessage(steamid, `Thank you for adding me!`);
- console.log(`Friends request accepted, is group member. SteamID: ${steamid}`);
- } else if (err){
- console.log(err);
- } else {
- client.removeFriend(steamid);
- console.log(`Ignored friends request, not in the group. SteamID: ${steamid}`);
- }
- });
- }
- });
- client.on('friendMessage', (steamID, message) => {
- console.log(config.options.chatResponse.commands[message]);
- if (config.options.chatResponse.commands[message]) {
- client.chatMessage(steamID, config.options.chatResponse.commands[message]);
- }
- else {
- client.chatMessage(steamID, config.options.chatResponse.unknownCommand);
- }
- });
- /*
- Offer handling
- */
- function isInArray(value, array) {
- return array.indexOf(value) > -1;
- }
- function acceptOffer(offer) {
- offer.accept((err) => {
- if (err) console.log(`Unable to accept offer: ${err.message}`);
- community.checkConfirmations();
- });
- }
- function declineOffer(offer) {
- offer.decline((err) => {
- if (err) return console.log(`Unable to decline offer: ${err.message}`);
- });
- }
- manager.on('newOffer', function(offer) {
- const partnerid = offer.partner.getSteamID64();
- offer.getUserDetails((err, me, them) => {
- if(err) return console.log(err);
- if(them.escrowDays > 0) {
- console.log('Trade is in escrow. Declining.');
- declineOffer(offer);
- }
- });
- console.log(`New offer # ${offer.id} from ${partnerid}`);
- if (isInArray(partnerid, config.adminIDs)) {
- client.chatMessage(partnerid, config.options.chatResponse.adminTrade);
- acceptOffer(offer);
- } else if (!offer.itemsToGive.length) {
- console.log(`${partnerid} just donated us items.`);
- client.chatMessage(partnerid, config.options.chatResponse.donation); //Sending message for donations
- acceptOffer(offer);
- }else if (priceItemsInOffer(offer.itemsToReceive) < config.options.minimumprice1) {
- client.chatMessage(partnerid, config.options.chatResponse.tradeDeclined);
- declineOffer(offer);
- } else if (priceItemsInOffer(offer.itemsToGive) <= priceItemsInOffer(offer.itemsToReceive) * config.options.percentamountlv) {
- client.chatMessage(partnerid, config.options.chatResponse.tradeAccepted);
- acceptOffer(offer);
- }else if (priceItemsInOffer(offer.itemsToReceive) < config.options.minimumprice) {
- client.chatMessage(partnerid, config.options.chatResponse.tradeDeclined);
- declineOffer(offer);
- }else if (priceItemsInOffer(offer.itemsToGive) <= priceItemsInOffer(offer.itemsToReceive) * config.options.percentamount) {
- client.chatMessage(partnerid, config.options.chatResponse.tradeAccepted);
- acceptOffer(offer);
- }else {
- client.chatMessage(partnerid, config.options.chatResponse.tradeDeclined);
- declineOffer(offer);
- }});
- //Refresh polldata.json
- manager.on('pollData', function(pollData) {
- fs.writeFile('polldata.json', JSON.stringify(pollData));
- });
- if (fs.existsSync('polldata.json')) {
- manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
- }
- client.on('loggedOn', function(details) {
- console.log(`Logged into Steam as ${client.steamID.getSteam3RenderedID()}`);
- client.setPersona(SteamUser.Steam.EPersonaState.Online,config.botname);
- client.gamesPlayed([000])
- });
- client.on('webSession', function(sessionID, cookies) {
- manager.setCookies(cookies, function(err) {
- if (err) return console.log(err);
- console.log(`Got API key: ${manager.apiKey}`);
- });
- community.setCookies(cookies);
- community.startConfirmationChecker(config.options.confirmationInterval, config.identitySecret);
- });
Add Comment
Please, Sign In to add comment