简体   繁体   English

Node Js Steam Trade提供Bot项目

[英]Node Js Steam Trade Offers Bot Items

This bot accept all trades but it need to accept only trade offers which contains [type: 'Consumer Grade SMG',] item in itemsToReceive. 该机器人接受所有交易,但只需要接受在itemsToReceive中包含[type:'Consumer Grade SMG',] item的交易要约。 I was trying to do something like: If itemsToReceive contains Consumer Grade SMG then accpet offer else cancel offer but i failed. 我正在尝试执行以下操作:如果itemsToReceive包含“消费级SMG”,则应邀提供,否则取消要约,但我失败了。 Im newby and i dont have any idea how to do that. 我是纽比,我不知道该怎么做。 Sorry for my bad english. 对不起,我的英语不好。

My output console: 我的输出控制台:

New offer #644673626 from [U:1:205839253]
    [ { appid: 730,
        contextid: { low: 2, high: 0, unsigned: true },
        assetid: '3142560367',
        classid: '310777708',
        instanceid: '302028390',
        amount: 1,
        missing: true,
        id: '3142560367',
        icon_url: '-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHL
    bXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopuP1FBRw7ODYYzxb08-3moS0m_7zO6-fxzNQ65J03L2Vo
    9-sigzj_kU6Mmr6LIKVdwNvZVHTqVTqxri8jZS4tYOJlyVoTeLjug',
        icon_url_large: '-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4o
    FJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopuP1FBRw7ODYYzxb08-3moS0m_7zO6_ummpD78A
    _27HA9tvw3gDg_UBlMWH0IYDDIwU3aVzQ_1Tvxefs1pPou8uawXBnsz5iuyjoOPjz8g',
        icon_drag_url: '',
        name: 'P90 | Sand Spray',
        market_hash_name: 'P90 | Sand Spray (Minimal Wear)',
        market_name: 'P90 | Sand Spray (Minimal Wear)',
        name_color: 'D2D2D2',
        background_color: '',
        type: 'Consumer Grade SMG',
        tradable: true,
        marketable: true,
        commodity: false,
        market_tradable_restriction: 7,
        fraudwarnings: '',
        descriptions:
         { '0': [Object],
           '1': [Object],
           '2': [Object],
           '3': [Object],
           '4': [Object],
           '5': [Object] },
        owner_descriptions: '',
        actions: { '0': [Object] },
        market_actions: { '0': [Object] },
        tags:
         { '0': [Object],
           '1': [Object],
           '2': [Object],
           '3': [Object],
           '4': [Object],
           '5': [Object] } } ]
    Offer accepted
    Offer #644673626 changed: Active -Accepted
    Received: P90 | Sand Spray

And bot code: 和机器人代码:

 /** * STOREHOUSE - node-steam * * Uses node-steam-user for notifications and accepts all incoming trade offers */ var SteamUser = require('steam-user'); var TradeOfferManager = require('../lib/index.js'); // use require('steam-tradeoffer-manager') in production var fs = require('fs'); var client = new SteamUser(); var manager = new TradeOfferManager({ "steam": client, // Polling every 30 seconds is fine since we get notifications from Steam "domain": "example.com", // Our domain is example.com "language": "en" // We want English item descriptions }); // Steam logon options var logOnOptions = { "accountName": "xxxxx", "password": "xxxxx" }; if(fs.existsSync('polldata.json')) { manager.pollData = JSON.parse(fs.readFileSync('polldata.json')); } client.logOn(logOnOptions); client.on('loggedOn', function() { console.log("Logged into Steam"); }); client.on('webSession', function(sessionID, cookies) { manager.setCookies(cookies, function(err) { if(err) { console.log(err); process.exit(1); // Fatal error since we couldn't get our API key return; } console.log("Got API key: " + manager.apiKey); }); }); manager.on('newOffer', function(offer) { console.log("New offer #" + offer.id + " from " + offer.partner.getSteam3RenderedID()); console.log(offer.itemsToReceive); offer.accept(function(err) { if(err) { console.log("Unable to accept offer: " + err.message); } else { console.log("Offer accepted"); } }); }); manager.on('receivedOfferChanged', function(offer, oldState) { console.log("Offer #" + offer.id + " changed: " + TradeOfferManager.getStateName(oldState) + " -> " + TradeOfferManager.getStateName(offer.state)); if(offer.state == TradeOfferManager.ETradeOfferState.Accepted) { offer.getReceivedItems(function(err, items) { if(err) { console.log("Couldn't get received items: " + err); } else { var names = items.map(function(item) { return item.name; }); console.log("Received: " + names.join(', ')); } }); } }); manager.on('pollData', function(pollData) { fs.writeFile('polldata.json', JSON.stringify(pollData)); }); 

Have try. 试试看

manager.on('newOffer', function(offer) {
    console.log("New offer #" + offer.id + " from " + offer.partner.getSteam3RenderedID());
    console.log(offer.itemsToReceive);
    for(var i = 0; i > offer.itemsToReceive.length)
    {   
        if(offer.itemsToReceive[i]['type'] != "Consumer Grade SMG")
        {
            return;

            if(i == offer.itemsToReceive.length)
            {
                offer.accept(function(err){
                    if(err){
                        console.log("Unable to accept offer: " + err.message);
                    } 
                    else{
                        console.log("Offer accepted");
                    }
                });
            }
        }   
    }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM