网页控制台新增定时检查体力开关

This commit is contained in:
KimigaiiWuyi 2024-09-14 22:08:20 +08:00
parent b2e41f2bf7
commit 9ca34cccc0
5 changed files with 50 additions and 37 deletions

View File

@ -2,9 +2,9 @@ from typing import Dict
from gsuid_core.utils.plugins_config.models import ( from gsuid_core.utils.plugins_config.models import (
GSC, GSC,
GsStrConfig,
GsBoolConfig, GsBoolConfig,
GsListStrConfig, GsListStrConfig,
GsStrConfig,
) )
CONIFG_DEFAULT: Dict[str, GSC] = { CONIFG_DEFAULT: Dict[str, GSC] = {
@ -36,4 +36,9 @@ CONIFG_DEFAULT: Dict[str, GSC] = {
"开启后mr功能将转为调用组件API, 可能缺失数据、数据不准", "开启后mr功能将转为调用组件API, 可能缺失数据、数据不准",
True, True,
), ),
"StaminaCheck": GsBoolConfig(
"定时检查体力(全体)",
"开启后将定时检查体力是否超过阈值",
True,
),
} }

View File

@ -1,20 +1,21 @@
import asyncio import asyncio
from gsuid_core.aps import scheduler from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.gss import gss from gsuid_core.gss import gss
from gsuid_core.logger import logger
from gsuid_core.models import Event from gsuid_core.models import Event
from gsuid_core.aps import scheduler
from gsuid_core.logger import logger
from gsuid_core.segment import MessageSegment from gsuid_core.segment import MessageSegment
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from .draw_stamina_card import get_stamina_img
from .notice import get_notice_list from .notice import get_notice_list
from .stamina_text import get_stamina_text
from ..utils.error_reply import UID_HINT
from ..utils.sr_prefix import PREFIX from ..utils.sr_prefix import PREFIX
from ..utils.error_reply import UID_HINT
from .stamina_text import get_stamina_text
from .draw_stamina_card import get_stamina_img
from ..starrailuid_config.sr_config import srconfig
sv_get_stamina = SV("sr查询体力") sv_get_stamina = SV("sr查询体力")
sv_get_stamina_admin = SV("sr强制推送", pm=1) sv_get_stamina_admin = SV("sr强制推送", pm=1)
@ -41,6 +42,11 @@ async def force_notice_job(bot: Bot, ev: Event):
@scheduler.scheduled_job("cron", minute="*/30") @scheduler.scheduled_job("cron", minute="*/30")
async def sr_notice_job(): async def sr_notice_job():
StaminaCheck = srconfig.get_config("StaminaCheck").data
if not StaminaCheck:
logger.trace('[sr推送检查] 暂停...')
return
result = await get_notice_list() result = await get_notice_list()
logger.info("[sr推送检查]完成!等待消息推送中...") logger.info("[sr推送检查]完成!等待消息推送中...")
logger.debug(result) logger.debug(result)

View File

