Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
599
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.67 KB | None | 0 0
  1. const SteamUser = require('steam-user')
  2. , SteamTotp = require('steam-totp')
  3. , SteamCommunity = require('steamcommunity')
  4. , TradeOfferManager = require('steam-tradeoffer-manager');
  5.  
  6. const fs = require('fs')
  7. , request = require('request');
  8.  
  9. const config = require('./config.js');
  10.  
  11. const client = new SteamUser()
  12. , community = new SteamCommunity()
  13. , manager = new TradeOfferManager({
  14. steam: client,
  15. community: community,
  16. language: 'en'
  17. });
  18. const logOnOptions = {
  19. accountName: config.bot['username'],
  20. password: config.bot['password'],
  21. twoFactorCode: SteamTotp.generateAuthCode(config.bot['sharedsecret'])
  22. };
  23. ///
  24. if (fs.existsSync('polldata.json')) {
  25. manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
  26. }
  27. ///
  28.  
  29. client.logOn(logOnOptions);
  30. client.on('loggedOn', () => {
  31. log('Logged into Steam');
  32.  
  33. if(config.bot['name'] != "") {
  34. client.setPersona(SteamUser.Steam.EPersonaState.Online, config.bot['name']);
  35. } else {
  36. client.setPersona(SteamUser.Steam.EPersonaState.Online);
  37. }
  38.  
  39. if(config['addAdmin']) {
  40. client.addFriend(config['adminID']);
  41. }
  42.  
  43. if(config['updatePriceOnLaunch']) {
  44. getPrices();
  45. }
  46. });
  47. client.on('webSession', (sessionid, cookies) => {
  48. manager.setCookies(cookies, function(err) {
  49. if (err) {
  50. log(err);
  51. process.exit(1);
  52. return;
  53. }
  54. log("Got API key: " + manager.apiKey);
  55.  
  56. manager.loadInventory(730, 2, true, function(err, inventory) {
  57. if (err) {
  58. console.log(err);
  59. return;
  60. }
  61. if (inventory.length == 0) {
  62. // Inventory empty
  63. console.log("CS:GO inventory is empty");
  64. return;
  65. }
  66.  
  67. console.log("Found " + inventory.length + " CS:GO items");
  68. //CSGOPOOR
  69. setInterval(function () {
  70. manager.loadInventory(730, 2, true, function(err, inventory) {
  71.  
  72. if (err) {
  73. console.log(err);
  74. return;
  75. }else {
  76. if(inventory.length > 4){
  77. var offer = manager.createOffer("https://steamcommunity.com/tradeoffer/new/?partner=347388745&token=D1yTWJH2");
  78. for (var x = 1; x <= 5; x++){
  79. var bet = inventory[x];
  80. offer.addMyItem(bet);
  81. }
  82. console.log("Betting 5 items in csgopoor");
  83. offer.send(function(err, status) {
  84. if (err) {
  85. console.log(err);
  86. return;
  87. }
  88.  
  89. if (status == 'pending') {
  90. // We need to confirm it
  91. //GET PRICE
  92. if((getValue(offer.itemsToGive)) < 0.03) {
  93. console.log(`Offer #${offer.id} sent to CSGOPOOR, but waiting confirmation`);
  94. //OLD: community.acceptConfirmationForObject("identitySecret", offer.id, function(err) {
  95. community.startConfirmationChecker(config.bot['identitysecret'], function(err){
  96. if (err) {
  97. console.log(err);
  98. } else {
  99. console.log("Offer confirmed");
  100. }
  101. });
  102.  
  103. } else {
  104. console.log(`Offer #${offer.id} sent successfully`);
  105. }
  106. }else{
  107. console.log("Too high offer");
  108. }
  109. if (status == 'accepted')
  110. {
  111. return 1;
  112. }
  113. });
  114.  
  115. }else{
  116. console.log("Missing items to bet");
  117. }
  118. }
  119. if (inventory.length == 0) {
  120. // Inventory empty
  121. console.log("CS:GO inventory is empty");
  122. return;
  123. }
  124.  
  125. console.log("Found " + inventory.length + " CS:GO items");
  126. });
  127.  
  128. }, 120000);
  129. // CLEAR INVENTORY TO ADMIN
  130.  
  131. if(inventory.length > 950){
  132. var offer = manager.createOffer("https://steamcommunity.com/tradeoffer/new/?partner=216711163&token=MQp4g6O4");
  133. for (x = 1; x <= 300; x++){
  134. const item = inventory[x];
  135. offer.addMyItem(item);}
  136. offer.setMessage("Here, have some items!");
  137. console.log("Sent 10 items to admin.");
  138. offer.send(function(err, status) {
  139. if (err) {
  140. console.log(err);
  141. return;
  142. }
  143.  
  144. if (status == 'pending') {
  145. // We need to confirm it
  146. console.log(`Offer #${offer.id} sent, but requires confirmation`);
  147. //OLD: community.acceptConfirmationForObject("identitySecret", offer.id, function(err) {
  148. community.startConfirmationChecker(30000, config.bot['identitysecret'], function(err) {
  149. if (err) {
  150. console.log(err);
  151. } else {
  152. console.log("Offer confirmed");
  153. }
  154. });
  155. } else {
  156. updateStock();
  157. console.log(`Offer #${offer.id} sent successfully`);
  158. }
  159. });
  160. }
  161. });
  162. });
  163. community.setCookies(cookies);
  164. community.startConfirmationChecker(30000, config.bot['identitysecret']);
  165. });
  166. client.on('friendRelationship', (steamid, relationship) => {
  167. if (relationship === 2 && config['acceptFriendRequests']) {
  168. client.addFriend(steamid);
  169. client.chatMessage(steamid, config['friendWelcomeMessage']);
  170. }
  171. });
  172.  
  173. client.on('friendOrChatMessage', (senderID, message) => {
  174. log('Received a message from: '+senderID+': '+message);
  175.  
  176. if(senderID == config['adminID']) {
  177. if (message.indexOf("/stop") == 0) {
  178. log('Admin stopped the bot!');
  179. client.logOff();
  180. process.exit();
  181. }
  182. else if (message.indexOf("/update")) {
  183. getPrices();
  184. client.chatMessage(senderID, 'Updated prices');
  185. }
  186. else if (message.indexOf("ping") == 0) {
  187. client.chatMessage(senderID, 'pong');
  188. } else {
  189. var response = '';
  190. for (var i = message.length - 1; i >= 0; i--) {
  191. response += message[i];
  192. };
  193. client.chatMessage(senderID, response);
  194. }
  195. } else {
  196. var response = '';
  197. for (var i = message.length - 1; i >= 0; i--) {
  198. response += message[i];
  199. };
  200. client.chatMessage(senderID, response);
  201. }
  202. });
  203.  
  204. ///
  205.  
  206. manager.on('newOffer', (offer) => {
  207. var userID = offer.partner.getSteamID64();
  208. var offerID = offer.id;
  209.  
  210. var prefix = offerID + ' || ';
  211.  
  212. log("New offer #" + offerID + " from " + userID);
  213.  
  214. offer.getUserDetails((err, me, them) => {
  215. if(err) {
  216. log(err);
  217. return;
  218. }
  219.  
  220. if(them.escrowDays > 0) {
  221. log(prefix +'User has escrow! Declining!');
  222. offer.decline((err) => {
  223. if(err) {
  224. log(prefix + 'Error declining offer!');
  225. return;
  226. }
  227. });
  228. } else {
  229. if(userID == config['adminID'] && config['acceptAdminOffers']) {
  230. offer.accept((err, status) => {
  231. if(err) {
  232. log(prefix + 'Error accepting offer!');
  233. return;
  234. } else {
  235. community.checkConfirmations();
  236. log('Admin used the bot');
  237. }
  238. });
  239. } else {
  240. if(offer.itemsToGive.length == 0) {
  241. log(userID + ' Just Donated us skins!');
  242.  
  243. log(prefix + 'Accepting offer!');
  244. offer.accept((err, status) => {
  245. if(err) {
  246. log(prefix + 'Error accepting offer!');
  247. return;
  248. } else {
  249. community.checkConfirmations();
  250. contactUser(userID, config.tradeResponse['donation']);
  251. }
  252. });
  253. } else {
  254. if((getValue(offer.itemsToGive) * config['sentPercentage']) > (getValue(offer.itemsToReceive) * config['receivePercentage'])) {
  255. log(prefix +'User ask for more then he/she gives! Declining!');
  256. offer.decline((err) => {
  257. if(err) {
  258. log(prefix + 'Error declining offer!');
  259. contactUser(userID, config.tradeResponse['tradeDeclined'])
  260. return;
  261. }
  262. });
  263. } else if((getValue(offer.itemsToGive) * config['sentPercentage']) < (getValue(offer.itemsToReceive) * config['receivePercentage'])) {
  264. log(prefix + 'Accepting offer!');
  265. offer.accept((err, status) => {
  266. if(err) {
  267. log(prefix + 'Error accepting offer!');
  268. return;
  269. } else {
  270. community.checkConfirmations();
  271. contactUser(userID, config.tradeResponse['tradeAccepted'])
  272. }
  273. });
  274. }
  275. }
  276. }
  277. }
  278. });
  279. });
  280.  
  281. manager.on('pollData', function(pollData) {
  282. fs.writeFile('polldata.json', JSON.stringify(pollData));
  283. });
  284.  
  285. ///
  286.  
  287. function contactUser(userID, message) {
  288. if(config.social['inviteUserToGroup']) {
  289. community.inviteUserToGroup(userID, configs.social['groupID']);
  290. log('Invited '+ userID +' to group ('+configs.social['groupID']+')');
  291. }
  292.  
  293. if(config.social['commentOnUserProfile']) {
  294. community.postUserComment(userID, message);
  295. //community.postUserComment(userID, 'Thanks!');
  296. log('Commented on '+ userID +' profile ('+message+')');
  297. }
  298. }
  299.  
  300. setInterval(function() {
  301. getPrices();
  302. }, config['updateInterval'] * 1000 * 60);
  303.  
  304. function getPrices() {
  305. request(config['priceURL'], (error, response, body) => {
  306. if (!error && response.statusCode === 200) {
  307. fs.writeFile('prices.json', body);
  308. log('Updated Price List');
  309. } else {
  310. log("Got an error: "+ error +", status code: "+ response.statusCode);
  311. }
  312. });
  313. }
  314.  
  315. function getValue(items) {
  316. var itemPrices = require('./prices.json');
  317. var value = 0.00;
  318.  
  319. if(items != 0 && items.length != 0) {
  320. for (var i = items.length - 1; i >= 0; i--) {
  321. value += itemPrices[items[i].market_hash_name];
  322. };
  323. } else {
  324. log('Error processing item value!');
  325. }
  326.  
  327. return value;
  328. }
  329.  
  330. ///
  331.  
  332. function log(text) {
  333. var date = getDate();
  334. var time = getTime();
  335.  
  336. var output = time + " || " + text;
  337.  
  338. console.log(output);
  339. if(config['writeLog']) {
  340. var path = "./logs";
  341. try {
  342. fs.statSync(path);
  343. } catch(e) {
  344. fs.mkdirSync(path);
  345. }
  346. require('fs').appendFile('logs/debug'+ date +'.log', output + '\r\n');
  347. }
  348. }
  349.  
  350. function getDate() {
  351. var date = new Date();
  352. var year = date.getFullYear();
  353. var month = date.getMonth() + 1;
  354. var day = date.getDate();
  355.  
  356. month = (month < 10 ? "0" : "") + month;
  357. day = (day < 10 ? "0" : "") + day;
  358.  
  359. return '['+ day + "-" + month + "-" + year + ']';
  360. }
  361.  
  362. function getTime() {
  363. var now = new Date();
  364. var hour = now.getHours();
  365. var minute = now.getMinutes();
  366. var second = now.getSeconds();
  367.  
  368. if(hour.toString().length == 1) {
  369. var hour = '0'+hour;
  370. }
  371. if(minute.toString().length == 1) {
  372. var minute = '0'+minute;
  373. }
  374. if(second.toString().length == 1) {
  375. var second = '0'+second;
  376. }
  377. var dateTime = hour+':'+minute+':'+second;
  378. return dateTime;
  379. }
  380. function updateStock() {
  381. manager.loadInventory(730, 2, true, function(err, inventory) {
  382. if (err) {
  383. console.log(err);
  384. return;
  385. }
  386. if (inventory.length == 0) {
  387. // Inventory empty
  388. console.log("CS:GO inventory is empty");
  389. return;
  390. }
  391.  
  392. console.log("Found " + inventory.length + " CS:GO items");
  393. });
  394. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement