我一直在为我的 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/