[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
- 修复获奖推送通知
- 修复休眠中心异常
- 修复礼物赠送异常
-
## v0.0.5.191223 alpha (2019-12-23)

View File

@ -10,8 +10,8 @@
namespace BiliHelper\Plugin;
use BiliHelper\Core\Log;
use BiliHelper\Core\Curl;
use BiliHelper\Core\Log;
use BiliHelper\Util\TimeLock;
class GiftSend
@ -55,13 +55,13 @@ class GiftSend
self::getMedalList();
foreach (self::$medal_list as $key => $val) {
$bag_list = self::fetchBagList();
array_multisort(array_column($bag_list, "expire_at"), SORT_ASC, $bag_list);
if (getenv('FEED_FILL') == 'false') {
$bag_list = self::checkExpireGift($bag_list);
}
if (count($bag_list)) {
self::$tid = $key;
self::getRoomInfo();
array_multisort(array_column($bag_list, "expire_at"), SORT_ASC, $bag_list);
} else {
break;
}
@ -119,26 +119,28 @@ class GiftSend
*/
protected static function fetchBagList(): array
{
$bag_list = [];
$new_bag_list = [];
$payload = [];
$data = Curl::get('https://api.live.bilibili.com/gift/v2/gift/bag_list', Sign::api($payload));
$data = json_decode($data, true);
if (isset($data['code']) && $data['code']) {
Log::warning('背包查看失败!', ['msg' => $data['message']]);
return $bag_list;
return $new_bag_list;
}
if (isset($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) {
// 去除永久礼物
if ($vo['corner_mark'] == '永久') {
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
{
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 $guarded = ['Barrage', 'Heart', 'Silver', 'MaterialObject', 'AloneTcpClient', 'ZoneTcpClient', 'StormRaffle', 'GuardRaffle', 'PkRaffle', 'GiftRaffle', 'AnchorRaffle'];
private static $sleep_section = [];
@ -26,12 +28,29 @@ class Sleep
public static function run()
{
if (getenv('USE_SLEEP') == 'false' || self::getLock() > time()) {
if (self::getLock() > time()) {
return;
};
if (!self::isPause() && !self::isRefuse()) {
self::setLock(5 * 60);
} else {
self::setLock(1 * 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)
{
$unlock_time = $unlock_time + 1 * 60;
// 检测时间提前5分钟
self::setLock($unlock_time - 5 * 60);
self::$unlock_time = time() + $unlock_time;
self::$unlock_hour = date('H');
foreach (self::$fillable as $classname) {
Log::info("插件 {$classname} 白名单,保持当前状态继续");
}
foreach (self::$guarded as $classname) {
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);
}
}
}