fix(task): bug修复
This commit is contained in:
parent
3e698a6ae7
commit
5c0fe2b37a
|
@ -1,5 +1,6 @@
|
|||
import os
|
||||
import sqlite3
|
||||
import threading
|
||||
from logging import getLogger
|
||||
from typing import Any, cast, Dict, List, Optional
|
||||
|
||||
from kotonebot.kaa import resources as res
|
||||
|
@ -7,17 +8,30 @@ from kotonebot.kaa import resources as res
|
|||
_db: sqlite3.Connection | None = None
|
||||
_db_path = cast(str, res.__path__)[0] + '/game.db'
|
||||
|
||||
_db_dict = {}
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
||||
def _dict_factory(cursor, row):
|
||||
"""将查询结果转换为字典格式"""
|
||||
return {col[0]: row[idx] for idx, col in enumerate(cursor.description)}
|
||||
|
||||
|
||||
def _ensure_db() -> sqlite3.Connection:
|
||||
"""确保数据库连接已建立"""
|
||||
global _db
|
||||
if not _db:
|
||||
_db = sqlite3.connect(_db_path)
|
||||
_db.row_factory = _dict_factory
|
||||
return _db
|
||||
"""
|
||||
确保数据库连接已建立
|
||||
培育过程是新开线程,不同线程的connection不能使用
|
||||
# TODO 培育结束需要关闭connection
|
||||
"""
|
||||
global _db_dict
|
||||
thread_id = threading.current_thread().ident
|
||||
if thread_id not in _db_dict:
|
||||
_db_dict[thread_id] = sqlite3.connect(_db_path)
|
||||
_db_dict[thread_id].row_factory = _dict_factory
|
||||
logger.info("Database connection established for thread: %s", thread_id)
|
||||
return _db_dict[thread_id]
|
||||
|
||||
|
||||
def select_many(query: str, *args) -> List[Dict[str, Any]]:
|
||||
"""执行查询并返回多行结果,每行为字典格式"""
|
||||
|
|
|
@ -8,8 +8,6 @@ from kotonebot.kaa.db.constants import ExamEffectType
|
|||
class SingleDeckConfig(ConfigBaseModel):
|
||||
# 角色流派。目前只考虑ExamEffectType,温存目前分全力温存和强气温存,所以没有温存设置。
|
||||
archetype: ExamEffectType
|
||||
# 当可选卡不在设置中,是否优先选择其中的一次性卡?false会直接进行刷新
|
||||
select_once_card_before_refresh: bool = True
|
||||
# 核心卡,在商店页面会购买
|
||||
core_cards: list[str] = []
|
||||
# 高优先度卡
|
||||
|
|
|
@ -15,11 +15,9 @@ class GlobalIdolSetting:
|
|||
self.need_update: bool = True
|
||||
self.idol_archetype: ExamEffectType = ExamEffectType.good_impression
|
||||
self.card_deck: dict = {}
|
||||
self.select_once_card_before_refresh = True
|
||||
|
||||
def new_play(self):
|
||||
self.need_update = True
|
||||
self.select_once_card_before_refresh = True
|
||||
self.card_deck.clear()
|
||||
logger.info("New game, wait for update")
|
||||
|
||||
|
@ -53,7 +51,6 @@ class GlobalIdolSetting:
|
|||
self.card_deck.update({card: CardPriority.medium for card in card_deck_config.medium_priority_cards})
|
||||
self.card_deck.update({card: CardPriority.high for card in card_deck_config.high_priority_cards})
|
||||
self.card_deck.update({card: CardPriority.core for card in card_deck_config.core_cards})
|
||||
self.select_once_card_before_refresh = card_deck_config.select_once_card_before_refresh
|
||||
|
||||
def get_card_priority(self, card_id: str) -> CardPriority:
|
||||
"""
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"pre_built_deck": [
|
||||
{
|
||||
"archetype": "ProduceExamEffectType_ExamParameterBuff",
|
||||
"select_once_card_before_refresh": false,
|
||||
"core_cards": [
|
||||
"p_card-01-act-3_049",
|
||||
"p_card-01-men-3_006",
|
||||
|
@ -46,7 +45,6 @@
|
|||
},
|
||||
{
|
||||
"archetype": "ProduceExamEffectType_ExamLessonBuff",
|
||||
"select_once_card_before_refresh": false,
|
||||
"core_cards": [
|
||||
"p_card-01-act-3_049",
|
||||
"p_card-01-men-3_006",
|
||||
|
@ -90,7 +88,6 @@
|
|||
},
|
||||
{
|
||||
"archetype": "ProduceExamEffectType_ExamReview",
|
||||
"select_once_card_before_refresh": false,
|
||||
"core_cards": [
|
||||
"p_card-02-act-3_050",
|
||||
"p_card-02-men-3_002",
|
||||
|
@ -132,7 +129,6 @@
|
|||
},
|
||||
{
|
||||
"archetype": "ProduceExamEffectType_ExamCardPlayAggressive",
|
||||
"select_once_card_before_refresh": false,
|
||||
"core_cards": [
|
||||
"p_card-02-men-3_002",
|
||||
"p_card-02-men-3_040",
|
||||
|
@ -169,7 +165,6 @@
|
|||
},
|
||||
{
|
||||
"archetype": "ProduceExamEffectType_ExamConcentration",
|
||||
"select_once_card_before_refresh": false,
|
||||
"core_cards": [
|
||||
"p_card-03-men-3_058",
|
||||
"p_card-03-men-3_061"
|
||||
|
@ -208,7 +203,6 @@
|
|||
},
|
||||
{
|
||||
"archetype": "ProduceExamEffectType_ExamFullPower",
|
||||
"select_once_card_before_refresh": false,
|
||||
"core_cards": [
|
||||
"p_card-03-men-2_075",
|
||||
"p_card-03-men-3_058"
|
||||
|
|
|
@ -40,7 +40,7 @@ def select_skill_card():
|
|||
skill_card_elements = extract_cards(img)
|
||||
if skill_card_elements:
|
||||
cards = [ActualCard.create_by(skill_card_element) for skill_card_element in skill_card_elements]
|
||||
cards = sorted(cards, reverse=True)
|
||||
cards = sorted(cards)
|
||||
target_card = cards[0]
|
||||
select_suggest = False
|
||||
|
||||
|
@ -49,7 +49,7 @@ def select_skill_card():
|
|||
if try_refresh_skill_card(target_card.skill_card_element.rect):
|
||||
it.wait()
|
||||
continue
|
||||
# 如果没刷新次数,尝试选取除外卡
|
||||
# 如果没刷新次数,尝试选取除外卡,没有除外卡才选择推荐卡
|
||||
if once_cards := [card for card in cards if card.lost()]:
|
||||
target_card = once_cards[0]
|
||||
else:
|
||||
|
@ -57,10 +57,10 @@ def select_skill_card():
|
|||
if select_suggest:
|
||||
# 既没有刷新,也没有除外卡,选择推荐卡
|
||||
card_rect = find_recommended_card_rect([card.skill_card_element.rect for card in cards])
|
||||
logger.info(f"select recommended card")
|
||||
logger.info(f"Select recommended card")
|
||||
device.click(card_rect)
|
||||
else:
|
||||
logger.info(f"select {target_card.skill_card_element.skill_card.name}")
|
||||
logger.info(f"Select {target_card.skill_card_element.skill_card.name}")
|
||||
device.click(target_card.skill_card_element.rect)
|
||||
it.wait()
|
||||
|
||||
|
|
Loading…
Reference in New Issue