node.js - Steam NodeJS 仅接受具有 X 个 appID 项目的交易

标签 node.js steam steambot

我一直在为我的 CS:GO 赌博网站开发 NodeJS Steam 机器人,但我只有一个问题。我希望机器人只接受 CS:GO 元素/皮肤(CS:GO appID 为 730)。我知道这与 appID 有关。

我正在使用node-steam-tradeoffer-manager获取贸易报价。

我当前接受交易的代码:

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;
     }
    });
   }
  }
 });
});

最佳答案

由于您使用的是node-steam-tradeoffer-manager,因此您通常与CEconItem交互:

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

每个 CEconItem 包含 appid 属性:

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

所以让我们把它们放在一起:

  • offer.itemsToGive - 是一个CEconItem(您的)数组
  • offer.itemsToReceive - 相同(但属于他们的)

要检查所有元素是否都来自 CS:GO,您只需执行以下操作:

const allItemsAreFromCSGO = offer.itemsToReceive.every(item => item.appid === 730);

关于node.js - Steam NodeJS 仅接受具有 X 个 appID 项目的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41749692/

相关文章:

javascript - 类型错误 : Cannot read property 'node' of undefined

c# - 在 ASP.Net MVC3 中使用 OpenID,我从哪里获取用户数据?

openid - 如何将 OPENID 身份验证集成到 REST api 和前端框架架构中

steam - 如何获得 Steam 元素名称?

node.js - 如何对 node.js 服务器进行负载测试?

javascript - socket.io 连接到 unix 套接字

steam - 在 Steam 中获取用户游戏统计数据

steam - 获取 Steam 市场 (API) 结果(欧元)

c# - 如何在 Mac osx 上运行 nuget

javascript - 我可以使用 jwcrypto 来验证 Google 生成的 OAuth2 id_token 吗?