mirror of
https://github.com/lkeme/BiliHelper-personal.git
synced 2025-12-18 17:00:06 +08:00
152 lines
4.7 KiB
PHP
152 lines
4.7 KiB
PHP
<?php declare(strict_types=1);
|
||
|
||
/**
|
||
* Website: https://mudew.com/
|
||
* Author: Lkeme
|
||
* License: The MIT License
|
||
* Email: Useri@live.cn
|
||
* Updated: 2018 ~ 2026
|
||
*
|
||
* _____ _ _ _ _ _ _____ _ _____ _____ _____
|
||
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
|
||
* | |_| | | | | | | | | |_| | | |__ | | | |_| | | |__ | |_| | (゚、 。 7
|
||
* | _ { | | | | | | | _ | | __| | | | ___/ | __| | _ / \、゙ ~ヽ *
|
||
* | |_| | | | | |___ | | | | | | | |___ | |___ | | | |___ | | \ \ じしf_, )ノ
|
||
* |_____/ |_| |_____| |_| |_| |_| |_____| |_____| |_| |_____| |_| \_\
|
||
*/
|
||
|
||
use Bhp\Api\XLive\ApiRevenueWallet;
|
||
use Bhp\Log\Log;
|
||
use Bhp\Plugin\BasePlugin;
|
||
use Bhp\Plugin\Plugin;
|
||
use Bhp\TimeLock\TimeLock;
|
||
use Bhp\Util\Exceptions\NoLoginException;
|
||
|
||
class Silver2Coin extends BasePlugin
|
||
{
|
||
/**
|
||
* 插件信息
|
||
* @var array|string[]
|
||
*/
|
||
public ?array $info = [
|
||
'hook' => __CLASS__, // hook
|
||
'name' => 'Silver2Coin', // 插件名称
|
||
'version' => '0.0.1', // 插件版本
|
||
'desc' => '银瓜子兑换硬币', // 插件描述
|
||
'author' => 'Lkeme',// 作者
|
||
'priority' => 1105, // 插件优先级
|
||
'cycle' => '24(小时)', // 运行周期
|
||
];
|
||
|
||
/**
|
||
* @param Plugin $plugin
|
||
*/
|
||
public function __construct(Plugin &$plugin)
|
||
{
|
||
//
|
||
TimeLock::initTimeLock();
|
||
// $this::class
|
||
$plugin->register($this, 'execute');
|
||
}
|
||
|
||
/**
|
||
* 执行
|
||
* @return void
|
||
* @throws NoLoginException
|
||
*/
|
||
public function execute(): void
|
||
{
|
||
if (TimeLock::getTimes() > time() || !getEnable('silver2coin')) return;
|
||
//
|
||
if ($this->before()) {
|
||
if (!$this->exchangeTask()) {
|
||
TimeLock::setTimes(3600);
|
||
return;
|
||
}
|
||
//
|
||
$this->after();
|
||
}
|
||
// 定时10点 + 1-60分钟随机
|
||
TimeLock::setTimes(TimeLock::timing(10, 0, 0, true));
|
||
}
|
||
|
||
/**
|
||
* @return void
|
||
*/
|
||
protected function after(): void
|
||
{
|
||
ApiRevenueWallet::myWallet();
|
||
}
|
||
|
||
/**
|
||
* @return bool
|
||
* @throws NoLoginException
|
||
*/
|
||
protected function before(): bool
|
||
{
|
||
$response = ApiRevenueWallet::getStatus();
|
||
//
|
||
switch ($response['code']) {
|
||
case -101:
|
||
throw new NoLoginException($response['message']);
|
||
case 0:
|
||
//
|
||
if ($response['data']['silver_2_coin_left'] == 0) {
|
||
Log::notice("银瓜子兑换硬币: 今日已兑换过一次了哦~");
|
||
return false;
|
||
}
|
||
//
|
||
if ($response['data']['silver'] < 700) {
|
||
Log::notice("银瓜子兑换硬币: 瓜子余额不足以兑换哦~~");
|
||
return false;
|
||
}
|
||
return true;
|
||
default:
|
||
Log::warning("银瓜子兑换硬币: 获取钱包状态失败 {$response['code']} -> {$response['message']}");
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 兑换任务
|
||
* @return bool
|
||
*/
|
||
protected function exchangeTask(): bool
|
||
{
|
||
//
|
||
$response = ApiRevenueWallet::appSilver2coin();
|
||
if ($this->handle('APP', $response)) return true;
|
||
//
|
||
$response = ApiRevenueWallet::appSilver2coin();
|
||
if ($this->handle('PC', $response)) return true;
|
||
//
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 处理结果
|
||
* @param string $type
|
||
* @param array $data
|
||
* @return bool
|
||
*/
|
||
protected function handle(string $type, array $data): bool
|
||
{
|
||
// {"code":403,"msg":"每天最多能兑换 1 个","message":"每天最多能兑换 1 个","data":[]}
|
||
// {"code":403,"msg":"仅主站正式会员以上的用户可以兑换","message":"仅主站正式会员以上的用户可以兑换","data":[]}
|
||
// {"code":0,"msg":"兑换成功","message":"兑换成功","data":{"gold":"5074","silver":"36734","tid":"727ab65376a15a6b117cf560a20a21122334","coin":1}}
|
||
// {"code":0,"data":{"coin":1,"gold":1234,"silver":4321,"tid":"Silver2Coin21062316490299678123456"},"message":"兑换成功"}
|
||
switch ($data['code']) {
|
||
case 0:
|
||
Log::notice("银瓜子兑换硬币[$type]: {$data['message']}");
|
||
return true;
|
||
case 403:
|
||
Log::warning("银瓜子兑换硬币[$type]: {$data['message']}");
|
||
return true;
|
||
default:
|
||
Log::warning("银瓜子兑换硬币[$type]: CODE -> {$data['code']} MSG -> {$data['message']} ");
|
||
}
|
||
return false;
|
||
}
|
||
|
||
}
|