fix(task): 修复扭蛋在慢速设备下的两个问题

1. 加载页面超时导致获取按钮失败
2. 进入扭蛋结果页面时超时导致判定为硬币不足
This commit is contained in:
XcantloadX 2025-03-15 20:37:05 +08:00
parent 05e471ab07
commit 8f7650e526
2 changed files with 26 additions and 18 deletions

View File

@ -1 +1 @@
{"definitions":{"26ce71b2-59dc-4237-b50f-41690d7b8ecf":{"name":"Daily.CapsuleToys.NextPageStartPoint","displayName":"日常 扭蛋 下一页起始点","type":"hint-point","annotationId":"26ce71b2-59dc-4237-b50f-41690d7b8ecf","useHintRect":false,"description":"扭蛋页面翻页时的起始点"},"ada5c1e1-1524-4476-bdf9-aa0aab8b35ad":{"name":"Daily.CapsuleToys.NextPageEndPoint","displayName":"日常 扭蛋 下一页终点","type":"hint-point","annotationId":"ada5c1e1-1524-4476-bdf9-aa0aab8b35ad","useHintRect":false,"description":"扭蛋页面翻页时的终点"}},"annotations":[{"id":"26ce71b2-59dc-4237-b50f-41690d7b8ecf","type":"point","data":{"x":360,"y":1167}},{"id":"ada5c1e1-1524-4476-bdf9-aa0aab8b35ad","type":"point","data":{"x":362,"y":267}}]}
{"definitions":{"26ce71b2-59dc-4237-b50f-41690d7b8ecf":{"name":"Daily.CapsuleToys.NextPageStartPoint","displayName":"日常 扭蛋 下一页起始点","type":"hint-point","annotationId":"26ce71b2-59dc-4237-b50f-41690d7b8ecf","useHintRect":false,"description":"扭蛋页面翻页时的起始点"},"ada5c1e1-1524-4476-bdf9-aa0aab8b35ad":{"name":"Daily.CapsuleToys.NextPageEndPoint","displayName":"日常 扭蛋 下一页终点","type":"hint-point","annotationId":"ada5c1e1-1524-4476-bdf9-aa0aab8b35ad","useHintRect":false,"description":"扭蛋页面翻页时的终点"},"2bd6fe88-99fa-443d-8e42-bb3de5881213":{"name":"Daily.CapsuleToys.IconTitle","displayName":"日常 扭蛋 页面标题图标","type":"template","annotationId":"2bd6fe88-99fa-443d-8e42-bb3de5881213","useHintRect":false}},"annotations":[{"id":"26ce71b2-59dc-4237-b50f-41690d7b8ecf","type":"point","data":{"x":360,"y":1167}},{"id":"ada5c1e1-1524-4476-bdf9-aa0aab8b35ad","type":"point","data":{"x":362,"y":267}},{"id":"2bd6fe88-99fa-443d-8e42-bb3de5881213","type":"rect","data":{"x1":14,"y1":34,"x2":60,"y2":78}}]}

View File

@ -1,7 +1,7 @@
"""扭蛋机,支持任意次数的任意扭蛋类型"""
import logging
from kotonebot import task, action, device, image, sleep
from kotonebot import task, action, device, image, sleep, Interval
from kotonebot.backend.image import TemplateMatchResult
from . import R
from .common import conf
@ -30,20 +30,27 @@ def draw_capsule_toys(button: TemplateMatchResult, times: int):
)
sleep(0.5)
# 点击加号按钮
add_button = image.expect_wait(R.Daily.ButtonShopCountAdd, timeout=5)
for _ in range(times):
device.click(add_button)
sleep(0.5)
# 点击确认按钮
device.click(image.expect_wait(R.Common.ButtonConfirm, timeout=5))
sleep(0.5)
# 点击关闭按钮(这里同时处理了两种情况:成功,关闭提示页面;扭蛋次数不足,关闭抽扭蛋页面)
if image.wait_for(R.Common.ButtonIconClose, timeout=5):
device.click()
sleep(1)
confirm_button = image.find(R.Common.ButtonConfirm, colored=True)
if confirm_button is None:
# 硬币不足
logger.info('Not enough coins.')
else:
# 硬币足够
add_button = image.expect_wait(R.Daily.ButtonShopCountAdd, timeout=5)
for _ in range(times):
device.click(add_button)
sleep(0.5)
device.click(confirm_button)
sleep(0.5)
# 等待动画完成
it = Interval()
while True:
if image.find(R.Common.ButtonIconClose):
device.click()
elif image.find(R.Daily.CapsuleToys.IconTitle):
break
it.wait()
@action('获取抽扭蛋按钮')
def get_capsule_toys_draw_buttons():
@ -84,7 +91,8 @@ def capsule_toys():
logger.info('Entering Capsule Toys page')
device.click(image.expect_wait(R.Daily.ButtonShop, timeout=5))
device.click(image.expect_wait(R.Daily.ButtonShopCapsuleToys, timeout=5))
sleep(1)
# 等待加载
image.expect_wait(R.Daily.CapsuleToys.IconTitle)
# 处理好友扭蛋和感性扭蛋
buttons = get_capsule_toys_draw_buttons();
@ -109,7 +117,7 @@ def capsule_toys():
sleep(1) # 等待滑动静止由于swipe duration失效所以这里需要手动等待
# 处理逻辑扭蛋扭蛋和非凡扭蛋
buttons = get_capsule_toys_draw_buttons();
buttons = get_capsule_toys_draw_buttons()
if len(buttons) != 2:
return