diff --git a/README.md b/README.md
index c7d7a1c3..5dc414a8 100644
--- a/README.md
+++ b/README.md
@@ -331,6 +331,10 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能
## 更新
+### 2023/3/27
+
+* 优化开箱更新
+
### 2023/3/25
* 删除BUFF_SKIN表约束,新增`skin_id`字段
diff --git a/plugins/genshin/query_user/_models/__init__.py b/plugins/genshin/query_user/_models/__init__.py
index c33b83c5..0b5a9043 100644
--- a/plugins/genshin/query_user/_models/__init__.py
+++ b/plugins/genshin/query_user/_models/__init__.py
@@ -93,3 +93,14 @@ class Genshin(Model):
await user.save(update_fields=["today_query_uid"])
return user.cookie
return None
+
+ @classmethod
+ async def _run_script(cls):
+ return [
+ "ALTER TABLE genshin ADD auto_sign_time timestamp with time zone;",
+ "ALTER TABLE genshin ADD resin_remind boolean DEFAULT False;",
+ "ALTER TABLE genshin ADD resin_recovery_time timestamp with time zone;",
+ "ALTER TABLE genshin ADD login_ticket VARCHAR(255) DEFAULT '';"
+ "ALTER TABLE genshin ADD stuid VARCHAR(255) DEFAULT '';"
+ "ALTER TABLE genshin ADD stoken VARCHAR(255) DEFAULT '';",
+ ]
diff --git a/plugins/open_cases/__init__.py b/plugins/open_cases/__init__.py
index 6edb1e91..2d3d5d4c 100755
--- a/plugins/open_cases/__init__.py
+++ b/plugins/open_cases/__init__.py
@@ -226,19 +226,21 @@ async def _(event: MessageEvent, arg: Message = CommandArg(), cmd: str = OneComm
type_ = "罕见皮肤"
await update_case.send(f"即将更新所有{type_}, 请稍等")
for i, case_name in enumerate(case_list):
- try:
- await update_skin_data(case_name)
- rand = random.randint(300, 500)
- result = f"更新全部{type_}完成"
- if i < len(case_list):
- next_case = case_list[i + 1]
- result = f"将在 {rand} 秒后更新下一{type_}: {next_case}"
- await update_case.send(f"成功更新{type_}: {case_name}, {result}")
- logger.info(f"成功更新{type_}: {case_name}, {result}", "更新武器箱")
- await asyncio.sleep(rand)
- except Exception as e:
- logger.error(f"更新{type_}: {case_name}", e=e)
- await update_case.send(f"更新{type_}: {case_name} 发生错误: {type(e)}: {e}")
+ # try:
+ info = await update_skin_data(case_name)
+ if "请先登录" in info:
+ await update_case.finish(f"未登录, 已停止更新...")
+ rand = random.randint(300, 500)
+ result = f"更新全部{type_}完成"
+ if i < len(case_list):
+ next_case = case_list[i + 1]
+ result = f"将在 {rand} 秒后更新下一{type_}: {next_case}"
+ await update_case.send(f"{info}, {result}")
+ logger.info(f"info, {result}", "更新武器箱")
+ await asyncio.sleep(rand)
+ # except Exception as e:
+ # logger.error(f"更新{type_}: {case_name}", e=e)
+ # await update_case.send(f"更新{type_}: {case_name} 发生错误: {type(e)}: {e}")
await update_case.send(f"更新全部{type_}完成")
else:
await update_case.send(f"开始{cmd}: {msg}, 请稍等")
diff --git a/plugins/open_cases/config.py b/plugins/open_cases/config.py
index e2f376cb..43afbecb 100755
--- a/plugins/open_cases/config.py
+++ b/plugins/open_cases/config.py
@@ -131,12 +131,12 @@ CASE2ID = {
"光谱2号": "set_community_18",
"九头蛇大行动": "set_community_17",
"光谱": "set_community_16",
- "手套武器箱": "set_community_15",
+ "手套": "set_community_15",
"伽玛2号": "set_gamma_2",
"伽玛": "set_community_13",
"幻彩3号": "set_community_12",
"野火大行动": "set_community_11",
- "左轮武器箱": "set_community_10",
+ "左轮": "set_community_10",
"暗影": "set_community_9",
"弯曲猎手": "set_community_8",
"幻彩2号": "set_community_7",
@@ -211,6 +211,7 @@ async def random_skin(num: int, case_name: str) -> List[Tuple[BuffSkin, float]]:
"""
随机抽取皮肤
"""
+ case_name = case_name.replace("武器箱", "").replace(" ", "")
color_map = {}
for _ in range(num):
rand = random.random()
diff --git a/plugins/open_cases/models/buff_skin.py b/plugins/open_cases/models/buff_skin.py
index 70997eda..2db4903e 100644
--- a/plugins/open_cases/models/buff_skin.py
+++ b/plugins/open_cases/models/buff_skin.py
@@ -91,4 +91,6 @@ class BuffSkin(Model):
"ALTER TABLE buff_skin ADD sell_reference_price float DEFAULT 0;", # 新增sell_reference_price
"ALTER TABLE buff_skin DROP COLUMN skin_price;", # 删除skin_price
"alter table buff_skin drop constraint if EXISTS uid_buff_skin_case_na_c35c93;", # 删除唯一约束
+ "UPDATE buff_skin set case_name='手套' where case_name='手套武器箱'",
+ "UPDATE buff_skin set case_name='左轮' where case_name='左轮武器箱'",
]
diff --git a/plugins/open_cases/models/buff_skin_log.py b/plugins/open_cases/models/buff_skin_log.py
index 10279453..dd67e4c8 100644
--- a/plugins/open_cases/models/buff_skin_log.py
+++ b/plugins/open_cases/models/buff_skin_log.py
@@ -42,3 +42,10 @@ class BuffSkinLog(Model):
class Meta:
table = "buff_skin_log"
table_description = "Buff皮肤更新日志表"
+
+ @classmethod
+ async def _run_script(cls):
+ return [
+ "UPDATE buff_skin_log set case_name='手套' where case_name='手套武器箱'",
+ "UPDATE buff_skin_log set case_name='左轮' where case_name='左轮武器箱'",
+ ]
diff --git a/plugins/open_cases/utils.py b/plugins/open_cases/utils.py
index 6d6b7ee6..9b72d3ee 100755
--- a/plugins/open_cases/utils.py
+++ b/plugins/open_cases/utils.py
@@ -103,7 +103,12 @@ async def update_skin_data(name: str) -> str:
if skin.skin_id in exists_id_list:
continue
if skin.case_name:
- skin.case_name = skin.case_name.replace("“", "").replace("”", "")
+ skin.case_name = (
+ skin.case_name.replace("”", "")
+ .replace("“", "")
+ .replace("武器箱", "")
+ .replace(" ", "")
+ )
exists_id_list.append(skin.skin_id)
key = skin.name + skin.skin_name
name_ = skin.name + skin.skin_name + skin.abrasion
@@ -123,7 +128,8 @@ async def update_skin_data(name: str) -> str:
case_name = "未知武器箱"
else:
weapon2case[key] = case_name
- case_name = case_name.replace("”", "").replace("“", "")
+ if skin.case_name == "反恐精英20周年":
+ skin.case_name = "CS20"
skin.case_name = case_name
if skin.skin_id in db_skin_id_list:
update_list.append(skin)
@@ -211,7 +217,7 @@ async def update_skin_data(name: str) -> str:
logger.debug(f"更新武器箱/皮肤: [{name}], 新增 {len(log_list)} 条皮肤日志!")
await BuffSkinLog.bulk_create(log_list)
if name not in CaseManager.CURRENT_CASES:
- CaseManager.CURRENT_CASES.append(case_name) # type: ignore
+ CaseManager.CURRENT_CASES.append(name) # type: ignore
return f"更新武器箱/皮肤: [{name}] 成功, 共更新 {len(update_list)} 个皮肤, 新创建 {len(create_list)} 个皮肤!"
@@ -268,7 +274,7 @@ async def search_skin_page(
if not response:
return f"访问发生异常: {error}", -1
if response.status_code == 200:
- logger.debug(f"访问BUFF API: {response.text}", "开箱更新")
+ # logger.debug(f"访问BUFF API: {response.text}", "开箱更新")
json_data = response.json()
update_data = []
if json_data["code"] == "OK":
@@ -512,7 +518,13 @@ async def get_skin_case(id_: str) -> Optional[str]:
if response.status_code == 200:
text = response.text
if r := re.search('', text):
- return r.group(1)
+ return (
+ r.group(1)
+ .replace("”", "")
+ .replace("“", "")
+ .replace("武器箱", "")
+ .replace(" ", "")
+ )
else:
logger.debug(f"访问皮肤所属武器箱异常 url: {url} code: {response.status_code}")
return None