【问题标题】:Node Js Steam Trade Offers Bot ItemsNode Js Steam Trade 提供机器人物品
【发布时间】:2015-08-16 19:41:39
【问题描述】:

此机器人接受所有交易,但它只需要接受在 itemsToReceive 中包含 [type: 'Consumer Grade SMG',] 项目的交易报价。我试图做类似的事情:如果 itemsToReceive 包含消费者级 SMG,则接受报价,否则取消报价,但我失败了。我是新手,我不知道该怎么做。 对不起我的英语不好。

我的输出控制台:

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

还有机器人代码:

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

【问题讨论】:

    标签: javascript node.js steam steam-web-api steambot


    【解决方案1】:

    试试看。

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

    【讨论】:

    • for(var i = 0; i > offer.itemsToReceive.length) ^ SyntaxError: Unexpected token)
    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 2018-12-30
    • 2021-09-12
    相关资源
    最近更新 更多