mirror of
https://github.com/baiqwerdvd/ArknightsUID.git
synced 2025-05-05 03:23:45 +08:00
支持新版gamedata
This commit is contained in:
parent
0059e0dbe7
commit
f6d610d33b
@ -54,7 +54,9 @@ async def get_ap_img(bot_id: str, user_id: str):
|
|||||||
# 开始绘图任务
|
# 开始绘图任务
|
||||||
task = []
|
task = []
|
||||||
img = Image.new(
|
img = Image.new(
|
||||||
"RGBA", (based_w * len(useable_uid_list), based_h), (0, 0, 0, 0)
|
"RGBA",
|
||||||
|
(based_w * len(useable_uid_list), based_h),
|
||||||
|
(0, 0, 0, 0),
|
||||||
)
|
)
|
||||||
for uid_index, uid in enumerate(useable_uid_list):
|
for uid_index, uid in enumerate(useable_uid_list):
|
||||||
task.append(_draw_all_ap_img(img, uid, uid_index))
|
task.append(_draw_all_ap_img(img, uid, uid_index))
|
||||||
@ -97,9 +99,7 @@ def get_error(img: Image.Image, uid: str, daily_data: int):
|
|||||||
async def draw_ap_img(uid: str) -> Image.Image:
|
async def draw_ap_img(uid: str) -> Image.Image:
|
||||||
# char
|
# char
|
||||||
char_pic = (
|
char_pic = (
|
||||||
Image.open(TEXT_PATH / "char_1028_texas2_1b.png")
|
Image.open(TEXT_PATH / "char_1028_texas2_1b.png").resize((1700, 1700)).convert("RGBA")
|
||||||
.resize((1700, 1700))
|
|
||||||
.convert("RGBA")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
tmp_img = Image.new("RGBA", (based_w, based_h))
|
tmp_img = Image.new("RGBA", (based_w, based_h))
|
||||||
|
@ -7,9 +7,7 @@ from gsuid_core.utils.plugins_config.models import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
CONIFG_DEFAULT: Dict[str, GSC] = {
|
CONIFG_DEFAULT: Dict[str, GSC] = {
|
||||||
"SignTime": GsListStrConfig(
|
"SignTime": GsListStrConfig("每晚签到时间设置", "每晚森空岛签到时间设置(时,分)", ["0", "38"]),
|
||||||
"每晚签到时间设置", "每晚森空岛签到时间设置(时,分)", ["0", "38"]
|
|
||||||
),
|
|
||||||
"SignReportSimple": GsBoolConfig(
|
"SignReportSimple": GsBoolConfig(
|
||||||
"简洁签到报告",
|
"简洁签到报告",
|
||||||
"开启后可以大大减少每日签到报告字数",
|
"开启后可以大大减少每日签到报告字数",
|
||||||
|
@ -43,8 +43,7 @@ async def get_core_help() -> Union[bytes, str]:
|
|||||||
Image.open(TEXT_PATH / "button.png"),
|
Image.open(TEXT_PATH / "button.png"),
|
||||||
source_han_sans_cn_origin,
|
source_han_sans_cn_origin,
|
||||||
extra_message=[
|
extra_message=[
|
||||||
f"Client Version:{Arknights_Client_version} "
|
f"Client Version:{Arknights_Client_version} " f" Res version: {Arknights_Res_version}"
|
||||||
f" Res version: {Arknights_Res_version}"
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
return img
|
return img
|
||||||
|
@ -25,8 +25,7 @@ async def get_resp_msg(bot: Bot, ev: Event):
|
|||||||
if not phone_number.isdigit():
|
if not phone_number.isdigit():
|
||||||
return await bot.send("你输入了错误的格式!")
|
return await bot.send("你输入了错误的格式!")
|
||||||
resp = await bot.receive_resp(
|
resp = await bot.receive_resp(
|
||||||
f"请确认你的手机号码: {phone_number}."
|
f"请确认你的手机号码: {phone_number}." "如果正确请回复'确认', 其他任何回复将取消本次操作."
|
||||||
"如果正确请回复'确认', 其他任何回复将取消本次操作."
|
|
||||||
)
|
)
|
||||||
if resp is not None and resp.text == "确认":
|
if resp is not None and resp.text == "确认":
|
||||||
login = SklandLogin(phone_number)
|
login = SklandLogin(phone_number)
|
||||||
|
@ -26,7 +26,6 @@ from ..utils.models.gamedata.GamedataConst import GamedataConst
|
|||||||
from ..utils.models.gamedata.HandbookInfoTable import HandbookInfoTable
|
from ..utils.models.gamedata.HandbookInfoTable import HandbookInfoTable
|
||||||
from ..utils.models.gamedata.HandbookTable import HandbookTable
|
from ..utils.models.gamedata.HandbookTable import HandbookTable
|
||||||
from ..utils.models.gamedata.HandbookTeamTable import HandbookTeamTable
|
from ..utils.models.gamedata.HandbookTeamTable import HandbookTeamTable
|
||||||
from ..utils.models.gamedata.ItemTable import ItemTable
|
|
||||||
from ..utils.models.gamedata.MedalTable import MedalTable
|
from ..utils.models.gamedata.MedalTable import MedalTable
|
||||||
from ..utils.models.gamedata.MissionTable import MissionTable
|
from ..utils.models.gamedata.MissionTable import MissionTable
|
||||||
from ..utils.models.gamedata.OpenServerTable import OpenServerTable
|
from ..utils.models.gamedata.OpenServerTable import OpenServerTable
|
||||||
@ -37,7 +36,6 @@ from ..utils.models.gamedata.RetroTable import RetroTable
|
|||||||
from ..utils.models.gamedata.RoguelikeTable import RoguelikeTable
|
from ..utils.models.gamedata.RoguelikeTable import RoguelikeTable
|
||||||
from ..utils.models.gamedata.RoguelikeTopicTable import RoguelikeTopicTable
|
from ..utils.models.gamedata.RoguelikeTopicTable import RoguelikeTopicTable
|
||||||
from ..utils.models.gamedata.SandboxTable import SandboxTable
|
from ..utils.models.gamedata.SandboxTable import SandboxTable
|
||||||
from ..utils.models.gamedata.SandboxPermTable import SandboxPermTable
|
|
||||||
from ..utils.models.gamedata.ShopClientTable import ShopClientTable
|
from ..utils.models.gamedata.ShopClientTable import ShopClientTable
|
||||||
from ..utils.models.gamedata.SkillTable import SkillTable
|
from ..utils.models.gamedata.SkillTable import SkillTable
|
||||||
from ..utils.models.gamedata.SkinTable import SkinTable
|
from ..utils.models.gamedata.SkinTable import SkinTable
|
||||||
@ -66,9 +64,8 @@ def read_json(file_path: Path, **kwargs) -> dict:
|
|||||||
logger.error(f"Error reading JSON file: {e}")
|
logger.error(f"Error reading JSON file: {e}")
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
threading.Thread(
|
|
||||||
target=lambda: asyncio.run(download_all_resource()), daemon=True
|
threading.Thread(target=lambda: asyncio.run(download_all_resource()), daemon=True).start()
|
||||||
).start()
|
|
||||||
# ACTIVITY_TABLE = ActivityTable.convert(read_json(GAMEDATA_PATH / 'activity_table.json'))
|
# ACTIVITY_TABLE = ActivityTable.convert(read_json(GAMEDATA_PATH / 'activity_table.json'))
|
||||||
# AUDIO_DATA = AudioData.convert(read_json(GAMEDATA_PATH / 'audio_data.json'))
|
# AUDIO_DATA = AudioData.convert(read_json(GAMEDATA_PATH / 'audio_data.json'))
|
||||||
|
|
||||||
@ -84,23 +81,15 @@ CHAPTER_TABLE = ChapterTable.convert(
|
|||||||
CHARACTER_TABLE = CharacterTable.convert(
|
CHARACTER_TABLE = CharacterTable.convert(
|
||||||
{"chars": read_json(GAMEDATA_PATH / "character_table.json")}
|
{"chars": read_json(GAMEDATA_PATH / "character_table.json")}
|
||||||
)
|
)
|
||||||
CHAR_META_TABLE = CharMetaTable.convert(
|
CHAR_META_TABLE = CharMetaTable.convert(read_json(GAMEDATA_PATH / "char_meta_table.json"))
|
||||||
read_json(GAMEDATA_PATH / "char_meta_table.json")
|
|
||||||
)
|
|
||||||
CHARM_TABLE = CharmTable.convert(read_json(GAMEDATA_PATH / "charm_table.json"))
|
CHARM_TABLE = CharmTable.convert(read_json(GAMEDATA_PATH / "charm_table.json"))
|
||||||
CHAR_PATH_TABLE = CharPatchTable.convert(
|
CHAR_PATH_TABLE = CharPatchTable.convert(read_json(GAMEDATA_PATH / "char_patch_table.json"))
|
||||||
read_json(GAMEDATA_PATH / "char_patch_table.json")
|
|
||||||
)
|
|
||||||
CHARWORD_TABLE = CharwordTable.convert(read_json(GAMEDATA_PATH / "charword_table.json"))
|
CHARWORD_TABLE = CharwordTable.convert(read_json(GAMEDATA_PATH / "charword_table.json"))
|
||||||
CHECKIN_TABLE = CheckinTable.convert(read_json(GAMEDATA_PATH / "checkin_table.json"))
|
CHECKIN_TABLE = CheckinTable.convert(read_json(GAMEDATA_PATH / "checkin_table.json"))
|
||||||
CLIMB_TOWER_TABLE = ClimbTowerTable.convert(
|
CLIMB_TOWER_TABLE = ClimbTowerTable.convert(read_json(GAMEDATA_PATH / "climb_tower_table.json"))
|
||||||
read_json(GAMEDATA_PATH / "climb_tower_table.json")
|
|
||||||
)
|
|
||||||
CLUE_DATA = ClueData.convert(read_json(GAMEDATA_PATH / "clue_data.json"))
|
CLUE_DATA = ClueData.convert(read_json(GAMEDATA_PATH / "clue_data.json"))
|
||||||
CRISIS_TABLE = CrisisTable.convert(read_json(GAMEDATA_PATH / "crisis_table.json"))
|
CRISIS_TABLE = CrisisTable.convert(read_json(GAMEDATA_PATH / "crisis_table.json"))
|
||||||
CRISIS_V2_TABLE = CrisisV2Table.convert(
|
CRISIS_V2_TABLE = CrisisV2Table.convert(read_json(GAMEDATA_PATH / "crisis_v2_table.json"))
|
||||||
read_json(GAMEDATA_PATH / "crisis_v2_table.json")
|
|
||||||
)
|
|
||||||
|
|
||||||
# DISPLAY_META_TABLE = DisplayMetaTable.convert(read_json(GAMEDATA_PATH / 'display_meta_table.json'))
|
# DISPLAY_META_TABLE = DisplayMetaTable.convert(read_json(GAMEDATA_PATH / 'display_meta_table.json'))
|
||||||
|
|
||||||
@ -126,38 +115,28 @@ HANDBOOK_TEAM_TABLE = HandbookTeamTable.convert(
|
|||||||
MEDAL_TABLE = MedalTable.convert(read_json(GAMEDATA_PATH / "medal_table.json"))
|
MEDAL_TABLE = MedalTable.convert(read_json(GAMEDATA_PATH / "medal_table.json"))
|
||||||
MISSION_TABLE = MissionTable.convert(read_json(GAMEDATA_PATH / "mission_table.json"))
|
MISSION_TABLE = MissionTable.convert(read_json(GAMEDATA_PATH / "mission_table.json"))
|
||||||
|
|
||||||
OPEN_SERVER_TABLE = OpenServerTable.convert(
|
OPEN_SERVER_TABLE = OpenServerTable.convert(read_json(GAMEDATA_PATH / "open_server_table.json"))
|
||||||
read_json(GAMEDATA_PATH / "open_server_table.json")
|
|
||||||
)
|
|
||||||
|
|
||||||
PLAYER_AVATAR_TABLE = PlayerAvatarTable.convert(
|
PLAYER_AVATAR_TABLE = PlayerAvatarTable.convert(
|
||||||
read_json(GAMEDATA_PATH / "player_avatar_table.json")
|
read_json(GAMEDATA_PATH / "player_avatar_table.json")
|
||||||
)
|
)
|
||||||
|
|
||||||
RANGE_TABLE = RangeTable.convert(
|
RANGE_TABLE = RangeTable.convert({"range_": read_json(GAMEDATA_PATH / "range_table.json")})
|
||||||
{"range_": read_json(GAMEDATA_PATH / "range_table.json")}
|
|
||||||
)
|
|
||||||
REPLICATE_TABLE = ReplicateTable.convert(
|
REPLICATE_TABLE = ReplicateTable.convert(
|
||||||
{"replicate": read_json(GAMEDATA_PATH / "replicate_table.json")}
|
{"replicate": read_json(GAMEDATA_PATH / "replicate_table.json")}
|
||||||
)
|
)
|
||||||
RETRO_TABLE = RetroTable.convert(read_json(GAMEDATA_PATH / "retro_table.json"))
|
RETRO_TABLE = RetroTable.convert(read_json(GAMEDATA_PATH / "retro_table.json"))
|
||||||
ROGUELIKE_TABLE = RoguelikeTable.convert(
|
ROGUELIKE_TABLE = RoguelikeTable.convert(read_json(GAMEDATA_PATH / "roguelike_table.json"))
|
||||||
read_json(GAMEDATA_PATH / "roguelike_table.json")
|
|
||||||
)
|
|
||||||
ROGUELIKE_TOPIC_TABLE = RoguelikeTopicTable.convert(
|
ROGUELIKE_TOPIC_TABLE = RoguelikeTopicTable.convert(
|
||||||
read_json(GAMEDATA_PATH / "roguelike_topic_table.json")
|
read_json(GAMEDATA_PATH / "roguelike_topic_table.json")
|
||||||
)
|
)
|
||||||
|
|
||||||
SANDBOX_TABLE = SandboxTable.convert(read_json(GAMEDATA_PATH / "sandbox_table.json"))
|
SANDBOX_TABLE = SandboxTable.convert(read_json(GAMEDATA_PATH / "sandbox_table.json"))
|
||||||
SANDBOX_PERM_TABLE = SandboxPermTable.convert(
|
# SANDBOX_PERM_TABLE = SandboxPermTable.convert(
|
||||||
read_json(GAMEDATA_PATH / "sandbox_perm_table.json")
|
# read_json(GAMEDATA_PATH / "sandbox_perm_table.json")
|
||||||
)
|
# )
|
||||||
SHOP_CLIENT_TABLE = ShopClientTable.convert(
|
SHOP_CLIENT_TABLE = ShopClientTable.convert(read_json(GAMEDATA_PATH / "shop_client_table.json"))
|
||||||
read_json(GAMEDATA_PATH / "shop_client_table.json")
|
SKILL_TABLE = SkillTable.convert({"skills": read_json(GAMEDATA_PATH / "skill_table.json")})
|
||||||
)
|
|
||||||
SKILL_TABLE = SkillTable.convert(
|
|
||||||
{"skills": read_json(GAMEDATA_PATH / "skill_table.json")}
|
|
||||||
)
|
|
||||||
SKIN_TABLE = SkinTable.convert(read_json(GAMEDATA_PATH / "skin_table.json"))
|
SKIN_TABLE = SkinTable.convert(read_json(GAMEDATA_PATH / "skin_table.json"))
|
||||||
STAGE_TABLE = StageTable.convert(read_json(GAMEDATA_PATH / "stage_table.json"))
|
STAGE_TABLE = StageTable.convert(read_json(GAMEDATA_PATH / "stage_table.json"))
|
||||||
STORY_REVIEW_META_TABLE = StoryReviewMetaTable.convert(
|
STORY_REVIEW_META_TABLE = StoryReviewMetaTable.convert(
|
||||||
@ -166,17 +145,11 @@ STORY_REVIEW_META_TABLE = StoryReviewMetaTable.convert(
|
|||||||
STORY_REVIEW_TABLE = StoryReviewTable.convert(
|
STORY_REVIEW_TABLE = StoryReviewTable.convert(
|
||||||
{"storyreviewtable": read_json(GAMEDATA_PATH / "story_review_table.json")}
|
{"storyreviewtable": read_json(GAMEDATA_PATH / "story_review_table.json")}
|
||||||
)
|
)
|
||||||
STORY_TABLE = StoryTable.convert(
|
STORY_TABLE = StoryTable.convert({"stories": read_json(GAMEDATA_PATH / "story_table.json")})
|
||||||
{"stories": read_json(GAMEDATA_PATH / "story_table.json")}
|
|
||||||
)
|
|
||||||
|
|
||||||
TECH_BUFF_TABLE = TechBuffTable.convert(
|
TECH_BUFF_TABLE = TechBuffTable.convert(read_json(GAMEDATA_PATH / "tech_buff_table.json"))
|
||||||
read_json(GAMEDATA_PATH / "tech_buff_table.json")
|
|
||||||
)
|
|
||||||
TIP_TABLE = TipTable.convert(read_json(GAMEDATA_PATH / "tip_table.json"))
|
TIP_TABLE = TipTable.convert(read_json(GAMEDATA_PATH / "tip_table.json"))
|
||||||
TOKEN_TABLE = TokenTable.convert(
|
TOKEN_TABLE = TokenTable.convert({"tokens": read_json(GAMEDATA_PATH / "token_table.json")})
|
||||||
{"tokens": read_json(GAMEDATA_PATH / "token_table.json")}
|
|
||||||
)
|
|
||||||
|
|
||||||
UNIEQUIP_DATA = UniequipData.convert(read_json(GAMEDATA_PATH / "uniequip_data.json"))
|
UNIEQUIP_DATA = UniequipData.convert(read_json(GAMEDATA_PATH / "uniequip_data.json"))
|
||||||
UNIEQUIP_TABLE = UniEquipTable.convert(read_json(GAMEDATA_PATH / "uniequip_table.json"))
|
UNIEQUIP_TABLE = UniEquipTable.convert(read_json(GAMEDATA_PATH / "uniequip_table.json"))
|
||||||
|
@ -34,9 +34,7 @@ async def get_role_img(uid: str):
|
|||||||
secretary_skinId = secretary.skinId.replace("@", "_")
|
secretary_skinId = secretary.skinId.replace("@", "_")
|
||||||
|
|
||||||
secretary_char_img = (
|
secretary_char_img = (
|
||||||
Image.open(SKINPACK_PATH / f"{secretary_skinId}b.png")
|
Image.open(SKINPACK_PATH / f"{secretary_skinId}b.png").resize((768, 768)).convert("RGBA")
|
||||||
.resize((768, 768))
|
|
||||||
.convert("RGBA")
|
|
||||||
)
|
)
|
||||||
char_info.paste(secretary_char_img, (0, -20), secretary_char_img)
|
char_info.paste(secretary_char_img, (0, -20), secretary_char_img)
|
||||||
|
|
||||||
|
@ -73,9 +73,7 @@ async def sign_in(ark_uid: str) -> str:
|
|||||||
count += 1
|
count += 1
|
||||||
sign_missed = day_of_month - count + special_count
|
sign_missed = day_of_month - count + special_count
|
||||||
im = f"ark签到成功!\n{get_im}\n本月漏签次数:{sign_missed}"
|
im = f"ark签到成功!\n{get_im}\n本月漏签次数:{sign_missed}"
|
||||||
logger.info(
|
logger.info(f"[ARK签到] {ark_uid} 签到完成, 结果: ark签到成功, 漏签次数: {sign_missed}")
|
||||||
f"[ARK签到] {ark_uid} 签到完成, 结果: ark签到成功, 漏签次数: {sign_missed}"
|
|
||||||
)
|
|
||||||
return im
|
return im
|
||||||
|
|
||||||
|
|
||||||
@ -134,9 +132,7 @@ async def daily_sign():
|
|||||||
delay = 1
|
delay = 1
|
||||||
else:
|
else:
|
||||||
delay = 50 + random.randint(3, 45)
|
delay = 50 + random.randint(3, 45)
|
||||||
logger.info(
|
logger.info(f"[ARK签到] 已签到{len(tasks)}个用户, 等待{delay}秒进行下一次签到")
|
||||||
f"[ARK签到] 已签到{len(tasks)}个用户, 等待{delay}秒进行下一次签到"
|
|
||||||
)
|
|
||||||
tasks.clear()
|
tasks.clear()
|
||||||
already = 0
|
already = 0
|
||||||
await asyncio.sleep(delay)
|
await asyncio.sleep(delay)
|
||||||
|
@ -3,7 +3,9 @@ import re
|
|||||||
from ..utils.ark_api import ark_skd_api
|
from ..utils.ark_api import ark_skd_api
|
||||||
from ..utils.database.models import ArknightsBind, ArknightsPush, ArknightsUser
|
from ..utils.database.models import ArknightsBind, ArknightsPush, ArknightsUser
|
||||||
|
|
||||||
ERROR_HINT = "添加失败, 格式为: skd添加cred Cred 例如: skd添加cred VropL583Sb1hClS5buQ4nSASkDlL8tMT"
|
ERROR_HINT = (
|
||||||
|
"添加失败, 格式为: skd添加cred Cred 例如: skd添加cred VropL583Sb1hClS5buQ4nSASkDlL8tMT"
|
||||||
|
)
|
||||||
UID_HINT = "添加失败, 请先绑定明日方舟UID"
|
UID_HINT = "添加失败, 请先绑定明日方舟UID"
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,7 +26,13 @@ async def text2pic(text: str, max_size: int = 800, font_size: int = 20):
|
|||||||
img = Image.new("RGB", (max_size, len(text) * font_size // 5), (228, 222, 210))
|
img = Image.new("RGB", (max_size, len(text) * font_size // 5), (228, 222, 210))
|
||||||
img_draw = ImageDraw.ImageDraw(img)
|
img_draw = ImageDraw.ImageDraw(img)
|
||||||
y = draw_center_text_by_line(
|
y = draw_center_text_by_line(
|
||||||
img_draw, (25, 0), text, sans_font_20, "black", 750, True
|
img_draw,
|
||||||
|
(25, 0),
|
||||||
|
text,
|
||||||
|
sans_font_20,
|
||||||
|
"black",
|
||||||
|
750,
|
||||||
|
True,
|
||||||
)
|
)
|
||||||
img = img.crop((0, 0, 800, int(y + 30)))
|
img = img.crop((0, 0, 800, int(y + 30)))
|
||||||
return await convert_img(img)
|
return await convert_img(img)
|
||||||
|
@ -172,15 +172,11 @@ async def get_equip_info(char_id: str):
|
|||||||
for blackboard_ in blackboard:
|
for blackboard_ in blackboard:
|
||||||
blackboard_dict[blackboard_.key] = blackboard_.value
|
blackboard_dict[blackboard_.key] = blackboard_.value
|
||||||
if additionalDescription:
|
if additionalDescription:
|
||||||
additionalDescription = re.sub(
|
additionalDescription = re.sub(r"<[^>]+>", "", additionalDescription)
|
||||||
r"<[^>]+>", "", additionalDescription
|
|
||||||
)
|
|
||||||
additionalDescription = render_template(
|
additionalDescription = render_template(
|
||||||
additionalDescription, blackboard_dict
|
additionalDescription, blackboard_dict
|
||||||
)
|
)
|
||||||
additionalDescription = re.sub(
|
additionalDescription = re.sub(r".000000", "", additionalDescription)
|
||||||
r".000000", "", additionalDescription
|
|
||||||
)
|
|
||||||
im += f"{additionalDescription}\n"
|
im += f"{additionalDescription}\n"
|
||||||
|
|
||||||
elif target == "TALENT_DATA_ONLY":
|
elif target == "TALENT_DATA_ONLY":
|
||||||
@ -192,9 +188,7 @@ async def get_equip_info(char_id: str):
|
|||||||
upgradeDescription = candidate.upgradeDescription
|
upgradeDescription = candidate.upgradeDescription
|
||||||
blackboard = candidate.blackboard
|
blackboard = candidate.blackboard
|
||||||
if upgradeDescription and blackboard:
|
if upgradeDescription and blackboard:
|
||||||
upgradeDescription = re.sub(
|
upgradeDescription = re.sub(r"<[^>]+>", "", upgradeDescription)
|
||||||
r"<[^>]+>", "", upgradeDescription
|
|
||||||
)
|
|
||||||
im += f"{upgradeDescription}\n"
|
im += f"{upgradeDescription}\n"
|
||||||
|
|
||||||
elif target == "DISPLAY":
|
elif target == "DISPLAY":
|
||||||
@ -207,15 +201,11 @@ async def get_equip_info(char_id: str):
|
|||||||
for blackboard_ in blackboard:
|
for blackboard_ in blackboard:
|
||||||
blackboard_dict[blackboard_.key] = blackboard_.value
|
blackboard_dict[blackboard_.key] = blackboard_.value
|
||||||
if additionalDescription and blackboard:
|
if additionalDescription and blackboard:
|
||||||
additionalDescription = re.sub(
|
additionalDescription = re.sub(r"<[^>]+>", "", additionalDescription)
|
||||||
r"<[^>]+>", "", additionalDescription
|
|
||||||
)
|
|
||||||
additionalDescription = render_template(
|
additionalDescription = render_template(
|
||||||
additionalDescription, blackboard_dict
|
additionalDescription, blackboard_dict
|
||||||
)
|
)
|
||||||
additionalDescription = re.sub(
|
additionalDescription = re.sub(r".000000", "", additionalDescription)
|
||||||
r".000000", "", additionalDescription
|
|
||||||
)
|
|
||||||
im += f"{additionalDescription}\n"
|
im += f"{additionalDescription}\n"
|
||||||
|
|
||||||
elif target == "TALENT":
|
elif target == "TALENT":
|
||||||
@ -226,9 +216,7 @@ async def get_equip_info(char_id: str):
|
|||||||
if upgradeDescription == "":
|
if upgradeDescription == "":
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
upgradeDescription = re.sub(
|
upgradeDescription = re.sub(r"<[^>]+>", "", upgradeDescription)
|
||||||
r"<[^>]+>", "", upgradeDescription
|
|
||||||
)
|
|
||||||
im += f"{upgradeDescription}\n"
|
im += f"{upgradeDescription}\n"
|
||||||
|
|
||||||
elif target == "TRAIT_DATA_ONLY":
|
elif target == "TRAIT_DATA_ONLY":
|
||||||
@ -241,9 +229,7 @@ async def get_equip_info(char_id: str):
|
|||||||
for blackboard_ in blackboard:
|
for blackboard_ in blackboard:
|
||||||
blackboard_dict[blackboard_.key] = blackboard_.value
|
blackboard_dict[blackboard_.key] = blackboard_.value
|
||||||
if overrideDescripton and blackboard:
|
if overrideDescripton and blackboard:
|
||||||
overrideDescripton = re.sub(
|
overrideDescripton = re.sub(r"<[^>]+>", "", overrideDescripton)
|
||||||
r"<[^>]+>", "", overrideDescripton
|
|
||||||
)
|
|
||||||
overrideDescripton = render_template(
|
overrideDescripton = render_template(
|
||||||
overrideDescripton, blackboard_dict
|
overrideDescripton, blackboard_dict
|
||||||
)
|
)
|
||||||
@ -302,9 +288,7 @@ async def get_wiki_info(char_id: str):
|
|||||||
char_talent_name = talent_candidates[-1].name
|
char_talent_name = talent_candidates[-1].name
|
||||||
char_talent_description = talent_candidates[-1].description
|
char_talent_description = talent_candidates[-1].description
|
||||||
if char_talent_description:
|
if char_talent_description:
|
||||||
char_talent_description = re.sub(
|
char_talent_description = re.sub(r"<[^>]+>", "", char_talent_description)
|
||||||
r"<[^>]+>", "", char_talent_description
|
|
||||||
)
|
|
||||||
im += f"{char_talent_name}: {char_talent_description}\n"
|
im += f"{char_talent_name}: {char_talent_description}\n"
|
||||||
|
|
||||||
char_potential_data = character_data.potentialRanks
|
char_potential_data = character_data.potentialRanks
|
||||||
@ -384,9 +368,9 @@ async def get_wiki_info(char_id: str):
|
|||||||
if skill_description:
|
if skill_description:
|
||||||
skill_description = skill_description.replace(":0.0", "")
|
skill_description = skill_description.replace(":0.0", "")
|
||||||
skill_description = re.sub(r"<[^>]+>", "", skill_description)
|
skill_description = re.sub(r"<[^>]+>", "", skill_description)
|
||||||
skill_description = render_template(
|
skill_description = render_template(skill_description, black_board_dict).replace(
|
||||||
skill_description, black_board_dict
|
"--", "-"
|
||||||
).replace("--", "-")
|
)
|
||||||
last_skill_description = re.sub(r".000000", "", skill_description)
|
last_skill_description = re.sub(r".000000", "", skill_description)
|
||||||
if "{" in last_skill_description:
|
if "{" in last_skill_description:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
@ -668,9 +652,9 @@ async def draw_wiki(char_id: str):
|
|||||||
black_board_dict[black_board.key] = black_board.value
|
black_board_dict[black_board.key] = black_board.value
|
||||||
if skill_description:
|
if skill_description:
|
||||||
skill_description = re.sub(r"<[^>]+>", "", skill_description)
|
skill_description = re.sub(r"<[^>]+>", "", skill_description)
|
||||||
skill_description = render_template(
|
skill_description = render_template(skill_description, black_board_dict).replace(
|
||||||
skill_description, black_board_dict
|
"--", "-"
|
||||||
).replace("--", "-")
|
)
|
||||||
last_skill_description = re.sub(r".000000", "", skill_description)
|
last_skill_description = re.sub(r".000000", "", skill_description)
|
||||||
if "{" in last_skill_description:
|
if "{" in last_skill_description:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -52,7 +52,9 @@ class BaseArkApi:
|
|||||||
proxy_url: Union[str, None] = proxy_url if proxy_url else None
|
proxy_url: Union[str, None] = proxy_url if proxy_url else None
|
||||||
|
|
||||||
async def _pass(
|
async def _pass(
|
||||||
self, gt: str, ch: str
|
self,
|
||||||
|
gt: str,
|
||||||
|
ch: str,
|
||||||
) -> Tuple[Union[str, None], Union[str, None]]:
|
) -> Tuple[Union[str, None], Union[str, None]]:
|
||||||
_pass_api = core_plugins_config.get_config("_pass_API").data
|
_pass_api = core_plugins_config.get_config("_pass_API").data
|
||||||
if _pass_api:
|
if _pass_api:
|
||||||
@ -71,10 +73,12 @@ class BaseArkApi:
|
|||||||
return validate, ch
|
return validate, ch
|
||||||
|
|
||||||
async def get_game_player_info(
|
async def get_game_player_info(
|
||||||
self, uid: str
|
self,
|
||||||
|
uid: str,
|
||||||
) -> Union[int, ArknightsPlayerInfoModel]:
|
) -> Union[int, ArknightsPlayerInfoModel]:
|
||||||
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||||
uid=uid, attr="cred"
|
uid=uid,
|
||||||
|
attr="cred",
|
||||||
)
|
)
|
||||||
if cred is None:
|
if cred is None:
|
||||||
return -60
|
return -60
|
||||||
@ -102,7 +106,8 @@ class BaseArkApi:
|
|||||||
|
|
||||||
async def skd_sign(self, uid: str) -> Union[int, ArknightsAttendanceModel]:
|
async def skd_sign(self, uid: str) -> Union[int, ArknightsAttendanceModel]:
|
||||||
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||||
uid=uid, attr="cred"
|
uid=uid,
|
||||||
|
attr="cred",
|
||||||
)
|
)
|
||||||
if cred is None:
|
if cred is None:
|
||||||
return -60
|
return -60
|
||||||
@ -137,10 +142,12 @@ class BaseArkApi:
|
|||||||
return msgspec.convert(unpack_data, ArknightsAttendanceModel)
|
return msgspec.convert(unpack_data, ArknightsAttendanceModel)
|
||||||
|
|
||||||
async def get_sign_info(
|
async def get_sign_info(
|
||||||
self, uid: str
|
self,
|
||||||
|
uid: str,
|
||||||
) -> Union[int, ArknightsAttendanceCalendarModel]:
|
) -> Union[int, ArknightsAttendanceCalendarModel]:
|
||||||
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||||
uid=uid, attr="cred"
|
uid=uid,
|
||||||
|
attr="cred",
|
||||||
)
|
)
|
||||||
if cred is None:
|
if cred is None:
|
||||||
return -60
|
return -60
|
||||||
@ -187,7 +194,10 @@ class BaseArkApi:
|
|||||||
cred = (
|
cred = (
|
||||||
cred
|
cred
|
||||||
if cred
|
if cred
|
||||||
else await ArknightsUser.get_user_attr_by_uid(uid=uid, attr="cred")
|
else await ArknightsUser.get_user_attr_by_uid(
|
||||||
|
uid=uid,
|
||||||
|
attr="cred",
|
||||||
|
)
|
||||||
)
|
)
|
||||||
header = deepcopy(_HEADER)
|
header = deepcopy(_HEADER)
|
||||||
if cred is None:
|
if cred is None:
|
||||||
@ -222,7 +232,9 @@ class BaseArkApi:
|
|||||||
uid = await ArknightsUser.get_uid_by_cred(cred)
|
uid = await ArknightsUser.get_uid_by_cred(cred)
|
||||||
if uid is not None:
|
if uid is not None:
|
||||||
await ArknightsUser.update_user_attr_by_uid(
|
await ArknightsUser.update_user_attr_by_uid(
|
||||||
uid=uid, attr="token", value=token
|
uid=uid,
|
||||||
|
attr="token",
|
||||||
|
value=token,
|
||||||
)
|
)
|
||||||
return token
|
return token
|
||||||
|
|
||||||
@ -263,12 +275,7 @@ class BaseArkApi:
|
|||||||
raise Exception("token is None")
|
raise Exception("token is None")
|
||||||
encode_token = token.encode("utf-8")
|
encode_token = token.encode("utf-8")
|
||||||
hex_s = hmac.new(encode_token, str2.encode("utf-8"), hashlib.sha256).hexdigest()
|
hex_s = hmac.new(encode_token, str2.encode("utf-8"), hashlib.sha256).hexdigest()
|
||||||
sign = (
|
sign = hashlib.md5(hex_s.encode("utf-8")).hexdigest().encode("utf-8").decode("utf-8")
|
||||||
hashlib.md5(hex_s.encode("utf-8"))
|
|
||||||
.hexdigest()
|
|
||||||
.encode("utf-8")
|
|
||||||
.decode("utf-8")
|
|
||||||
)
|
|
||||||
header["sign"] = sign
|
header["sign"] = sign
|
||||||
header["timestamp"] = timestamp
|
header["timestamp"] = timestamp
|
||||||
header["dId"] = dId
|
header["dId"] = dId
|
||||||
@ -317,7 +324,7 @@ class BaseArkApi:
|
|||||||
use_proxy: Union[bool, None] = False,
|
use_proxy: Union[bool, None] = False,
|
||||||
) -> Union[Dict, Union[int, None]]:
|
) -> Union[Dict, Union[int, None]]:
|
||||||
async with ClientSession(
|
async with ClientSession(
|
||||||
connector=TCPConnector(verify_ssl=ssl_verify)
|
connector=TCPConnector(verify_ssl=ssl_verify),
|
||||||
) as client:
|
) as client:
|
||||||
raw_data = {}
|
raw_data = {}
|
||||||
if "cred" not in header:
|
if "cred" not in header:
|
||||||
|
@ -40,9 +40,7 @@ class ArknightsUser(User, table=True):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@with_session
|
@with_session
|
||||||
async def get_all_user(
|
async def get_all_user(cls: Type[T_ARK_User], session: AsyncSession) -> Sequence[T_ARK_User]:
|
||||||
cls: Type[T_ARK_User], session: AsyncSession
|
|
||||||
) -> Sequence[T_ARK_User]:
|
|
||||||
sql = select(cls).where(cls.cred is not None, cls.cred != "")
|
sql = select(cls).where(cls.cred is not None, cls.cred != "")
|
||||||
result = await session.execute(sql)
|
result = await session.execute(sql)
|
||||||
data: Sequence[T_ARK_User] = result.scalars().all()
|
data: Sequence[T_ARK_User] = result.scalars().all()
|
||||||
@ -88,13 +86,9 @@ class ArknightsPush(Push, table=True):
|
|||||||
ap_is_push: Union[bool, None] = Field(default=False, title="理智是否已经推送")
|
ap_is_push: Union[bool, None] = Field(default=False, title="理智是否已经推送")
|
||||||
training_push: Union[bool, None] = Field(default=False, title="训练室推送")
|
training_push: Union[bool, None] = Field(default=False, title="训练室推送")
|
||||||
training_value: Union[int, None] = Field(default=30, title="训练室推送阈值")
|
training_value: Union[int, None] = Field(default=30, title="训练室推送阈值")
|
||||||
training_is_push: Union[bool, None] = Field(
|
training_is_push: Union[bool, None] = Field(default=False, title="训练室是否已经推送")
|
||||||
default=False, title="训练室是否已经推送"
|
|
||||||
)
|
|
||||||
version_push: Union[bool, None] = Field(default=False, title="版本更新推送")
|
version_push: Union[bool, None] = Field(default=False, title="版本更新推送")
|
||||||
version_is_push: Union[bool, None] = Field(
|
version_is_push: Union[bool, None] = Field(default=False, title="版本更新是否已经推送")
|
||||||
default=False, title="版本更新是否已经推送"
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def insert_push_data(cls, bot_id: str, uid: str, skd_uid: str):
|
async def insert_push_data(cls, bot_id: str, uid: str, skd_uid: str):
|
||||||
@ -144,9 +138,7 @@ class ArknightsPush(Push, table=True):
|
|||||||
await cls.update_push_data(uid, {f"{mode}_is_push": status})
|
await cls.update_push_data(uid, {f"{mode}_is_push": status})
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def select_push_data(
|
async def select_push_data(cls: Type[T_BaseIDModel], uid: str) -> Union[T_BaseIDModel, None]:
|
||||||
cls: Type[T_BaseIDModel], uid: str
|
|
||||||
) -> Union[T_BaseIDModel, None]:
|
|
||||||
return await cls.base_select_data(uid=uid)
|
return await cls.base_select_data(uid=uid)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -318,9 +318,7 @@ class BuildingDataCustomDataDiyUISortTemplateListData(BaseStruct):
|
|||||||
expandState: str
|
expandState: str
|
||||||
defaultTemplateIndex: int
|
defaultTemplateIndex: int
|
||||||
defaultTemplateOrder: str
|
defaultTemplateOrder: str
|
||||||
templates: List[
|
templates: List[BuildingDataCustomDataDiyUISortTemplateListDataDiyUISortTemplateData]
|
||||||
BuildingDataCustomDataDiyUISortTemplateListDataDiyUISortTemplateData
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class BuildingDataCustomData(BaseStruct):
|
class BuildingDataCustomData(BaseStruct):
|
||||||
|
@ -130,6 +130,13 @@ class GachaDataFesGachaPoolRelateItem(BaseStruct):
|
|||||||
rarityRank6ItemId: str
|
rarityRank6ItemId: str
|
||||||
|
|
||||||
|
|
||||||
|
class GachaNormalItem(BaseStruct):
|
||||||
|
itemId: str
|
||||||
|
endTime: int
|
||||||
|
gachaPoolId: str
|
||||||
|
isTen: bool
|
||||||
|
|
||||||
|
|
||||||
class GachaTable(BaseStruct):
|
class GachaTable(BaseStruct):
|
||||||
__version__ = "24-02-02-10-18-07-831ad8"
|
__version__ = "24-02-02-10-18-07-831ad8"
|
||||||
|
|
||||||
@ -137,6 +144,7 @@ class GachaTable(BaseStruct):
|
|||||||
carousel: List[GachaDataCarouselData]
|
carousel: List[GachaDataCarouselData]
|
||||||
classicPotentialMaterialConverter: PotentialMaterialConverterConfig
|
classicPotentialMaterialConverter: PotentialMaterialConverterConfig
|
||||||
dicRecruit6StarHint: Union[Dict[str, str], None]
|
dicRecruit6StarHint: Union[Dict[str, str], None]
|
||||||
|
normalGachaItem: List[GachaNormalItem]
|
||||||
fesGachaPoolRelateItem: Union[
|
fesGachaPoolRelateItem: Union[
|
||||||
Dict[str, GachaDataFesGachaPoolRelateItem],
|
Dict[str, GachaDataFesGachaPoolRelateItem],
|
||||||
None,
|
None,
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
ArknightsUID_version = "0.1.0"
|
ArknightsUID_version = "0.1.0"
|
||||||
Arknights_Client_version = "2.2.21"
|
Arknights_Client_version = "2.2.41"
|
||||||
Arknights_Res_version = "24-03-29-14-33-44-5002d2"
|
Arknights_Res_version = "24-04-26-09-22-08-413e02"
|
||||||
|
@ -56,7 +56,7 @@ pythonVersion = "3.8"
|
|||||||
pythonPlatform = "All"
|
pythonPlatform = "All"
|
||||||
|
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
line-length = 88
|
line-length = 98
|
||||||
target-version = "py38"
|
target-version = "py38"
|
||||||
|
|
||||||
[tool.ruff.lint]
|
[tool.ruff.lint]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user