活动室汇总邮件通知
All checks were successful
ci/woodpecker/push/check_format Pipeline was successful

This commit is contained in:
Elaina 2025-02-02 15:55:20 +08:00
parent 3d0621c84b
commit c5571899d3

View file

@ -2,6 +2,7 @@ from mower.solvers.fight.battle_choose.battle_fill_choose import BattleFillChoos
from mower.solvers.infra.base_mixin import BaseMixin
from mower.utils import config
from mower.utils.character_recognize import match_avatar
from mower.utils.email import assistants_template, send_message
from mower.utils.recognize import Scene
from mower.utils.solver import BaseSolver
@ -13,14 +14,25 @@ class SwitchActivityUsersSolver(BaseSolver, BaseMixin):
def run(self):
self.flag = True
self.limit = config.conf.trust_limit # 设置的信赖值阈值
self.assistants_before = [] # 记录切换前的干员
self.assistants_after = [] # 记录切换后的干员
self.black_list = []
for i in range(1, 4):
if not self.flag:
break
self.num = i
if EnterActivitySolver().run(i):
self.switched = False
self.need_switch = False
super().run()
send_message(
assistants_template.render(
assistants_before=self.assistants_before,
assistants_after=self.assistants_after,
limit=str(self.limit) + "%",
),
"活动室信赖汇总通知",
"INFO",
)
def detect_oper(self) -> str:
return match_avatar(
@ -32,15 +44,8 @@ class SwitchActivityUsersSolver(BaseSolver, BaseMixin):
if (scene := self.scene()) == Scene.ACTIVITY_ROOM_DETAILS:
if self.animation(ratio=0.2):
return
if (
self.find("no_user")
or config.recog.num.number_int(
"riic_base", ((220, 920), (330, 970)), 23, 130, rect_ed=-3
)
>= config.conf.trust_limit
):
if self.switched:
self.flag = False
if self.need_switch and not self.switched:
if not self.flag:
return True
if self.find("user_on"):
self.ctap((1550, 480), 3)
@ -48,7 +53,30 @@ class SwitchActivityUsersSolver(BaseSolver, BaseMixin):
return
self.ctap("user", 3)
return
return True
if self.find("no_user"):
self.assistants_before.append(["活动室" + str(self.num), None])
self.need_switch = True
else:
oper = self.detect_oper()
num = config.recog.num.number_int(
"riic_base", ((220, 920), (330, 970)), 23, 130, rect_ed=-3
)
if self.switched:
self.assistants_after.append(
["活动室" + str(self.num), oper, str(num) + "%"]
)
if num >= self.limit:
self.flag = False
return True
self.assistants_before.append(
["活动室" + str(self.num), oper, str(num) + "%"]
)
if num >= self.limit:
self.need_switch = True
return
return True
elif scene == Scene.OPERATOR_AGENT_SELECT:
name = BattleFillChooseSolver().run("信赖值", 1, self.black_list)
self.black_list.append(name[0])