Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let steamData = require("./steam.js");
- let colors = require('colors');
- let mysql = require('mysql');
- let bp = require('./bp.js');
- let tradesCount = require('./tradesCount.js');
- let config = require('./config.json');
- let func = require('./functions.js');
- var connection = mysql.createConnection({
- host: config.db.host,
- user: config.db.user,
- password: config.db.pass,
- database: config.db.dbname
- });
- connection.connect((err) => { if (err) { throw err; return; } });
- var keysDefaultPrice = 34;
- var traded = 0;
- // Sends a heartbeat to backpack.tf to keep the lightening symbol
- // bp.startAutomatic(config.myID, config.bpToken, function(err){
- // if (err) {console.log(err);return;}
- // });
- // Handling friends request
- steamData.clientUser.on('friendRelationship', (steamID, relationship) => {
- if (relationship === 2) {
- steamData.clientUser.addFriend(steamID);
- console.log("A friend request from "+steamID+" was accepted.\n".green);
- console.log("**************************************************************************************************\n");
- steamData.clientUser.chatMessage(steamID, config.addMessage);
- steamData.clientUser.inviteToGroup(steamID, config.groupID);
- }
- });
- steamData.clientUser.on('webSession', (sessionid, cookies) => {
- steamData.manager.setCookies(cookies);
- steamData.community.setCookies(cookies);
- steamData.community.startConfirmationChecker(5000, config.identitySecret);
- });
- steamData.clientUser.on("friendMessage", function(steamID, message) {
- var procmsg = func.proccessMsg(message, steamID, config);
- switch(procmsg) {
- case 'update':
- steamData.clientUser.chatMessage(steamID, "Updating stock......"); updateCurrentStock(1);
- break;
- case 'calc':
- steamData.clientUser.chatMessage(steamID, "Calculating inventory value....."); calculateValue(1);
- break;
- case 'show calc':
- connection.query('select * from stats where day = ?', tradesCount.date(), function(err, stat) {
- if (err) { console.error(err); return false; }
- if (stat.length == 0) {
- steamData.clientUser.chatMessage(steamID, "No stats for today !");
- } else {
- connection.query('select * from items where name = ?', 'Mann Co. Supply Crate Key', function(err, keyResult) {
- setTimeout(function() { steamData.clientUser.chatMessage(steamID, "Todays stats are as follows:"); }, 1000);
- setTimeout(function() { steamData.clientUser.chatMessage(steamID, "I accepted "+stat[0].accepted+" trades today,"); }, 2000);
- setTimeout(function() { steamData.clientUser.chatMessage(steamID, "I declined "+stat[0].declined+","); }, 3000);
- setTimeout(function() { steamData.clientUser.chatMessage(steamID, "And "+stat[0].leftTrades+" were left,"); }, 4000);
- setTimeout(function() { steamData.clientUser.chatMessage(steamID, "With a value of "+stat[0].value+" ref ("+func.convert(stat[0].value, keyResult[0].buy_ref)+") so far."); }, 5000);
- });
- }
- });
- break;
- case 'todays':
- connection.query('select * from stats', function(err, stats) {
- var stat = func.inStats(stats, tradesCount.date());
- if (stat == false) { steamData.clientUser.chatMessage(steamID, "0 successful trades today."); }
- else if(stat == "err") {steamData.clientUser.chatMessage(steamID, "an error has accured");}
- else { steamData.clientUser.chatMessage(steamID, stat.accepted+" successful trades today."); }
- });
- break;
- case 'sort':
- tf2.sortBackpack(4); steamData.clientUser.chatMessage(config.ownerID, "Sorted !");
- console.log("Sorted !"); console.log("--------------------------------------------------------------------------------------------------\n");
- case false:
- connection.query('select * from items', function(err, itemsResult) {
- if (err) { console.error(err); return false; }
- var msgItems= [];
- if (message.length > 3) { for(var i = 0; i < itemsResult.length; i++) { if (itemsResult[i].name.toLowerCase().indexOf(message.toLowerCase()) != -1 && (itemsResult[i].sell_key > 0 || itemsResult[i].sell_ref != 0.055)) { msgItems.push(itemsResult[i]); } } }
- if (msgItems.length == 0) {
- message = message.split(" ");
- var i = 0; while (i < message.length) { if (message[i] == "") { message.splice(i, 1); } else { i++; } }
- if (message[0] == "msg" && steamID == config.ownerID) {
- if (message[1] && message[2]) {
- var usrID = message[1];
- message.splice(0, 2); var msg = message.join(" ");
- steamData.clientUser.chatMessage(usrID, msg);
- }else {
- if (!message[1]) {
- console.log("No SteamID provided !");
- } else {
- if (message[1] != parseInt(message[1])) {
- console.log("User's steamID need to be given first");
- } else {
- if (!message[2]) {
- console.log("we can't send an empty message");
- }
- }
- }
- }
- console.log("--------------------------------------------------------------------------------------------------\n");
- }
- } else if(msgItems.length == 1) {
- steamData.clientUser.chatMessage(steamID, func.msgItemData(msgItems[0]));
- } else {
- for (var i = 0; i < msgItems.length; i++) {
- if (i < 6) {
- steamData.clientUser.chatMessage(steamID, func.msgItemData(msgItems[i]));
- } else if(i == 6) {
- steamData.clientUser.chatMessage(steamID, "5 items is the limit if the item you're looking for isn't shown then you need to be more precise in the name.");
- break;
- }
- }
- }
- });
- break;
- default:
- steamData.clientUser.chatMessage(steamID, procmsg);
- break;
- }
- });
- function updateCurrentStock(line = 0) {
- console.log('Updating Current Stock.....');
- steamData.manager.loadUserInventory(config.myID, 440, 2, true, (err, inventory) => {
- var query = connection.query('select * from items', function(err, result) {
- if (err) { console.error(err); return false; }
- for (var i = 0; i < result.length; i++) {
- var stock = 0;
- for (var j in inventory) {
- if (func.craftable(inventory[j]) == result[i].name) {
- stock++;
- }
- }
- connection.query(`update items set currentStock = ${stock} where name = ?`, result[i].name, function(err, result) {
- if (err) { console.error(err); return false; }
- });
- if (i == (result.length -1)) {
- if (line) {
- console.log("--------------------------------------------------------------------------------------------------\n");
- }
- }
- }
- });
- });
- }
- function calculateValue(line = 0) {
- console.log('Calculating inventory value.....');
- steamData.manager.loadUserInventory('76561198273595803', 440, 2, true, (err, inventory) => {
- tradesCount.calcValue(inventory);
- if (line) {
- console.log("--------------------------------------------------------------------------------------------------\n");
- }
- });
- }
- function acceptOffer(offer, donate = 0) {
- offer.accept((err) => {
- if (err) {
- if (err.message.indexOf("Please try again later" == -1)) { steamData.clientUser.chatMessage(config.ownerID, "there was an error accepting an offer"); }
- console.log(("Error: "+err.message+"\n").red);
- return false;
- } else {
- steamData.community.checkConfirmations();
- tradesCount.plus("accepted");
- if (donate) {
- console.log("the donation have been accepted\n".green);
- } else {
- console.log("the offer have been accepted\n".green);
- }
- traded = 1;
- }
- console.log("**************************************************************************************************");
- console.log("**************************************************************************************************\n");
- });
- return true;
- }
- function declineOffer(offer) {
- offer.decline((err) => {
- console.log("the offer have been declined\n".red);
- tradesCount.plus("declined");
- console.log("**************************************************************************************************");
- console.log("**************************************************************************************************\n");
- if (err) console.log(("Error: "+err.message+"\n").red);
- });
- }
- function processOffer(offer) {
- connection.query('select * from items', function(err, result) {
- if (err) { console.error(err); return false; }
- var notyet = 0, keysPrice = func.inItems(result, "Mann Co. Supply Crate Key");
- if (offer.isGlitched() || offer.state === 11) {
- console.log("Offer was glitched, declining.".red);
- notyet = 1;
- declineOffer(offer);
- } else if (offer.partner.getSteamID64() === config.ownerID) {
- console.log("The Owner sent a trade".blue);
- notyet = 1;
- acceptOffer(offer);
- } else {
- var ourItems = offer.itemsToGive;
- var theirItems = offer.itemsToReceive;
- var ourValue = 0, theirValue = 0, ourItemsList = {}, ourItemsNames = "", theirItemsList = {}, theirItemsNames = "";
- for (var i in ourItems) {
- var item = func.craftable(ourItems[i]);
- if (!ourItemsList[item]) { ourItemsList[item] = 1; } else { ourItemsList[item] += 1; }
- var itemData = func.inItems(result, item);
- if (itemData == false) {
- if (!notyet) {
- console.log("User has chosen an item that isn't in the database yet.\n".yellow);
- notyet = 1;
- }
- } else {
- if (itemData.sell_key > 0) {
- for (var i = 0; i < itemData.sell_key; i++) {
- ourValue = func.fixFloat(ourValue + keysPrice.sell_ref);
- }
- }
- ourValue = func.fixFloat(ourValue + itemData.sell_ref);
- }
- }
- for(var i in theirItems) {
- var item = func.craftable(theirItems[i]),
- itemType = theirItems[i].type;
- if (!theirItemsList[item]) { theirItemsList[item] = 1; } else { theirItemsList[item] += 1; }
- var itemData = func.inItems(result, item);
- if (itemData == false) {
- if (!notyet) {
- console.log("User offered an item that isn't in the database yet.\n".yellow);
- console.log("named: "+item);
- notyet = 1;
- }
- } else {
- if ((itemData.currentStock + theirItemsList[item]) > itemData.maxStock) {
- console.log("User offered an overstocked item.\n");
- console.log("named: "+item);
- notyet = 1;
- } else {
- if (itemData.buy_key > 0) {
- for (var i = 0; i < itemData.buy_key; i++) {
- if (func.overpay(theirItems, result, [])) { theirValue = func.fixFloat(theirValue + keysPrice.sell_ref); }
- else { theirValue = func.fixFloat(theirValue + keysPrice.buy_ref); }
- }
- }
- theirValue = func.fixFloat(theirValue + itemData.buy_ref);
- }
- }
- }
- for (var i in ourItemsList) { ourItemsNames += i+" x"+ourItemsList[i]+", "; }
- for (var i in theirItemsList) { theirItemsNames += i+" x"+theirItemsList[i]+", "; }
- if (ourItems.length === 0) {
- console.log(("A user donated: "+ theirItemsNames +"\n").green);
- acceptOffer(offer, 1);
- notyet = 1;
- }
- }
- if (!notyet) {
- ourValue = parseFloat(func.fixFloat(parseFloat(ourValue).toFixed(3)));
- theirValue = parseFloat(func.fixFloat(parseFloat(theirValue).toFixed(3)));
- if (func.overpay(theirItems, result, []) && func.overpay(ourItems, result, [])) {
- console.log(("A user offered: "+ theirItemsNames).blue);
- console.log("\tTheir value: "+func.convert(theirValue, keysPrice.buy_ref)+ " ("+theirValue+" ref)");
- console.log(("for our: "+ ourItemsNames).blue);
- var ourv = parseFloat((ourValue+config.overpayBy)).toFixed(2);
- console.log("\tOur value: "+ func.convert(ourValue, keysPrice.sell_ref) + " + "+config.overpayBy+" ref = "+ func.convert(ourv, keysPrice.sell_ref)+ " ("+ourv+" ref)");
- if ((theirValue - ourv) >= 0) {
- acceptOffer(offer);
- } else {
- declineOffer(offer);
- }
- } else{
- console.log(("A user offered: "+ theirItemsNames).blue);
- console.log("\tTheir value: "+ func.convert(theirValue, keysPrice.sell_ref)+ " ("+theirValue+" ref)");
- console.log(("for our: "+ ourItemsNames).blue);
- console.log("\tOur value: "+ func.convert(ourValue, keysPrice.sell_ref)+ " ("+ourValue+" ref)");
- if ((theirValue - ourValue) >= 0) {
- acceptOffer(offer);
- } else {
- declineOffer(offer);
- }
- }
- }
- });
- }
- steamData.clientUser.setOption("promptSteamGuardCode", false);
- // setInterval(function(){
- // bp.startAutomatic(config.myID, config.bpToken, function(err){
- // if (err) {console.log("Error while sending bp.tf heartbeat");return;}
- // if (traded) {
- // console.log('Heartbeat sent to backpack.tf');
- // updateCurrentStock(1);
- // traded = 0;
- // }
- // });
- // }, 1000 * 60 * 5);
- steamData.manager.on('newOffer', (offer) => {
- processOffer(offer);
- });
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////// //////////////
- ////////////// //////////////
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- let express = require('express');
- let bodyParser = require('body-parser');
- let app = express();
- let error = '', success = '';
- app.set('view engine', 'ejs');
- app.use('/assets', express.static('public'));
- app.use(bodyParser.urlencoded({extended: false}));
- app.use(bodyParser.json());
- app.get('/', (req, res) => {
- connection.query('select * from items', function(err, result) {
- if (err) { console.error(err); return false; }
- for(var i=0; i<result.length;i++){
- var firstWord = (result[i].name).split(' ')[0].toLowerCase();
- var qualities = ['strange', 'genuine', 'unusual', 'vintage', 'hunted', 'collectors'];
- if(qualities.indexOf(firstWord) == -1){ result[i].quality = 'unique'; } else { result[i].quality = firstWord; }
- }
- res.render('pages/index', {prices: result, count: 2, error: error, success: success});
- error = '';success = "";
- });
- });
- app.get('/history', (req, res) => {
- steamData.community.getInventoryHistory({resolveVanityURLs: true}, function(err, history) {
- if (err) {
- if (String(err).indexOf("Not Logged In") != -1) {
- res.render("pages/error", {message: "You need to wait a moment before requesting your trades history, Reload the page in a bit."});
- } else {
- console.error("damn it",err);
- res.render("pages/error", {message: "An error has accured please try in a moment."});
- }
- } else {
- res.render('pages/history', {jumbo: {title: "Trades", message: "Latest accepted trades"}, history: history});
- }
- });
- });
- app.get('/update', (req, res) => { res.redirect('/'); });
- app.get('/add', (req, res) => { res.redirect('/'); });
- app.post('/add', (req, res) => {
- if (req.body.itemName == '' ||req.body.bpurl == '' || req.body.maxStock == '' || req.body.buy_key == '' || req.body.sell_key == '' || req.body.buy_ref == '' || req.body.sell_ref == '' || req.body.img == '') {
- res.send({result: 'error', message: 'All fields most have a value'});
- } else {
- var itemData = { name: req.body.itemName, maxStock: req.body.maxStock, buy_key: req.body.buy_key, buy_ref: req.body.buy_ref, sell_key: req.body.sell_key, sell_ref: req.body.sell_ref, img: req.body.img, bpurl: req.body.bpurl };
- connection.query('insert into items set ?', itemData, function(err, result) {
- if (err) { console.error(err); return false; }
- res.send({result: 'success', message: "Item added successfully"});
- });
- }
- });
- app.post('/update', (req, res) => {
- if (req.body.itemName == '' || req.body.maxStock == '' || req.body.buy_key == '' || req.body.sell_key == '' || req.body.buy_ref == '' || req.body.sell_ref == '') {
- res.send({result: 'error', message: 'All fields most have a value'});
- } else {
- var item = req.body;
- var query1 = connection.query(`update items set maxStock = ${item.maxStock}, buy_key = ${item.buy_key}, buy_ref = ${item.buy_ref}, sell_key =${item.sell_key}, sell_ref = ${item.sell_ref} where name = ?`, item.itemName, function(err, result) {
- if (err) { console.error(err); return false; }
- res.send({result: 'success', message: "Item updated successfully"});
- });
- }
- });
- app.get('/delete/:id', (req, res) => {
- if (req.params.id != parseInt(req.params.id)) {
- res.send({result: 'error', message: 'the id must be an integer !'});
- } else {
- var query1 = connection.query(`delete from items where itemId = ?`, req.params.id, function(err, result) {
- if (err) { console.error(err); res.send({result: 'error', message: 'there was an error deleting the item'}); }
- else { res.send({result: 'success', message: "item deleted successfully"}); }
- });
- }
- });
- app.listen(config.port, function() { console.log('Listening on port '+config.port); });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement