Jump to content
McKay Development

PonyExpress

Member
  • Content Count

    42
  • Joined

  • Last visited

Profile Information

  • Gender
    Not Telling
  1. Thanks. I stopped on this option: function GoTrade(SENDER, MSG, OPTIONS) { // SID, MSG, { OFFER, trade or tradelink } let trade; if (OPTIONS.offerdata) { // trade = OPTIONS.offerdata.counter(); // old trade = OPTIONS.offerdata; // NEW } else if (OPTIONS.tradelink) { //TODO: } else { trade = manager.createOffer(SENDER); } trade.getUserDetails((ERR, BotDetails, USERDETAILS) => { if (ERR) { // ... } else { if (OPTIONS.offerdata) { // NEW trade = OPTIONS.offerdata.counter(); } //...
  2. I still have a problem using getUserDetails Should I use getUserDetails before OFFER.counter ? Or maybe i can use for (let trade), which i create? Could you check and tell me the best option that I should use? Thanks! manager.on("newOffer", (OFFER) => { OFFER.itemsToGive = []; // removeTheirItems(OFFER.itemsToReceive); OFFER.itemsToReceive = []; // removeMyItems(OFFER.itemsToGive); //NOTE: Should I do this? // OFFER.getUserDetails((ERR, BotDetails, USERDETAILS) => { // if (ERR) return; // }); //NOTE: Or: // OFFER.getUserDetails((ERR, BotDetails, USERDETAILS) => { // if (!ERR && USERDETAILS.escrowDays <= 3) { // let trade = OFFER.counter(); // GoTrade(OFFER.partner, "trade", {tradedata: trade}); // } // }); GoTrade(OFFER.partner, null, {offerdata: OFFER}); }); client.on("friendMessage", (SENDER, MSG) => { if (MSG == "trade") { GoTrade(SENDER, MSG, {}); } if (MSG.indexOf("https://steamcommunity.com/tradeoffer/new/?partner=") >= 0) { GoTrade(null, null, {tradelink: MSG}); } }); function GoTrade(SENDER, MSG, OPTIONS) { // SID, MSG, { OFFER, trade or tradelink } let trade; if (OPTIONS.offerdata) { trade = OPTIONS.offerdata.counter(); } else if (OPTIONS.tradelink) { //TODO: } else if (OPTIONS.tradedata) { trade = JSON.stringify(tradedata); } else { trade = manager.createOffer(SENDER); } trade.getUserDetails((ERR, BotDetails, USERDETAILS) => { if (ERR) { //NOTE: Should I do this? // if (ERR && !OPTIONS.offerdata) { if (ERR.toString().indexOf("user_inventory_hidden") >= 0) { //... } else if (ERR.toString().indexOf("user_cant_trade") >= 0) { //... } else if (ERR.toString().indexOf("USER_NOT_FRIEND") >= 0) { //... } else { //... } } else if (USERDETAILS.escrowDays > 3) { //... } else { // manager.getUserInventoryContents( ... ) => { // trade.addMyItems( ... ); // trade.addTheirItems( ... ); // trade.setMessage( ... ); // trade.send((ERR) => { } }); }; Also, I don’t understand how it works counter(). How does Steam know if I can send counter or not? Can i send more than one counteroffer usung duplicate()?
  3. Yes. I'm trying to simulate the friendMessage event. I want to use it like this: client.on("friendMessage", (SENDER, MSG, FROM_NEW_OFFER, OFFER) => { // or: client.on("friendMessage", (SENDER, [MSG, FROM_NEW_OFFER, OFFER]) => { if (MSG == "help") { // to do something if (FROM_NEW_OFFER) { OFFER.to_do_something(); } } }); manager.on("newOffer", (OFFER) => { client.emit('friendMessage', OFFER.partner, "help", "FROM_NEW_OFFER", OFFER); }); I know I can do it, but I don’t want to: client.on("friendMessage", (SENDER, MSG) => { if (MSG == "help") { Help(SENDER, MSG); } }); manager.on("newOffer", (OFFER) => { Help(OFFER.partner, "help", "FROM_NEW_OFFER", OFFER); }); function Help(SENDER, MSG, FROM_NEW_OFFER, OFFER) { if (MSG == "help") { // to do something if (FROM_NEW_OFFER) { OFFER.to_do_something(); } } }
  4. Thank you, it looks like what I need. But I can’t figure out how to do it. client.emit('friendMessage', new SteamID('76561197983852931'), "help");
  5. I would like to manually create an event. How should I do this? For example, I want to create an event in which the program will work just like that if it receives a message. I think I should have 2 options: handling multiple event events or creating an event. I think both options should work something like this: var message = {}; client.on("friendMessage", (SENDER, MSG) => { // If an event or variable is not empty: // (client.on("friendMessage", (SENDER, MSG)) || (message != {}) => { if (message) { SENDER = message.msg; MSG = message.sid; message = {}; } client.chatMessage(SENDER, "OK"); }); message = {sid: { universe: 1, type: 1, instance: 1, accountid: 12345678 }, msg: "test"}; // Something like event creation: // client.on("friendMessage", SENDER: { universe: 1, type: 1, instance: 1, accountid: 23587203 }, MSG: "test");
  6. Get your trade offer url: community.getTradeURL((ERR, URL) => { if (ERR) { console.log(ERR); } else { console.log(URL); } }); Get another user's trade offer url - I don’t think it is possible. But you can send a counter offer: The user sends you any trading offer You make a counter offer: manager.on("newOffer", (OFFER) => { let trade = OFFER.counter(); Usage example: << Just send me a trade offer by using this link: https://steamcommunity.com/tradeoffer/new/?for_tradingcard=470480_10&partner=192485611&token=Fj1qrxzG . In a few seconds, you will have a new trade offer from me. >> You will not be able to inform the user about the error if he is not in the list of your friends. For this test to work you must have 10-20 cards, public profile, public inventory etc. Otherwise, you will not receive any response.
  7. PonyExpress

    TF2 Error 15

    The bot sends 1 item to the user. I always thought error 15 means VAC-ban. However, this may also mean that the user is full of inventory (50/50 if user Free-to-play player). Is there a way to determine the reason why the bot cannot send a trade offer? trade.send((ERR) => { if (ERR && ERR.toString().indexOf("(15)") >= 0) { // VAC or Inv. full
  8. Is there any way to find any hidden chat features?Everyone knows about /code, /pre, etc.But in some cases we can see a special design like "Link removed", "Error sending message". Is it possible that this can be used like for example [error=Error]Any text[/error] Have an idea how to send a link without converting to a block? When the link is at the beginning or end of the message.Will be converted: "https://steamcommunity.com","Text https://steamcommunity.com" or "https://steamcommunity.com Text" Will not be: "Text https://steamcommunity.com Text" If you open a chat with a bot that uses the old script, you will see that the voice call button is not available (with description: User is not in beta testing chat).Is there any way to do this (disable this button) in the latest version node-steam-user without losing any functionality?
  9. I have a function that runs on average about 2 minutes. console.log(currentTime() + " START"); community.getSteamUser... if (DATA.onlineState == "online"... let trade = manager.createOffer... manager.getUserInventoryContents... for (let i in BotSets.BaseSets) {.... } for (let i in BotSets.FoilSets) {.... } // ---------------------------- INV = INV.filter((ITEM) => ITEM.getTag("item_class").internal_name == "item_class_2"); console.log(currentTime() + " TEST, STEP 05-A"); INV = INV.filter((ITEM) => ITEM.market_hash_name.indexOf("470480-Messenger") == -1); for (let i = 0; i < INV.length; i++) { if (i == 5000) console.log(currentTime() + " TEST, ITEMS CHECKED: 5,000"); if (i == 40000) console.log(currentTime() + " TEST, ITEMS CHECKED: 40,000"); if (i == 50000) console.log(currentTime() + " TEST, ITEMS CHECKED: 50,000"); if (i == 60000) console.log(currentTime() + " TEST, ITEMS CHECKED: 60,000"); if (i == 70000) console.log(currentTime() + " TEST, ITEMS CHECKED: 70,000"); if (i == 80000) console.log(currentTime() + " TEST, ITEMS CHECKED: 80,000"); if (i == 90000) console.log(currentTime() + " TEST, ITEMS CHECKED: 90,000"); if (i == 100000) console.log(currentTime() + " TEST, ITEMS CHECKED: 100,000"); if (i == 110000) console.log(currentTime() + " TEST, ITEMS CHECKED: 110,000"); if (amount < CONFIG.LIMITS.MAXTRANSFERCARDS && !idList.includes(INV[i].assetid)) { trade.addMyItem(INV[i]); amount++; } else if (amount == CONFIG.LIMITS.MAXTRANSFERCARDS && !idList.includes(INV[i].assetid)) { reachedLimit = true; break; } } console.log(currentTime() + " TEST, STEP 05-B"); // ---------------------------- trade.send((ERR) => { .... In the end, I get: 23:24 START 23:25 TEST, STEP 05-A 23:25 TEST, ITEMS CHECKED: 5,000 23:25 TEST, ITEMS CHECKED: 40,000 23:26 TEST, ITEMS CHECKED: 50,000 23:26 TEST, ITEMS CHECKED: 60,000 23:26 TEST, ITEMS CHECKED: 70,000 // >> here I see that the bot goes offline 23:26 TEST, ITEMS CHECKED: 80,000 23:26 TEST, ITEMS CHECKED: 90,000 23:27 TEST, STEP 05-B 23:27 Error: HTTP error 401 23:27 client.steamID: null 23:27 (WAIT FOR RECONECT) 23:27 An error occurred while sending trade offer: Error: Not Logged In 23:27 (Login...) Sometimes this function works, about 50/50%, but lately very often the bot goes offline before the trade offer is sent. Are there any tips, how can I prevent the bot from shutting down while this function is running?
  10. I turned off language in tradeoffermanager settings due to memory problems. I think the best option for me will be getting assetid/classid when I receive my inventory, for example when I receive my card sets.
  11. How can I find out what item the user wants to receive? 1. I want to continue if item name = "Abc name Trading Card" 2. If not, decline assetid/classid change very often and the code stops working. manager.on("newOffer", (OFFER) => { console.log(OFFER); if (OFFER.itemsToGive.length == 1 && (OFFER.itemsToGive[0].id == "10964018350" || OFFER.itemsToGive[0].id == "11724177271" )) { // accept TradeOffer { partner: SteamID { universe: 1, type: 1, instance: 1, accountid: 23587203 }, id: '3695907410', message: '', state: 2, itemsToGive: [ EconItem { appid: 753, contextid: '6', assetid: '11497188550', classid: '2238354881', instanceid: '0', amount: 1, missing: false, est_usd: '7', id: '11497188550', fraudwarnings: [], descriptions: [], owner_descriptions: [], actions: [], owner_actions: [], market_actions: [], tags: [], tradable: false, marketable: false, commodity: false, market_tradable_restriction: 0, market_marketable_restriction: 0 } ], itemsToReceive: [], isOurOffer: false, created: 2019-09-04T11:04:43.000Z, updated: 2019-09-04T11:04:43.000Z, expires: 2019-09-18T11:04:43.000Z, tradeID: null, fromRealTimeTrade: false, confirmationMethod: 0, escrowEnds: null, rawJson: '{\n\t"tradeofferid": "3695907410",\n\t"accountid_other": 23587203,\n\t"message": "",\n\t"expiration_time": 1568804683,\n\t"trade_offer_state": 2,\n\t"items_to_give": [\n\t\t{\n\t\t\t"appid": 753,\n\t\t\t"contextid": "6",\n\t\t\t"assetid": "11497188550",\n\t\t\t"classid": "2238354881",\n\t\t\t"instanceid": "0",\n\t\t\t"amount": "1",\n\t\t\t"missing": false,\n\t\t\t"est_usd": "7"\n\t\t}\n\t],\n\t"is_our_offer": false,\n\t"time_created": 1567595083,\n\t"time_updated": 1567595083,\n\t"from_real_time_trade": false,\n\t"escrow_end_date": 0,\n\t"confirmation_method": 0\n}' } However, I see no way to get the name (without loading all inventory). Is there any way to get the name of the items like getReceivedItems, but for itemsToGive? (And I also wanted to know why tradable = false)
  12. Solved. community.httpRequestGet("https://steamcommunity.com/my/inventory/", (ERR) => { if (ERR) { console.log("ERR"); } else { console.log("OK"); } }); To just reset the count to 0, if I have a large steam inventory, is there any difference to use "https://steamcommunity.com/my/inventory/"or "https://steamcommunity.com/my/inventory/#440"?
  13. Up. I still have not found a solution and am waiting for help.
  14. I do not understand how to reset the value. I want it to be reset after how the value was shown in the console. client.on("newItems", function(count) { if (parseInt(count) > 0) { console.log("New items: " + count); // RESET } });
  15. It depends on which bot you use. Most likely you need to find: .filter((ITEM) => ITEM.getTag("cardborder").internal_name == "cardborder_0"); "cardborder_0" (base cards) and try "cardborder_1" (foil). But you also need to check out many other parts of the code, including getting user profile badges.
×
×
  • Create New...