支持sr每月统计

This commit is contained in:
qwerdvd 2023-04-28 13:41:09 +08:00
parent 4e9ecf0e50
commit fbd8f74605
4 changed files with 117 additions and 1 deletions

View File

@ -8,6 +8,9 @@ STAR_RAIL_SIGN_EXTRA_INFO_URL = f'{OLD_URL}/event/luna/extra_info'
STAR_RAIL_SIGN_EXTRA_REWARD_URL = f'{OLD_URL}/event/luna/extra_reward' STAR_RAIL_SIGN_EXTRA_REWARD_URL = f'{OLD_URL}/event/luna/extra_reward'
STAR_RAIL_SIGN_URL = f'{OLD_URL}/event/luna/sign' STAR_RAIL_SIGN_URL = f'{OLD_URL}/event/luna/sign'
STAR_RAIL_MONTH_INFO_URL = f'{OLD_URL}/event/srledger/month_info' # 开拓阅历接口 STAR_RAIL_MONTH_INFO_URL = f'{OLD_URL}/event/srledger/month_info' # 开拓阅历接口
STAR_RAIL_MONTH_DETAIL_URL = (
f'{OLD_URL}/event/srledger/month_detail' # 开拓阅历详情接口
)
STAR_RAIL_NOTE_URL = f'{NEW_URL}/game_record/app/hkrpg/api/note' # 实时便签接口 STAR_RAIL_NOTE_URL = f'{NEW_URL}/game_record/app/hkrpg/api/note' # 实时便签接口
STAR_RAIL_INDEX_URL = f'{NEW_URL}/game_record/app/hkrpg/api/index' # 角色橱窗接口 STAR_RAIL_INDEX_URL = f'{NEW_URL}/game_record/app/hkrpg/api/index' # 角色橱窗接口

View File

@ -1,5 +1,53 @@
from typing import Any, List, TypedDict from typing import Any, List, TypedDict
################
# 每月札记相关 #
################
class DataText(TypedDict):
type: str
key: str
mi18n_key: str
class DayData(TypedDict):
current_hcoin: int
current_rails_pass: int
last_hcoin: int
last_rails_pass: int
class GroupBy(TypedDict):
action: str
num: int
percent: int
action_name: str
class MonthData(TypedDict):
current_hcoin: int
current_rails_pass: int
last_hcoin: int
last_rails_pass: int
hcoin_rate: int
rails_rate: int
group_by: List[GroupBy]
class MonthlyAward(TypedDict):
uid: str
region: str
login_flag: bool
optional_month: List[int]
month: str
data_month: str
month_data: MonthData
day_data: DayData
version: str
start_month: str
data_text: DataText
################ ################
# 实时便签 # # 实时便签 #

View File

@ -0,0 +1,33 @@
from gsuid_core.sv import SV
from gsuid_core.bot import Bot
from gsuid_core.models import Event
from .note_text import award
# from ..utils.convert import get_uid
from ..utils.api import get_sqla
from ..utils.error_reply import UID_HINT
# from .draw_note_card import draw_note_img
sv_get_monthly_data = SV('sr查询月历')
# 群聊内 每月统计 功能
@sv_get_monthly_data.on_fullmatch(('sr每月统计'))
async def send_monthly_data(bot: Bot, ev: Event):
sqla = get_sqla(ev.bot_id)
sr_uid = await sqla.get_bind_sruid(ev.user_id)
if sr_uid is None:
return UID_HINT
await bot.send(await award(sr_uid))
# @sv_get_monthly_data.on_fullmatch(('sr当前信息', 'srzj', 'sr月历'))
# async def send_monthly_pic(bot: Bot, ev: Event):
# await bot.logger.info('开始执行[sr每日信息]')
# uid = await get_uid(bot, ev)
# if uid is None:
# return UID_HINT
# im = await draw_note_img(str(uid))
# await bot.send(im)

View File

@ -14,7 +14,7 @@ from gsuid_core.utils.api.mys.tools import (
from ..utils.api import get_sqla from ..utils.api import get_sqla
from ..sruid_utils.api.mys.api import _API from ..sruid_utils.api.mys.api import _API
from ..sruid_utils.api.mys.models import DailyNoteData from ..sruid_utils.api.mys.models import MonthlyAward, DailyNoteData
from ....GenshinUID.GenshinUID.genshinuid_config.gs_config import gsconfig from ....GenshinUID.GenshinUID.genshinuid_config.gs_config import gsconfig
RECOGNIZE_SERVER = { RECOGNIZE_SERVER = {
@ -193,6 +193,38 @@ class _MysApi(BaseMysApi):
data = cast(MysSign, data['data']) data = cast(MysSign, data['data'])
return data return data
async def get_award(self, sr_uid) -> Union[MonthlyAward, int]:
server_id = RECOGNIZE_SERVER.get(str(sr_uid)[0])
ck = await self.get_ck(sr_uid, 'OWNER')
if ck is None:
return -51
if int(str(sr_uid)[0]) < 6:
HEADER = copy.deepcopy(self._HEADER)
HEADER['Cookie'] = ck
HEADER['DS'] = get_web_ds_token(True)
HEADER['x-rpc-device_id'] = random_hex(32)
data = await self._mys_request(
url=_API['STAR_RAIL_MONTH_INFO_URL'],
method='GET',
header=HEADER,
params={'uid': sr_uid, 'region': server_id, 'month': ''},
)
else:
HEADER = copy.deepcopy(self._HEADER_OS)
HEADER['Cookie'] = ck
HEADER['x-rpc-device_id'] = random_hex(32)
HEADER['DS'] = generate_os_ds()
data = await self._mys_request(
url=_API['STAR_RAIL_MONTH_INFO_URL'],
method='GET',
header=HEADER,
params={'uid': sr_uid, 'region': server_id, 'month': ''},
use_proxy=True,
)
if isinstance(data, Dict):
data = cast(MonthlyAward, data['data'])
return data
async def _mys_req_get( async def _mys_req_get(
self, self,
url: str, url: str,