bilive / bilive_client

基于Node.JS的bilibili账号活跃系统
MIT License
457 stars 109 forks source link

我加了自动送礼物的功能,能给push权限吗 #30

Closed liansishen closed 6 years ago

liansishen commented 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}`)
                }
            }
        }
    }
  }