Closed liansishen closed 6 years ago
/** * 赠送礼物 * * @private * @param {string} uid * @memberof Online */ private async _SendGift(uid: string) { let userData = _options.user[uid], roomID = _options.config.giftRoomID, //获取房间信息(ruid) getRoomInfo = { uri: `${apiLiveOrigin}/room/v1/Room/room_init?id=${roomID}`, jar: cookieJar[uid], json: true, headers: { 'Referer': `https://live.bilibili.com/${roomID}` } }, roomInfoResponse = await tools.XHR(getRoomInfo) .catch((reject) => { tools.Error(userData.nickname, reject); }) if (roomInfoResponse != null && roomInfoResponse.body.code === 0) { let ruid = roomInfoResponse.body.data.uid, //获取礼物信息 getGiftInfo = { uri: `${apiLiveOrigin}/gift/v2/gift/bag_list`, jar: cookieJar[uid], json: true, headers: { 'Referer': `https://live.bilibili.com/${roomID}` } }, giftInfoResponse = await tools.XHR(getGiftInfo) .catch((reject) => { tools.Error(userData.nickname, reject); }) if (giftInfoResponse != null && giftInfoResponse.body.code === 0) { let nowTime = giftInfoResponse.body.data.time, giftInfos = giftInfoResponse.body.data.list for(let listId in giftInfos) { let giftInfo = giftInfos[listId] //判断礼物过期时间,赠送当日过期的礼物 if ((giftInfo.expire_at-nowTime) / 3600 <= 24) { let rnd = Math.floor(Date.now() / 1000 - 60 - 300 * Math.random()), bili_jct = userData.cookie.match(new RegExp("(^| )bili_jct=([^;]*)(;|$)"))[2], DedeUserID = userData.cookie.match(new RegExp("(^| )DedeUserID=([^;]*)(;|$)"))[2], sendData = `uid=${DedeUserID}&gift_id=${giftInfo.gift_id}&ruid=${ruid}&gift_num=${giftInfo.gift_num}&bag_id=${giftInfo.bag_id}&platform=pc&biz_code=live&biz_id=${roomID}&rnd==${rnd}&storm_beat_id=0&metadata=&token=&csrf_token=${bili_jct}`, sendGift = { method: 'POST', uri: `${apiLiveOrigin}/gift/v2/live/bag_send`, body: sendData, jar: cookieJar[uid], json: true, headers: { 'Content-Type': `application/x-form-urlencoded` } }, sendGiftResponse = await tools.XHR(sendGift) .catch((reject) => { tools.Error(userData.nickname, reject); }) if (sendGiftResponse != null && sendGiftResponse.body.code === 0) tools.Log(userData.nickname,`成功向 ${roomID} 赠送 ${giftInfo.gift_num} 个 ${giftInfo.gift_name}`) } } } } }