[update] TimeLock

This commit is contained in:
Lkeme 2023-08-22 10:44:36 +08:00
parent a15fcf5fee
commit d10f546a91
24 changed files with 84 additions and 58 deletions

View File

@ -113,7 +113,7 @@ Group: [602815575](https://jq.qq.com/?_wv=1027&k=UaalVexM) | **请不要来问
| LiveGoldBox | 0.0.1 | 直播金色宝箱(实物抽奖) | Lkeme | 1110 | 6-10(分钟) | √ | | LiveGoldBox | 0.0.1 | 直播金色宝箱(实物抽奖) | Lkeme | 1110 | 6-10(分钟) | √ |
| AwardRecords | 0.0.1 | 获奖记录 | Lkeme | 1111 | 5(分钟) | √ | | AwardRecords | 0.0.1 | 获奖记录 | Lkeme | 1111 | 5(分钟) | √ |
| VipPoint | 0.0.1 | 大会员积分 | Lkeme | 1112 | 5(分钟) | √ | | VipPoint | 0.0.1 | 大会员积分 | Lkeme | 1112 | 5(分钟) | √ |
| Lottery | 0.0.2 | 抽奖 | MoeHero/Lkeme | 1113 | 5(分钟) | √ | | Lottery | 0.0.2 | 抽奖 | MoeHero/Lkeme | 1113 | 10-25(分钟) | √ |
| DailyGold | 0.0.1 | 每日电池(APP) | Lkeme | 1114 | 24(小时) | √ | | DailyGold | 0.0.1 | 每日电池(APP) | Lkeme | 1114 | 24(小时) | √ |
| PolishMedal | 0.0.1 | 点亮灰色勋章 | possible318/Lkeme | 1115 | 1(小时) | √ | | PolishMedal | 0.0.1 | 点亮灰色勋章 | possible318/Lkeme | 1115 | 1(小时) | √ |
| BatchUnfollow | 0.0.1 | 批量取消关注 | Lkeme | 1116 | 5-10(分钟) | √ | | BatchUnfollow | 0.0.1 | 批量取消关注 | Lkeme | 1116 | 5-10(分钟) | √ |

View File

@ -30,7 +30,7 @@ class ActivityLottery extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'ActivityLottery', // 插件名称 'name' => 'ActivityLottery', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本
@ -38,9 +38,8 @@ class ActivityLottery extends BasePlugin
'author' => 'Lkeme',// 作者 'author' => 'Lkeme',// 作者
'priority' => 1117, // 插件优先级 'priority' => 1117, // 插件优先级
'cycle' => '3-7(分钟)', // 运行周期 'cycle' => '3-7(分钟)', // 运行周期
// 新增字段 'start' => '07:30:00', // 插件运行开始时间
'start' => '08:00:00', // 插件开始日期 'end' => '23:30:00', // 插件运行结束时间
'end' => '23:00:00', // 插件结束日期
]; ];
/** /**
@ -73,44 +72,28 @@ class ActivityLottery extends BasePlugin
*/ */
public function execute(): void public function execute(): void
{ {
// 时间段限制
// if (!TimeLock::isWithinTimeRange($this->info['start'], $this->info['end'])) return;
// 时间锁限制 // 时间锁限制
if (TimeLock::getTimes() > time() || !getEnable('activity_lottery')) return; if (TimeLock::getTimes() > time() || !getEnable('activity_lottery')) return;
// 今日执行
if (isset($this->config[date("Y-m-d")]['add']) && isset($this->config[date("Y-m-d")]['get']) && isset($this->config[date("Y-m-d")]['do'])) return;
// //
$this->initConfig(); $this->initConfig();
delay(1); delay(1);
// 获取远程数据 // 获取远程数据
$this->fetchRemoteInfos(); $this->fetchRemoteInfos();
delay(1); delay(1);
// 增加次数 // 增加次数
$this->addMyTimes(); $this->addMyTimes();
delay(1); delay(1);
// 查询次数 // 查询次数
$this->getMyTimes(); $this->getMyTimes();
delay(1); delay(1);
// 执行次数 // 执行次数
$this->doMyTimes(); $this->doMyTimes();
//
if (isset($this->config[date("Y-m-d")]['add']) && isset($this->config[date("Y-m-d")]['get']) && isset($this->config[date("Y-m-d")]['do'])) {
TimeLock::setTimes(TimeLock::timing(11) + mt_rand(1, 120) * 60);
} else {
TimeLock::setTimes(mt_rand(3, 7) * 60);
}
// //
$this->initConfig(true); $this->initConfig(true);
//
TimeLock::setTimes(mt_rand(3, 7) * 60);
} }