@ -3,14 +3,16 @@ from io import BytesIO
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
from PIL import Image, ImageDraw
import aiohttp import aiohttp
from PIL import Image, ImageDraw
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.utils.database.models import GsBind, GsUser
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from gsuid_core.utils.database.models import GsBind, GsUser
from ..utils.mys_api import mys_api
from ..sruid_utils.api.mys.models import Expedition from ..sruid_utils.api.mys.models import Expedition
from ..starrailuid_config.sr_config import srconfig from ..starrailuid_config.sr_config import srconfig
from ..utils.image.image_tools import get_simple_bg
from ..utils.error_reply import get_error as get_error_msg from ..utils.error_reply import get_error as get_error_msg
from ..utils.fonts.starrail_fonts import ( from ..utils.fonts.starrail_fonts import (
sr_font_22, sr_font_22,
@ -19,8 +21,6 @@ from ..utils.fonts.starrail_fonts import (
sr_font_36, sr_font_36,
sr_font_50, sr_font_50,
) )
from ..utils.image.image_tools import get_simple_bg
from ..utils.mys_api import mys_api
use_widget = srconfig.get_config("WidgetResin").data use_widget = srconfig.get_config("WidgetResin").data

View File

@ -2,8 +2,8 @@ from typing import List
from gsuid_core.logger import logger from gsuid_core.logger import logger
from ..utils.error_reply import get_error
from ..utils.mys_api import mys_api from ..utils.mys_api import mys_api
from ..utils.error_reply import get_error
daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准 daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准
============== ==============
@ -28,15 +28,15 @@ async def get_stamina_text(uid: str) -> str:
rec_time = "" rec_time = ""
current_stamina = dailydata.current_stamina current_stamina = dailydata.current_stamina
if current_stamina < 160: if current_stamina < 160:
stamina_recover_time = seconds2hours(dailydata.stamina_recover_time) recover_time = seconds2hours(dailydata.stamina_recover_time)
next_stamina_rec_time = seconds2hours( next_stamina_rec_time = seconds2hours(
8 * 60 8 * 60
- ( - (
(dailydata.max_stamina - dailydata.current_stamina) * 8 * 60 (max_stamina - dailydata.current_stamina) * 8 * 60
- dailydata.stamina_recover_time - dailydata.stamina_recover_time
) )
) )
rec_time = f" ({next_stamina_rec_time}/{stamina_recover_time})" rec_time = f" ({next_stamina_rec_time}/{recover_time})"
accepted_epedition_num = dailydata.accepted_expedition_num accepted_epedition_num = dailydata.accepted_expedition_num
total_expedition_num = dailydata.total_expedition_num total_expedition_num = dailydata.total_expedition_num
@ -50,7 +50,8 @@ async def get_stamina_text(uid: str) -> str:
finished_expedition_num += 1 finished_expedition_num += 1
else: else:
remaining_time: str = seconds2hours(expedition.remaining_time) remaining_time: str = seconds2hours(expedition.remaining_time)
expedition_info.append(f"{expedition_name} 剩余时间{remaining_time}") _time = f"{expedition_name} 剩余时间"
expedition_info.append(f"{_time}{remaining_time}")
expedition_data = "\n".join(expedition_info) expedition_data = "\n".join(expedition_info)
return daily_im.format( return daily_im.format(

View File

@ -1,34 +1,34 @@
import copy import copy
import time import time
from typing import Dict, Literal, Optional, Union from typing import Dict, Union, Literal, Optional
from gsuid_core.utils.api.mys.tools import (
generate_os_ds,
get_ds_token,
get_web_ds_token,
mys_version,
)
from gsuid_core.utils.api.mys_api import _MysApi
import msgspec import msgspec
from gsuid_core.utils.api.mys_api import _MysApi
from gsuid_core.utils.api.mys.tools import (
mys_version,
get_ds_token,
generate_os_ds,
get_web_ds_token,
)
from ..sruid_utils.api.mys.api import _API from ..sruid_utils.api.mys.api import _API
from ..sruid_utils.api.mys.models import ( from ..sruid_utils.api.mys.models import (
AbyssBossData,
AbyssData,
AbyssStoryData,
AvatarDetail,
AvatarInfo,
DailyNoteData,
GachaLog,
MonthlyAward,
MysSign, MysSign,
RogueData, GachaLog,
RogueLocustData,
RoleBasicInfo,
RoleIndex,
SignInfo, SignInfo,
SignList, SignList,
AbyssData,
RogueData,
RoleIndex,
AvatarInfo,
AvatarDetail,
MonthlyAward,
AbyssBossData,
DailyNoteData,
RoleBasicInfo,
WidgetStamina, WidgetStamina,
AbyssStoryData,
RogueLocustData,
) )
RECOGNIZE_SERVER = { RECOGNIZE_SERVER = {
@ -216,13 +216,14 @@ class MysApi(_MysApi):
HEADER["Cookie"] = ck HEADER["Cookie"] = ck
HEADER["DS"] = generate_os_ds() HEADER["DS"] = generate_os_ds()
header = HEADER header = HEADER
os_server = "prod_official_asia"
data = await self.simple_sr_req( data = await self.simple_sr_req(
"STAR_RAIL_AVATAR_INFO_URL", "STAR_RAIL_AVATAR_INFO_URL",
uid, uid,
params={ params={
"need_wiki": "true" if need_wiki else "false", "need_wiki": "true" if need_wiki else "false",
"role_id": uid, "role_id": uid,
"server": RECOGNIZE_SERVER.get(str(uid)[0], "prod_official_asia"), "server": RECOGNIZE_SERVER.get(str(uid)[0], os_server),
}, },
header=header, header=header,
) )