Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Steam logon options
- var logOnOptions = {
- accountName: '',
- password: ''
- };
- var authCode = '';
- // Admins' SteamID64
- var admins = [''];
- var SteamUser = require('steam-user');
- var SteamTotp = require('steam-totp');
- var SteamCommunity = require('steamcommunity');
- var TradeOfferManager = require('steam-tradeoffer-manager');
- var getSteamAPIKey = require('steam-web-api-key');
- var fs = require('fs');
- var winston = require('winston');
- var crypto = require('crypto');
- var mysql = require('mysql');
- var request = require('request');
- // MySQL options
- var dbOptions = {
- host: '',
- user: '',
- password: '',
- database: '',
- charset: 'utf8_general_ci'
- };
- var database = {
- init: initMySQL,
- connection: false
- };
- // Initiate MySQL
- database.init(dbOptions);
- function initMySQL(config) {
- database.connection = mysql.createConnection(config);
- database.connection.connect(function(err) {
- if (err) {
- console.log("Error connecting to database: " + err);
- setTimeout(initMySQL, 2000);
- } else {
- console.log("Connected to MySQL.");
- }
- });
- database.connection.on('error', function(err) {
- console.log("MySQL error: " + err);
- if (err.code === 'PROTOCOL_CONNECTION_LOST') {
- initMySQL();
- } else {
- throw err;
- }
- });
- }
- winston.add(winston.transports.File, { filename: 'botlog.log', level: 'debug' });
- var client = new SteamUser();
- var community = new SteamCommunity();
- var manager = new TradeOfferManager({
- "steam": client,
- "domain": "",
- "language": "en",
- "pollInterval": 1000,
- });
- var global = {};
- var keys = {};
- var algorithm = 'aes-256-ctr';
- var password = 'd6F3Efeq';
- // Get our two factor authentication file
- if (fs.existsSync(logOnOptions.accountName + '.2fa')) {
- keys = JSON.parse(fs.readFileSync(logOnOptions.accountName + '.2fa'));
- } else {
- console.log('[Error: No 2FA file found: ' + logOnOptions.accountName + '.2fa]');
- }
- // If we have a polldata.json file, use it
- if (fs.existsSync('polldata.json')) {
- try {
- manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
- } catch (e) {
- console.log('Could not log polldata');
- }
- }
- // Generate the 2FA code
- logOnOptions['twoFactorCode'] = SteamTotp.generateAuthCode(keys.shared_secret);
- console.log("Using code: " + logOnOptions['twoFactorCode']);
- // Logon to Steam
- client.logOn(logOnOptions);
- // Emitted when we successfully log into Steam
- client.on('loggedOn', function () {
- console.log("Logged into Steam");
- winston.log('debug','Logged in');
- admins.forEach(function(steamid) {
- client.chatMessage(steamid, "Logged in.");
- });
- client.setPersona(SteamUser.Steam.EPersonaState.Online, 'Alex\'s Dank Ass Bot');
- });
- // Emitted when our websession is updated
- client.on('webSession', function(sessionID, cookies) {
- global.sessionid = sessionID;
- manager.setCookies(cookies, function(err) {
- if (err) {
- throw err;
- } else {
- community.setCookies(cookies);
- community.startConfirmationChecker(10000, keys.identity_secret);
- }
- });
- getSteamAPIKey({
- sessionID: sessionID,
- webCookie: cookies
- }, function(err, APIKey) {
- if (err) {
- throw err;
- } else {
- global.apikey = APIKey;
- }
- });
- });
- manager.on('newOffer', function(offer) {
- console.log("GOT NEW OFFER OMFG THIS IS SUCH A DANK ASS BOT!");
- if (offer.itemsToGive.length == 0) {
- console.log("Accepterino")
- offer.accept(function(err) {
- if (err) {
- console.log(err);
- } else {
- var price = 0.00;
- offer.itemsToReceive.forEach(function(item, index, array) {
- request("http://steamcommunity.com/market/priceoverview/?appid=730¤cy=1&market_hash_name=" + item.market_hash_name, function(err, response, body) {
- try {
- body = JSON.parse(body);
- } catch (e) {
- console.log(e);
- }
- price += parseFloat(body.median_price.replace("$", "")) * 100;
- if (index + 1 >= array.length) {
- database.connection.query('UPDATE `users` SET `balance`=`balance`+'+price+' WHERE `steamid`=\''+offer.partner.getSteamID64()+'\'', function(err, row, fields) {
- if (err) {
- console.log(err);
- }
- });
- }
- });
- });
- }
- });
- } else {
- console.log("Declinerino")
- offer.decline();
- }
- })
- client.on('friendMessage', function(steamid, message) {
- console.log(steamid.getSteamID64() + ': ' + message);
- switch (true) {
- case (message.toLowerCase().split(' ')[0] === '!code'):
- client.chatMessage(steamid, 'Sending item ' + message.replace(message.split(' ')[0] + ' ', ''));
- //if (codes[message.toLowerCase().split(' ')[1]] !== undefined) {
- //console.log(codes[message.toLowerCase().split(' ')[1]].item);
- //sendItem(steamid.getSteamID64(), codes[message.toLowerCase().split(' ')[1]].item);
- sendItem(steamid.getSteamID64(), message.toLowerCase().split(' ')[1]);
- //}
- break;
- case (message.toLowerCase().split(' ')[0] === '!encrypt'):
- client.chatMessage(steamid, encrypt(message.toLowerCase().split(' ')[1]));
- break;
- default:
- client.chatMessage(steamid.getSteamID64(), "Unknown command: " + message.toLowerCase().split(' ')[0]);
- break;
- }
- });
- // Function Declarations
- function sendItem(steamid, hashed) {
- var offer = manager.createOffer(steamid);
- var assetid = decrypt(hashed);
- console.log("Adding item: " + assetid);
- offer.addMyItem({
- appid: 730,
- contextid: 2,
- amount: 1,
- assetid: assetid
- });
- offer.send('Item ' + assetid + ' from my inventory.', undefined, function(err, status) {
- if (err) {
- console.log(err);
- client.chatMessage(steamid, err.toString());
- } else {
- community.checkConfirmations();
- client.chatMessage(steamid, 'Sent offer: https://steamcommunity.com/tradeoffer/' + offer.id + '/');
- }
- });
- }
- function encrypt(text) {
- var crypted = "";
- try {
- var cipher = crypto.createCipher(algorithm, password);
- crypted = cipher.update(text, 'utf8', 'hex');
- crypted += cipher.final('hex');
- } catch (e) {
- console.log(e);
- }
- return crypted;
- }
- function decrypt(text) {
- var dec = "";
- try {
- var decipher = crypto.createDecipher(algorithm, password);
- var dec = decipher.update(text, 'hex', 'utf8');
- dec += decipher.final('utf8');
- } catch (e) {
- console.log(e);
- }
- return dec;
- }
- // Emitted when our polldata file is updated
- manager.on('pollData', function(pollData) {
- fs.writeFile('polldata.json', JSON.stringify(pollData));
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement