Advertisement
Guest User

Untitled

a guest
Dec 23rd, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.68 KB | None | 0 0
  1. module.exports = {
  2. bot: function(username, password, sharedSecret, identitySecret) {
  3. const SteamUser = require('steam-user');
  4. const TradeOfferManager = require('steam-tradeoffer-manager');
  5. const SteamTotp = require('steam-totp');
  6. const SteamCommunity = require('steamcommunity');
  7. const request = require('request');
  8. const config = require('./config.js');
  9. const community = new SteamCommunity({
  10. request: request.defaults({
  11. proxy: 'http://23.229.65.92 :3128'
  12. })
  13. });
  14. const client = new SteamUser({
  15. "promptSteamGuardCode": false
  16. });
  17. const manager = new TradeOfferManager({
  18. pollInterval: 1000,
  19. cancelTime: 300000,
  20. community: community,
  21. steam: client,
  22. domain: 'example.com',
  23. language: 'en'
  24. });
  25. const logOnOptions = {
  26. accountName: username,
  27. password: password,
  28. twoFactorCode: SteamTotp.generateAuthCode(sharedSecret)
  29. };
  30. client.logOn(logOnOptions);
  31. client.on('loggedOn', function(details) {
  32. console.log(`Logged into Steam as ${client.steamID.getSteam3RenderedID()}`); //online then play tf2
  33. client.setPersona(SteamUser.Steam.EPersonaState.Online);
  34. client.gamesPlayed([config.settings.gameMessage, 440]);
  35. });
  36. client.on('webSession', function(sessionID, cookies) {
  37. manager.setCookies(cookies, function(err) {
  38. if (err) return console.log(err);
  39. console.log(`Got API key: ${manager.apiKey}`);
  40. });
  41. community.setCookies(cookies);
  42. community.startConfirmationChecker(4000, identitySecret);
  43. });
  44.  
  45. function keyAmountGood(keyAmount) {
  46. if (Math.floor(1000 / config.rates.casesForKey) < keyAmount) {
  47. return false;
  48. }
  49. }
  50.  
  51. function loadInv(steamID) {
  52. return new Promise((resolve, reject) => {
  53. manager.getUserInventoryContents(steamID, 730, 2, true, (err, inv) => {
  54. if (err) {
  55. console.log(err.message);
  56. return reject(err.message)
  57. }
  58. resolve(inv);
  59. });
  60. });
  61. }
  62.  
  63. function makeStorageOffer(steamID, casesPerBot) {
  64. var offer = manager.createOffer(steamID);
  65. let casesToAdd = [];
  66. manager.getUserInventoryContents(steamID, 730, 2, true, (err, thereInv) => {
  67. if (err) {
  68. console.log(err)
  69. return
  70. }
  71. for (let i = 0; i < thereInv.length; i++) {
  72. if (config.settings.acceptedCrates.includes(thereInv[i].market_hash_name) && casesPerBot > casesToAdd.length) {
  73. casesToAdd.push(thereInv[i].assetid);
  74. }
  75. }
  76. for (let i = 0; i < casesToAdd.length; i++) { //add items if all is good.
  77. offer.addTheirItem({
  78. assetid: casesToAdd[i],
  79. appid: 730,
  80. contextid: 2,
  81. amount: 1
  82. });
  83. }
  84. offer.send(function(err, status) {
  85. if (err) {
  86. console.log(err);
  87. setTimeout(() => {
  88. makeStorageOffer(steamID, casesPerBot);
  89. messageAdmin("error getting cases from storage trying again in 2 mins")
  90. }, 6000 * 2);
  91. return;
  92. } else {
  93. console.log("sent offer to storage bot");
  94. community.checkConfirmations();
  95. casesToAdd = [];
  96. }
  97. });
  98. })
  99. }
  100.  
  101. function checkStock(steamID) {
  102. return new Promise((resolve, reject) => {
  103. let cases = 0;
  104. manager.getUserInventoryContents(steamID, 730, 2, true, (err, inv) => {
  105. if (err) {
  106. console.log(err.message);
  107. return reject(err.message)
  108. } else {
  109. for (var i = 0; i < inv.length; i++) {
  110. if (config.settings.acceptedCrates.includes(inv[i].market_hash_name)) {
  111. cases++
  112. }
  113. }
  114. }
  115. resolve(cases);
  116. });
  117. });
  118. }
  119. async function getCases() {
  120. let botInv = await loadInv(config.account.id64)
  121. //let required_cases = config.rates.casesForKey - botInv.length;
  122. let required_cases = config.rates.casesForKey;
  123. console.log(required_cases)
  124. for (var i = 0; i < config.storage_accounts.length; i++) {
  125. if (required_cases > 0) {
  126. let cases = await checkStock(config.storage_accounts[i].id64)
  127. if (cases > required_cases) {
  128. cases = required_cases
  129. makeStorageOffer(config.storage_accounts[i].id64, cases)
  130. messageAdmin('Sent storage bot ' + i + ' an offer for ' + cases + ' cases')
  131. required_cases = required_cases - cases
  132. } else {
  133. makeStorageOffer(config.storage_accounts[i].id64, cases)
  134. messageAdmin('Sent storage bot ' + i + ' an offer for ' + cases + ' cases')
  135. required_cases = required_cases - cases
  136. }
  137. }
  138. }
  139. return 1;
  140. }
  141. async function checkTotalStock() {
  142. let total = 0;
  143. for (var i = 0; i < config.storage_accounts.length; i++) {
  144. let cases = await checkStock(config.storage_accounts[i].id64).catch((err) => {
  145. console.log(err);
  146. return;
  147. });
  148. total += cases;
  149. }
  150. return total;
  151. }
  152.  
  153. function checkUser(offer) {
  154. if (config.settings.trade.acceptEscrow == false) {
  155. offer.getUserDetails(function(err, me, them) {
  156. if (them.escrowDays > 0) {
  157. return false;
  158. }
  159. });
  160. }
  161. }
  162.  
  163. function depositKeys() {
  164. var offer = manager.createOffer(config.key_account.id64);
  165. let keys = []
  166. manager.getUserInventoryContents(config.account.id64, 730, 2, true, (err, botInv) => {
  167. if (err) {
  168. console.log(err);
  169. return
  170. }
  171. for (var i = 0; i < botInv.length; i++) {
  172. if (config.settings.acceptedKeys.includes(botInv[i].market_hash_name)) {
  173. keys.push(botInv[i].assetid);
  174. }
  175. }
  176. for (let i = 0; i < keys.length; i++) {
  177. offer.addMyItem({
  178. assetid: keys[i],
  179. appid: 730,
  180. contextid: 2,
  181. amount: 1
  182. });
  183. }
  184. if (offer.itemsToGive.length < 1) {
  185. return
  186. }
  187. offer.send(function(err, status) {
  188. if (err) {
  189. console.log(err);
  190. messageAdmin("hi we had an offer sending a key deposit trade plz come get them");
  191. return;
  192. }
  193. community.checkConfirmations();
  194. keys = [];
  195. });
  196. });
  197. }
  198.  
  199. function makeOffer(steamID, neededCases, keyAmount) {
  200. client.gamesPlayed([config.settings.busyMessage, 440]);
  201. var offer = manager.createOffer(steamID);
  202. let ourCases = [];
  203. let thereKeys = [];
  204. if (checkUser(offer) == false) {
  205. client.chatMessage(steamID, "It appears that you are a SCAMMER or have an ESCROW so we can not trade with you");
  206. client.gamesPlayed([config.settings.gameMessage, 440]);
  207. return
  208. }
  209. client.chatMessage(steamID, "Preparing your offer now :D");
  210. manager.getUserInventoryContents(steamID, 730, 2, true, (err, thereInv) => {
  211. if (err) {
  212. console.log(err);
  213. client.chatMessage(steamID, "Error loading inventory.Please try again later");
  214. client.gamesPlayed([config.settings.gameMessage, 440]);
  215. return
  216. }
  217. manager.getUserInventoryContents(config.account.id64, 730, 2, true, (err, botInv) => {
  218. if (err) {
  219. console.log(err);
  220. client.chatMessage(steamID, "Error loading inventory.Please try again later");
  221. client.gamesPlayed([config.settings.gameMessage, 440]);
  222. return;
  223. }
  224. for (let i = 0; i < botInv.length; i++) {
  225. if (config.settings.acceptedCrates.includes(botInv[i].market_hash_name) && neededCases > ourCases.length) {
  226. ourCases.push(botInv[i].assetid);
  227. }
  228. }
  229. for (var i = 0; i < thereInv.length; i++) {
  230. if (config.settings.acceptedKeys.includes(thereInv[i].market_hash_name) && keyAmount > thereKeys.length) {
  231. thereKeys.push(thereInv[i].assetid);
  232. }
  233. }
  234. if (ourCases.length < neededCases) {
  235. client.chatMessage(steamID, "Something is not right here. Please try again in a few minutes");
  236. client.gamesPlayed([config.settings.gameMessage, 440]);
  237. return
  238. }
  239. if (thereKeys.length < keyAmount) {
  240. client.chatMessage(steamID, "Sorry! You do not have enough keys, you have " + thereKeys.length);
  241. client.gamesPlayed([config.settings.gameMessage, 440]);
  242. return;
  243. }
  244. for (let i = 0; i < thereKeys.length; i++) { //add items if all is good.
  245. offer.addTheirItem({
  246. assetid: thereKeys[i],
  247. appid: 730,
  248. contextid: 2,
  249. amount: 1
  250. });
  251. }
  252. for (let i = 0; i < ourCases.length; i++) { //add items if all is good.
  253. offer.addMyItem({
  254. assetid: ourCases[i],
  255. appid: 730,
  256. contextid: 2,
  257. amount: 1
  258. });
  259. }
  260. offer.send(function(err, status) {
  261. if (err) {
  262. console.log(err);
  263. client.chatMessage(steamID, "Hi we had an issue sending your offer. Please try again in a bit");
  264. client.gamesPlayed([config.settings.gameMessage, 440]);
  265. return;
  266. } else {
  267. client.chatMessage(steamID, "Sent an offer for your " + keyAmount + " keys and my " + neededCases + " cases. You can accept here : https://steamcommunity.com/tradeoffer/" + offer.id + "/");
  268. client.chatMessage(steamID, "Please accept within 5 minutes, otherwise Offer will Auto Decline");
  269. console.log("sent offer");
  270. community.checkConfirmations();
  271. ourCases = [];
  272. thereKeys = [];
  273. }
  274. });
  275. });
  276. });
  277. }
  278.  
  279. function messageAdmin(message) {
  280. for (var i = 0; i < config.settings.admin.length; i++) {
  281. client.chatMessage(config.settings.admin[i], message);
  282. }
  283. }
  284.  
  285. function reStock(offer) {
  286. if (config.key_account.id64 == offer.partner.getSteamID64()) {
  287. return
  288. }
  289. for (var i = 0; i < config.storage_accounts.length; i++) {
  290. if (config.storage_accounts[i].id64 == offer.partner.getSteamID64()) {
  291. return;
  292. }
  293. }
  294. community.getSteamUser(offer.partner, (err, user) => {
  295. user.comment(config.settings.acceptedTradeComment, (err) => {
  296. client.chatMessage(offer.partner, config.settings.acceptTradeChatMessage)
  297. client.gamesPlayed([config.settings.restockMessage, 440]);
  298. getCases()
  299. //depositKeys();
  300. //console.log('sent key offer trade')
  301. /*setTimeout(() => {
  302. getCases().then(a => {});
  303. console.log('getting cases from bots')
  304. }, 60000);*/
  305. });
  306. });
  307. }
  308. manager.on("sentOfferChanged", function(offer, oldState) {
  309. if (offer.state == TradeOfferManager.ETradeOfferState.Declined || offer.state == TradeOfferManager.ETradeOfferState.Canceled) {
  310. client.gamesPlayed([config.settings.gameMessage, 440]);
  311. }
  312. if (offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
  313. client.gamesPlayed([config.settings.gameMessage, 440]);
  314. reStock(offer);
  315. }
  316. console.log("Offer #" + offer.id + " changed: " + TradeOfferManager.ETradeOfferState[oldState] + " (" + oldState + ") -> " + TradeOfferManager.ETradeOfferState[offer.state] + " (" + offer.state + ")");
  317. community.getSteamUser(offer.partner, (err, user) => {
  318. if (config.settings.notify.acceptedOffers === true && offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
  319. messageAdmin('An offer has been accepted by ' + user.name);
  320. } else if (config.settings.notify.declinedOffers === true && offer.state == TradeOfferManager.ETradeOfferState.Declined) {
  321. messageAdmin('An offer has been declined by ' + user.name);
  322. }
  323. });
  324. });
  325. client.on('friendRelationship', (steamID, relationship) => {
  326. if (relationship === 2) {
  327. client.addFriend(steamID);
  328. client.chatMessage(steamID, config.settings.welcomeMessage);
  329. client.inviteToGroup(steamID, config.settings.groupID);
  330. }
  331. });
  332. client.on('friendMessage', (steamID, message) => { //freind messgaes
  333. if (message.startsWith("!buy")) {
  334. let keyAmount = parseInt(message.split("!buy")[1]);
  335. let neededCases = keyAmount * config.rates.casesForKey;
  336. if (keyAmountGood(keyAmount) == false) {
  337. client.chatMessage(steamID, "Sorry you are trying to trade to many keys at once. We can only trade " + Math.floor(1000 / config.rates.casesForKey) + " keys at a time!");
  338. } else {
  339. checkStock(config.account.id64).then(mainBotStock => {
  340. if (mainBotStock >= neededCases) {
  341. makeOffer(steamID, neededCases, keyAmount);
  342. } else {
  343. client.chatMessage(steamID, "getting cases from stock please try again in 10 mins once we have had a chance to reStock")
  344. getCases();
  345. }
  346. }).catch((err) => {
  347. client.chatMessage(steamID, "Sorry! Steam is acting up. Try again in a bit");
  348. });
  349. }
  350. } else {
  351. if (message == "!help") {
  352. client.chatMessage(steamID, config.settings.helpMessage);
  353. } else {
  354. if (message == "!price") {
  355. client.chatMessage(steamID, config.settings.priceMessage);
  356. } else {
  357. if (message == "!stock") {
  358. if (message == "!stock") {
  359. client.chatMessage(steamID, "Calculating available stock ... ");
  360. checkStock(config.account.id64).then(mainBotStock => {
  361. checkTotalStock().then(totalStock => {
  362. let all = mainBotStock + totalStock
  363. client.chatMessage(steamID, "We currently have a total of " + all + " cases we can trade");
  364. }).catch((err) => {
  365. client.chatMessage(steamID, "sorry steam is acting up try again in a bit");
  366. });
  367. }).catch((err) => {
  368. client.chatMessage(steamID, "Sorry! Steam is acting up. Try again in a bit");
  369. });
  370. } else {
  371. if (config.settings.admin.includes(steamID.getSteamID64()) && message == "!deposit") {
  372. getCases()
  373. } else {
  374. client.chatMessage(steamID, "Sorry! That command looks incorect. Type !help to see all the commands.")
  375. }
  376. }
  377. }
  378. }
  379. }
  380. });
  381. manager.on('newOffer', (offer) => {
  382. if (config.settings.admin.includes(offer.partner.getSteamID64())) {
  383. offer.accept(function(err, status) {
  384. if (err) console.log(`Unable to accept offer: ${err.message}`);
  385. community.checkConfirmations();
  386. });
  387. } else {
  388. offer.decline((err) => {
  389. if (err) return console.log(`Unable to decline offer: ${err.message}`);
  390. });
  391. }
  392. });
  393. }
  394. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement