steam-family-bot-core
Version:
一个用于新版 Steam 家庭的库存监控 Bot 插件
70 lines • 3.27 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.prepareLibData = exports.prepareFamilyInfo = exports.diffLibs = exports.diffWishes = void 0;
const lodash_1 = __importDefault(require("lodash"));
const diffWishes = (prevWishes, wishes) => {
// filter libs not in prevLibs
const newWishes = wishes.filter((item) => !prevWishes.some((preItem) => preItem.appId.toString() == item.appId));
// filter libs in prevLib but ownerId not match
const modifiedWishes = wishes.filter((item) => prevWishes.some((preItem) => preItem.appId.toString() == item.appId &&
preItem.steamIds != item.wishers.sort().join(',')));
const wishesDict = lodash_1.default.keyBy(prevWishes, 'appId');
const deletedWishes = prevWishes.filter((item) => !wishes.some((newItem) => newItem.appId == item.appId.toString()));
return {
newWishes,
deletedWishes,
modifiedWishes,
wishesDict,
};
};
exports.diffWishes = diffWishes;
const diffLibs = (prevLibs, libs) => {
// filter libs not in prevLibs
const newLibs = libs.filter((item) => !prevLibs.some((preItem) => preItem.appId == item.appid));
// filter libs in prevLib but ownerId not match
const modifiedLibs = libs.filter((item) => prevLibs.some((preItem) => preItem.appId == item.appid &&
preItem.steamIds != item.ownerSteamids.sort().join(',')));
const libDict = lodash_1.default.keyBy(prevLibs, 'appId');
// filter libs in prevLib but not ownerId diff
const deletedLibs = prevLibs.filter((item) => !libs.some((newItem) => newItem.appid == item.appId));
return {
newLibs,
modifiedLibs,
libDict,
deletedLibs,
};
};
exports.diffLibs = diffLibs;
const prepareFamilyInfo = async (api, steam, withWishes) => {
const family = await api.Steam.getSteamFamilyGroup();
const memberIds = family.data.familyGroup.members.map((member) => member.steamid?.toString());
const [wishes, members] = await Promise.all([
withWishes
? (await api.Steam.getSteamWishesByPlayerIds(memberIds)).data
: [],
(await api.Steam.getFamilyMembers(memberIds)).data,
]);
const m = members.accounts.map((acc) => acc.publicData);
const memberDict = lodash_1.default.keyBy(m, 'steamid');
const prevWishes = withWishes
? await steam.db.FamilyLib.getFamilyWishes(family.data.familyGroupid.toString())
: [];
return {
family,
memberDict,
wishes,
prevWishes,
};
};
exports.prepareFamilyInfo = prepareFamilyInfo;
const prepareLibData = async (api, steam, familyId) => {
const prevLibs = steam.db.FamilyLib.getSteamFamilyLibByFamilyId(familyId, 'lib');
const libs = api.Steam.getSteamFamilyGroupLibs(BigInt(familyId)).then((res) => res?.data.apps.filter((app) => app.excludeReason == undefined || app.excludeReason == 0));
const [awaitedPrevLibs, awaitedLibs] = await Promise.all([prevLibs, libs]);
return { prevLibs: awaitedPrevLibs, libs: awaitedLibs };
};
exports.prepareLibData = prepareLibData;
//# sourceMappingURL=utils.js.map