steam-family-bot-core
Version:
一个用于新版 Steam 家庭的库存监控 Bot 插件
48 lines • 1.87 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.libInfoSyncer = void 0;
const lodash_1 = __importDefault(require("lodash"));
const libInfoSyncer = async (c) => {
const { steam, botService, config, logger } = c;
logger.info('trigger lib info syncer');
const libItem = await steam.db.FamilyLib.getUnSyncedLib();
const libsId = lodash_1.default.uniq(libItem.map((it) => it.appId));
const libInfos = lodash_1.default.chunk(libsId, 30).flatMap(async (chunk) => {
try {
const steamItems = await steam.api.Steam.getSteamItemsBaseInfo(chunk);
return steamItems.data ?? [];
}
catch (e) {
return [];
}
});
const awaitedLibInfos = (await Promise.all(libInfos)).flatMap((it) => it);
const libInfoDict = lodash_1.default.keyBy(awaitedLibInfos, 'appId');
const notSynced = libItem
.filter((it) => !libInfoDict[it.appId])
.map((it) => it.appId)
.join(',');
if (notSynced) {
logger.info(`not synced steam apps ${notSynced}`);
}
const res = libItem
.filter((it) => libInfoDict[it.appId])
.map((it) => {
const infos = libInfoDict[it.appId];
return {
appid: it.appId,
name: it.name,
aliases: infos.aliases,
top20Tags: infos.top20Tags.join(','),
lastRefreshedAt: Math.floor(Date.now() / 1000),
};
});
const data = lodash_1.default.uniqBy(res, 'appid');
await steam.db.FamilyLib.batchUpsertLibInfo(data);
logger.info(`lib sync finished, synced ${res.length} items`);
};
exports.libInfoSyncer = libInfoSyncer;
//# sourceMappingURL=libInfoSyncer.js.map