Advertisement
Guest User

main

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