View File

@ -47,7 +47,7 @@ class AwardRecords extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'AwardRecords', // 插件名称 'name' => 'AwardRecords', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -27,7 +27,7 @@ class BatchUnfollow extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'BatchUnfollow', // 插件名称 'name' => 'BatchUnfollow', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本
@ -35,9 +35,6 @@ class BatchUnfollow extends BasePlugin
'author' => 'Lkeme',// 作者 'author' => 'Lkeme',// 作者
'priority' => 1116, // 插件优先级 'priority' => 1116, // 插件优先级
'cycle' => '5-10(分钟)', // 运行周期 'cycle' => '5-10(分钟)', // 运行周期
// 新增字段
'start' => '08:00:00', // 插件开始日期
'end' => '23:00:00', // 插件结束日期
]; ];
/** /**
@ -64,8 +61,6 @@ class BatchUnfollow extends BasePlugin
*/ */
public function execute(): void public function execute(): void
{ {
// 时间段限制
// if (!TimeLock::isWithinTimeRange($this->info['start'], $this->info['end'])) return;
// 时间锁限制 // 时间锁限制
if (TimeLock::getTimes() > time() || !getEnable('batch_unfollow')) return; if (TimeLock::getTimes() > time() || !getEnable('batch_unfollow')) return;
// //

View File

@ -29,7 +29,7 @@ class BpConsumption extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'BpConsumption', // 插件名称 'name' => 'BpConsumption', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -30,7 +30,7 @@ class CheckUpdate extends BasePluginRW
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'CheckUpdate', // 插件名称 'name' => 'CheckUpdate', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -29,7 +29,7 @@ class DailyGold extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'DailyGold', // 插件名称 'name' => 'DailyGold', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -27,7 +27,7 @@ class GameForecast extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'GameForecast', // 插件名称 'name' => 'GameForecast', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -28,7 +28,7 @@ class Judge extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'Judge', // 插件名称 'name' => 'Judge', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -30,7 +30,7 @@ class LiveGoldBox extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'LiveGoldBox', // 插件名称 'name' => 'LiveGoldBox', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -27,7 +27,7 @@ class LiveReservation extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'LiveReservation', // 插件名称 'name' => 'LiveReservation', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -28,7 +28,7 @@ class LiveSignIn extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'LiveSignIn', // 插件名称 'name' => 'LiveSignIn', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -36,7 +36,7 @@ class Login extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'Login', // 插件名称 'name' => 'Login', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -34,14 +34,14 @@ class Lottery extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'Lottery', // 插件名称 'name' => 'Lottery', // 插件名称
'version' => '0.0.2', // 插件版本 'version' => '0.0.2', // 插件版本
'desc' => '抽奖', // 插件描述 'desc' => '抽奖', // 插件描述
'author' => 'MoeHero/Lkeme',// 作者 'author' => 'MoeHero/Lkeme',// 作者
'priority' => 1113, // 插件优先级 'priority' => 1113, // 插件优先级
'cycle' => '2-6(小时)', // 运行周期 'cycle' => '10-25(分钟)', // 运行周期
]; ];
/** /**
@ -87,8 +87,8 @@ class Lottery extends BasePlugin
$this->handleLottery($global_uid); $this->handleLottery($global_uid);
// //
$this->saveConfig(); $this->saveConfig();
// 2-6小时 未完成6-10秒 // 10-25分钟
TimeLock::setTimes(mt_rand(6, 16) * 60); TimeLock::setTimes(mt_rand(10, 25) * 60);
} }
/** /**

View File

@ -28,7 +28,7 @@ class LoveClub extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'LoveClub', // 插件名称 'name' => 'LoveClub', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -41,7 +41,7 @@ class MainSite extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'MainSite', // 插件名称 'name' => 'MainSite', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -28,7 +28,7 @@ class Manga extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'Manga', // 插件名称 'name' => 'Manga', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -25,7 +25,7 @@ class PluginTemplate extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'PluginTemplate', // 插件名称 'name' => 'PluginTemplate', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本
@ -33,9 +33,9 @@ class PluginTemplate extends BasePlugin
'author' => 'Lkeme',// 作者 'author' => 'Lkeme',// 作者
'priority' => 9999, // 插件优先级 'priority' => 9999, // 插件优先级
'cycle' => '1(小时)', // 运行周期 'cycle' => '1(小时)', // 运行周期
// 新增字段 // 新增字段|时间段限制|默认全天运行
'start' => '08:00:00', // 插件开始日期 // 'start' => '08:00:00', // 插件运行开始时间
'end' => '23:00:00', // 插件结束日期 // 'end' => '23:00:00', // 插件运行结束时间
]; ];
/** /**
@ -57,8 +57,6 @@ class PluginTemplate extends BasePlugin
*/ */
public function execute(): void public function execute(): void
{ {
// 时间段限制
// if (!TimeLock::isWithinTimeRange($this->info['start'], $this->info['end'])) return;
// 时间锁限制 // 时间锁限制
// if (TimeLock::getTimes() > time()) return; // if (TimeLock::getTimes() > time()) return;

View File

@ -31,7 +31,7 @@ class PolishMedal extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'PolishMedal', // 插件名称 'name' => 'PolishMedal', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -28,7 +28,7 @@ class Silver2Coin extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'Silver2Coin', // 插件名称 'name' => 'Silver2Coin', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -47,7 +47,7 @@ class VipPoint extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'VipPoint', // 插件名称 'name' => 'VipPoint', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -29,7 +29,7 @@ class VipPrivilege extends BasePlugin
* 插件信息 * 插件信息
* @var array|string[] * @var array|string[]
*/ */
protected ?array $info = [ public ?array $info = [
'hook' => __CLASS__, // hook 'hook' => __CLASS__, // hook
'name' => 'VipPrivilege', // 插件名称 'name' => 'VipPrivilege', // 插件名称
'version' => '0.0.1', // 插件版本 'version' => '0.0.1', // 插件版本

View File

@ -31,6 +31,8 @@ trait BasePluginInfo
'author' => 'Lkeme',// 作者 'author' => 'Lkeme',// 作者
'priority' => 0, // 插件优先级 'priority' => 0, // 插件优先级
'cycle' => 'cycle', // 运行周期 'cycle' => 'cycle', // 运行周期
'start' => '07:00:00', // 插件运行开始时间
'end' => '23:00:00', // 插件运行结束时间
]; ];
/** /**
@ -50,6 +52,30 @@ trait BasePluginInfo
return $this; return $this;
} }
/**
* 设置运行周期
* @param string $value
* @param string $key
* @return $this
*/
protected function setStart(string $value, string $key = 'start'): static
{
$this->info[$key] = $value;
return $this;
}
/**
* 设置运行周期
* @param string $value
* @param string $key
* @return $this
*/
protected function setEnd(string $value, string $key = 'end'): static
{
$this->info[$key] = $value;
return $this;
}
/** /**
* 设置名称 * 设置名称
* @param string $value * @param string $value

View File

@ -17,6 +17,8 @@
namespace Bhp\Plugin; namespace Bhp\Plugin;
use Bhp\Log\Log;
use Bhp\TimeLock\TimeLock;
use Bhp\Util\AsciiTable\AsciiTable; use Bhp\Util\AsciiTable\AsciiTable;
use Bhp\Util\DesignPattern\SingleTon; use Bhp\Util\DesignPattern\SingleTon;
@ -91,6 +93,9 @@ class Plugin extends SingleTon
$class = &$staff[0]; // 引用过来的类 $class = &$staff[0]; // 引用过来的类
$method = $staff[1]; // 类下面的方法 $method = $staff[1]; // 类下面的方法
if (method_exists($class, $method)) { if (method_exists($class, $method)) {
//
if (!$this->canItRun($class)) continue;
//
$func_result = $class->$method(...$params); $func_result = $class->$method(...$params);
if (is_numeric($func_result)) { if (is_numeric($func_result)) {
// 这里判断返回值是不是字符串,如果不是将不进行返回到页面上 // 这里判断返回值是不是字符串,如果不是将不进行返回到页面上
@ -240,4 +245,23 @@ class Plugin extends SingleTon
} }
} }
/**
* @param mixed $class
* @return bool
*/
protected function canItRun(mixed $class): bool
{
if (!isset($class->info['start']) || !isset($class->info['end'])) {
// Log::info("插件 {$class->info['name']} 全天运行");
return true;
}
if (TimeLock::isWithinTimeRange($class->info['start'], $class->info['end'])) {
// Log::info("插件 {$class->info['name']} 运行时间段");
return true;
} else {
// Log::info("插件 {$class->info['name']} 不在运行时间段");
return false;
}
}
} }