1

I have been developing a NodeJS Steam bot to my CS:GO gamble site, i have only problem. I want that the bot accepts only CS:GO items/skins (CS:GO appID is 730). I know it is something to do with the appID.

I am using node-steam-tradeoffer-manager for trade offers.

My current code that accepts the trades:

manager.on('newOffer', (offer) => {
 var userID = offer.partner.getSteamID64();
 var offerID = offer.id;

 var prefix = time + " || " + 'Trade: #' + offerID + ' || ';

 console.log(prefix + "from " + userID);

 offer.getUserDetails((err, me, them) => {
  if (err) {
   console.log(err);
   return;
  }

  if (them.escrowDays > 0) {
   console.log(prefix + 'User has escrow! Declining!');

   offer.decline((err) => {
    if (err) {
     console.log(prefix + 'Error declining offer!');
     return;
    }
   });
  } else {
   if (offer.itemsToGive.length == 0) {
    var userAmount = priceItemsInOffer(offer.itemsToReceive) * 1000;

        if(userAmount < config['minDeposit']){
            console.log(prefix + "User deposit skin that costs less than 100 Credits!");

      offer.decline((err) => {
       if (err) {
        console.log(prefix + 'Error declining offer!');
        return;
       }
      });

        }
        else{
    console.log(prefix + 'User deposited ' + userAmount);

    var insertDeposit0  = {
                  user: userID,
                  amount: userAmount,
                  offerID: offerID,
                  status: 0,
                  time: time
                };
    var query = connection.query('INSERT INTO deposits SET ?', insertDeposit0, function(err, result) {
      // Neat!
    });

    offer.accept((err, status) => {
     if (err) {
      console.log(prefix + 'Error accepting offer!' + err.message);

      connection.query('UPDATE deposits SET ? WHERE ?', [{ status: 1 }, { offerID: offerID }]) // 1 ERROR ACCEPTING

      return;
     } else {
      community.checkConfirmations();

      console.log(prefix + "Accepted!");

          connection.query('UPDATE deposits SET ? WHERE ?', [{ status: 2 }, { offerID: offerID }]) // 2 ACCEPTED
     }
    });
    }
   } else if (offer.itemsToGive.length > 0) {
    console.log(prefix + "User asked skins from us! Declining offer.");

    offer.decline((err) => {
     if (err) {
      log(prefix + 'Error declining offer!');
      return;
     }
    });
   }
  }
 });
});
Jaska Jokela
  • 29
  • 1
  • 1
  • 7

1 Answers1

1

Since you are using node-steam-tradeoffer-manager, you are in general interacting with CEconItem:

https://github.com/DoctorMcKay/node-steam-tradeoffer-manager/wiki/EconItem https://github.com/DoctorMcKay/node-steamcommunity/wiki/CEconItem

Each CEconItem contains appid property:

https://github.com/DoctorMcKay/node-steamcommunity/wiki/CEconItem#appid

So let's put this together:

  • offer.itemsToGive - is an array of CEconItem (yours)
  • offer.itemsToReceive - same (but theirs)

To check if all items are from CS:GO, you could simply do:

const allItemsAreFromCSGO = offer.itemsToReceive.every(item => item.appid === 730);
scholtzm
  • 46
  • 4