[fix] Sleep && GiftSend

This commit is contained in:
Lkeme 2019-12-27 15:16:21 +08:00
parent e389eb3210
commit 2589c77905
3 changed files with 37 additions and 16 deletions

View File

@ -28,6 +28,7 @@
- 修复部分已知BUG - 修复部分已知BUG
- 修复获奖推送通知 - 修复获奖推送通知
- 修复休眠中心异常 - 修复休眠中心异常
- 修复礼物赠送异常
- -
## v0.0.5.191223 alpha (2019-12-23) ## v0.0.5.191223 alpha (2019-12-23)

View File

@ -10,8 +10,8 @@
namespace BiliHelper\Plugin; namespace BiliHelper\Plugin;
use BiliHelper\Core\Log;
use BiliHelper\Core\Curl; use BiliHelper\Core\Curl;
use BiliHelper\Core\Log;
use BiliHelper\Util\TimeLock; use BiliHelper\Util\TimeLock;
class GiftSend class GiftSend
@ -55,13 +55,13 @@ class GiftSend
self::getMedalList(); self::getMedalList();
foreach (self::$medal_list as $key => $val) { foreach (self::$medal_list as $key => $val) {
$bag_list = self::fetchBagList(); $bag_list = self::fetchBagList();
array_multisort(array_column($bag_list, "expire_at"), SORT_ASC, $bag_list);
if (getenv('FEED_FILL') == 'false') { if (getenv('FEED_FILL') == 'false') {
$bag_list = self::checkExpireGift($bag_list); $bag_list = self::checkExpireGift($bag_list);
} }
if (count($bag_list)) { if (count($bag_list)) {
self::$tid = $key; self::$tid = $key;
self::getRoomInfo(); self::getRoomInfo();
array_multisort(array_column($bag_list, "expire_at"), SORT_ASC, $bag_list);
} else { } else {
break; break;
} }
@ -119,26 +119,28 @@ class GiftSend
*/ */
protected static function fetchBagList(): array protected static function fetchBagList(): array
{ {
$bag_list = []; $new_bag_list = [];
$payload = []; $payload = [];
$data = Curl::get('https://api.live.bilibili.com/gift/v2/gift/bag_list', Sign::api($payload)); $data = Curl::get('https://api.live.bilibili.com/gift/v2/gift/bag_list', Sign::api($payload));
$data = json_decode($data, true); $data = json_decode($data, true);
if (isset($data['code']) && $data['code']) { if (isset($data['code']) && $data['code']) {
Log::warning('背包查看失败!', ['msg' => $data['message']]); Log::warning('背包查看失败!', ['msg' => $data['message']]);
return $bag_list; return $new_bag_list;
} }
if (isset($data['data']['list'])) { if (isset($data['data']['list'])) {
$bag_list = $data['data']['list']; $bag_list = $data['data']['list'];
array_multisort(array_column($bag_list, "gift_id"), SORT_DESC, $bag_list); if (count($bag_list)) {
array_multisort(array_column($bag_list, "gift_id"), SORT_DESC, $bag_list);
}
foreach ($bag_list as $vo) { foreach ($bag_list as $vo) {
// 去除永久礼物 // 去除永久礼物
if ($vo['corner_mark'] == '永久') { if ($vo['corner_mark'] == '永久') {
continue; continue;
} }
array_push($bag_list, $vo); array_push($new_bag_list, $vo);
} }
} }
return $bag_list; return $new_bag_list;
} }

View File

@ -18,7 +18,9 @@ use BiliHelper\Util\TimeLock;
class Sleep class Sleep
{ {
use TimeLock; use TimeLock;
// TODO 黑白名单 考虑添加到每个插件内部自动添加 // TODO 黑白名单|考虑添加到每个插件内部自动添加|优化RUN逻辑代码
private static $unlock_hour = 24;
private static $unlock_time = 0;
private static $fillable = ['Login', 'Sleep', 'Daily', 'MasterSite', 'GiftSend', 'Task', 'Silver2Coin', 'GroupSignIn', 'GiftHeart', 'AwardRecord', 'Statistics']; private static $fillable = ['Login', 'Sleep', 'Daily', 'MasterSite', 'GiftSend', 'Task', 'Silver2Coin', 'GroupSignIn', 'GiftHeart', 'AwardRecord', 'Statistics'];
private static $guarded = ['Barrage', 'Heart', 'Silver', 'MaterialObject', 'AloneTcpClient', 'ZoneTcpClient', 'StormRaffle', 'GuardRaffle', 'PkRaffle', 'GiftRaffle', 'AnchorRaffle']; private static $guarded = ['Barrage', 'Heart', 'Silver', 'MaterialObject', 'AloneTcpClient', 'ZoneTcpClient', 'StormRaffle', 'GuardRaffle', 'PkRaffle', 'GiftRaffle', 'AnchorRaffle'];
private static $sleep_section = []; private static $sleep_section = [];
@ -26,12 +28,29 @@ class Sleep
public static function run() public static function run()
{ {
if (getenv('USE_SLEEP') == 'false' || self::getLock() > time()) { if (self::getLock() > time()) {
return; return;
}; } else {
if (!self::isPause() && !self::isRefuse()) { self::setLock(1 * 60);
self::setLock(5 * 60);
} }
// 封禁逻辑
if (self::$unlock_time < time()) {
if (!self::isRefuse()) {
self::setLock(5 * 60);
} else {
self::setLock(1 * 60);
return;
}
}
// 休眠逻辑
if (getenv('USE_SLEEP') != 'false' && self::$unlock_time < time() && self::$unlock_hour != date('H')) {
if (!self::isPause()) {
self::setLock(5 * 60);
} else {
self::setLock(1 * 60);
return;
}
};
} }
/** /**
@ -76,15 +95,14 @@ class Sleep
*/ */
private static function stopProc(int $unlock_time) private static function stopProc(int $unlock_time)
{ {
$unlock_time = $unlock_time + 1 * 60; self::$unlock_time = time() + $unlock_time;
// 检测时间提前5分钟 self::$unlock_hour = date('H');
self::setLock($unlock_time - 5 * 60);
foreach (self::$fillable as $classname) { foreach (self::$fillable as $classname) {
Log::info("插件 {$classname} 白名单,保持当前状态继续"); Log::info("插件 {$classname} 白名单,保持当前状态继续");
} }
foreach (self::$guarded as $classname) { foreach (self::$guarded as $classname) {
Log::info("插件 {$classname} 黑名单,锁定状态将于" . date("Y-m-d H:i", time() + $unlock_time) . "解除"); Log::info("插件 {$classname} 黑名单,锁定状态将于" . date("Y-m-d H:i", time() + $unlock_time) . "解除");
call_user_func(array(__NAMESPACE__ . '\\' . $classname, 'setLock'), $unlock_time); call_user_func(array(__NAMESPACE__ . '\\' . $classname, 'setLock'), $unlock_time + 3 * 60);
} }
} }
} }