Advertisement
Guest User

Untitled

a guest
Mar 30th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.51 KB | None | 0 0
  1.  
  2.  
  3. // Steam logon options
  4. var logOnOptions = {
  5. accountName: '',
  6. password: ''
  7. };
  8.  
  9. var authCode = '';
  10.  
  11. // Admins' SteamID64
  12. var admins = [''];
  13.  
  14. var SteamUser = require('steam-user');
  15. var SteamTotp = require('steam-totp');
  16. var SteamCommunity = require('steamcommunity');
  17. var TradeOfferManager = require('steam-tradeoffer-manager');
  18. var getSteamAPIKey = require('steam-web-api-key');
  19. var fs = require('fs');
  20. var winston = require('winston');
  21. var crypto = require('crypto');
  22. var mysql = require('mysql');
  23. var request = require('request');
  24.  
  25. // MySQL options
  26. var dbOptions = {
  27. host: '',
  28. user: '',
  29. password: '',
  30. database: '',
  31. charset: 'utf8_general_ci'
  32. };
  33.  
  34. var database = {
  35. init: initMySQL,
  36. connection: false
  37. };
  38.  
  39. // Initiate MySQL
  40. database.init(dbOptions);
  41.  
  42. function initMySQL(config) {
  43. database.connection = mysql.createConnection(config);
  44.  
  45. database.connection.connect(function(err) {
  46. if (err) {
  47. console.log("Error connecting to database: " + err);
  48. setTimeout(initMySQL, 2000);
  49. } else {
  50. console.log("Connected to MySQL.");
  51. }
  52. });
  53.  
  54. database.connection.on('error', function(err) {
  55. console.log("MySQL error: " + err);
  56. if (err.code === 'PROTOCOL_CONNECTION_LOST') {
  57. initMySQL();
  58. } else {
  59. throw err;
  60. }
  61. });
  62. }
  63.  
  64. winston.add(winston.transports.File, { filename: 'botlog.log', level: 'debug' });
  65.  
  66. var client = new SteamUser();
  67. var community = new SteamCommunity();
  68. var manager = new TradeOfferManager({
  69. "steam": client,
  70. "domain": "",
  71. "language": "en",
  72. "pollInterval": 1000,
  73. });
  74.  
  75. var global = {};
  76. var keys = {};
  77.  
  78. var algorithm = 'aes-256-ctr';
  79. var password = 'd6F3Efeq';
  80.  
  81. // Get our two factor authentication file
  82. if (fs.existsSync(logOnOptions.accountName + '.2fa')) {
  83. keys = JSON.parse(fs.readFileSync(logOnOptions.accountName + '.2fa'));
  84. } else {
  85. console.log('[Error: No 2FA file found: ' + logOnOptions.accountName + '.2fa]');
  86. }
  87.  
  88. // If we have a polldata.json file, use it
  89. if (fs.existsSync('polldata.json')) {
  90. try {
  91. manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
  92. } catch (e) {
  93. console.log('Could not log polldata');
  94. }
  95. }
  96.  
  97. // Generate the 2FA code
  98. logOnOptions['twoFactorCode'] = SteamTotp.generateAuthCode(keys.shared_secret);
  99. console.log("Using code: " + logOnOptions['twoFactorCode']);
  100.  
  101. // Logon to Steam
  102. client.logOn(logOnOptions);
  103.  
  104. // Emitted when we successfully log into Steam
  105. client.on('loggedOn', function () {
  106. console.log("Logged into Steam");
  107. winston.log('debug','Logged in');
  108. admins.forEach(function(steamid) {
  109. client.chatMessage(steamid, "Logged in.");
  110. });
  111. client.setPersona(SteamUser.Steam.EPersonaState.Online, 'Alex\'s Dank Ass Bot');
  112. });
  113.  
  114. // Emitted when our websession is updated
  115. client.on('webSession', function(sessionID, cookies) {
  116. global.sessionid = sessionID;
  117.  
  118. manager.setCookies(cookies, function(err) {
  119. if (err) {
  120. throw err;
  121. } else {
  122. community.setCookies(cookies);
  123. community.startConfirmationChecker(10000, keys.identity_secret);
  124. }
  125. });
  126.  
  127. getSteamAPIKey({
  128. sessionID: sessionID,
  129. webCookie: cookies
  130. }, function(err, APIKey) {
  131. if (err) {
  132. throw err;
  133. } else {
  134. global.apikey = APIKey;
  135. }
  136. });
  137. });
  138.  
  139. manager.on('newOffer', function(offer) {
  140. console.log("GOT NEW OFFER OMFG THIS IS SUCH A DANK ASS BOT!");
  141.  
  142. if (offer.itemsToGive.length == 0) {
  143. console.log("Accepterino")
  144. offer.accept(function(err) {
  145. if (err) {
  146. console.log(err);
  147. } else {
  148. var price = 0.00;
  149.  
  150. offer.itemsToReceive.forEach(function(item, index, array) {
  151. request("http://steamcommunity.com/market/priceoverview/?appid=730&currency=1&market_hash_name=" + item.market_hash_name, function(err, response, body) {
  152. try {
  153. body = JSON.parse(body);
  154. } catch (e) {
  155. console.log(e);
  156. }
  157.  
  158. price += parseFloat(body.median_price.replace("$", "")) * 100;
  159.  
  160. if (index + 1 >= array.length) {
  161. database.connection.query('UPDATE `users` SET `balance`=`balance`+'+price+' WHERE `steamid`=\''+offer.partner.getSteamID64()+'\'', function(err, row, fields) {
  162. if (err) {
  163. console.log(err);
  164. }
  165. });
  166. }
  167. });
  168. });
  169. }
  170. });
  171. } else {
  172. console.log("Declinerino")
  173. offer.decline();
  174. }
  175. })
  176.  
  177. client.on('friendMessage', function(steamid, message) {
  178. console.log(steamid.getSteamID64() + ': ' + message);
  179.  
  180. switch (true) {
  181. case (message.toLowerCase().split(' ')[0] === '!code'):
  182. client.chatMessage(steamid, 'Sending item ' + message.replace(message.split(' ')[0] + ' ', ''));
  183.  
  184. //if (codes[message.toLowerCase().split(' ')[1]] !== undefined) {
  185. //console.log(codes[message.toLowerCase().split(' ')[1]].item);
  186. //sendItem(steamid.getSteamID64(), codes[message.toLowerCase().split(' ')[1]].item);
  187. sendItem(steamid.getSteamID64(), message.toLowerCase().split(' ')[1]);
  188. //}
  189. break;
  190. case (message.toLowerCase().split(' ')[0] === '!encrypt'):
  191. client.chatMessage(steamid, encrypt(message.toLowerCase().split(' ')[1]));
  192. break;
  193. default:
  194. client.chatMessage(steamid.getSteamID64(), "Unknown command: " + message.toLowerCase().split(' ')[0]);
  195. break;
  196. }
  197. });
  198.  
  199. // Function Declarations
  200.  
  201. function sendItem(steamid, hashed) {
  202. var offer = manager.createOffer(steamid);
  203.  
  204. var assetid = decrypt(hashed);
  205.  
  206. console.log("Adding item: " + assetid);
  207.  
  208. offer.addMyItem({
  209. appid: 730,
  210. contextid: 2,
  211. amount: 1,
  212. assetid: assetid
  213. });
  214.  
  215. offer.send('Item ' + assetid + ' from my inventory.', undefined, function(err, status) {
  216. if (err) {
  217. console.log(err);
  218. client.chatMessage(steamid, err.toString());
  219. } else {
  220. community.checkConfirmations();
  221. client.chatMessage(steamid, 'Sent offer: https://steamcommunity.com/tradeoffer/' + offer.id + '/');
  222. }
  223. });
  224. }
  225.  
  226. function encrypt(text) {
  227. var crypted = "";
  228.  
  229. try {
  230. var cipher = crypto.createCipher(algorithm, password);
  231. crypted = cipher.update(text, 'utf8', 'hex');
  232.  
  233. crypted += cipher.final('hex');
  234. } catch (e) {
  235. console.log(e);
  236. }
  237.  
  238. return crypted;
  239. }
  240.  
  241. function decrypt(text) {
  242. var dec = "";
  243.  
  244. try {
  245. var decipher = crypto.createDecipher(algorithm, password);
  246. var dec = decipher.update(text, 'hex', 'utf8');
  247.  
  248. dec += decipher.final('utf8');
  249. } catch (e) {
  250. console.log(e);
  251. }
  252.  
  253. return dec;
  254. }
  255.  
  256. // Emitted when our polldata file is updated
  257. manager.on('pollData', function(pollData) {
  258. fs.writeFile('polldata.json', JSON.stringify(pollData));
  259. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement