StarRailAssistant
StarRailAssistant copied to clipboard
[功能请求] 点击小月卡领取以及定时启动功能
原因
我想在每天4点小怪刷新之后自动锄地,这样醒来之后可以直接完成每日任务的一些项。 凌晨自动锄地的时候可能会因为小月卡的领取界面卡住不动。
功能简述
1.选择地图后增加一个选项,询问是否要定时启动,输入-1直接开始,输入时间则到点再开始。 2.在大地图上时如果跳出了小月卡的领取界面则自动点击跳过。
功能逻辑
1.选择完功能或地图后,询问用户是否要定时启动,并让用户输入时间,用户输入-1或类似于1234的时间,前者直接开始功能,后者等到12点34分时自动启动
实现参考
定义一个函数,接受一个4位数作为参数,然后执行之前的逻辑
def run_at_time(num): # 导入datetime模块 import datetime
# 定义一个函数,将4位数转换为datetime对象
def convert_to_datetime(num):
# 检查输入是否是4位数
if len(str(num)) != 4:
print("请输入一个4位数")
return None
# 提取小时和分钟
hour = int(str(num)[:2])
minute = int(str(num)[2:])
# 检查小时和分钟是否有效
if hour < 0 or hour > 23 or minute < 0 or minute > 59:
print("请输入一个有效的时间")
return None
# 获取当前日期
today = datetime.date.today()
# 创建一个datetime对象
dt = datetime.datetime(today.year, today.month, today.day, hour, minute)
return dt
# 调用函数,将用户输入转换为datetime对象
user_time = convert_to_datetime(num)
# 如果转换成功,继续执行
if user_time is not None:
# 获取当前时间
current_time = datetime.datetime.now()
# 计算时间差
delta = user_time - current_time
# 如果时间差为正,每秒刷新剩余时间
if delta.total_seconds() > 0:
# 导入time模块
import time
# 循环直到时间差为0
while delta.total_seconds() > 0:
# 打印剩余时间
print(f"剩余{delta.total_seconds()}秒 ",end="\r",flush=True)
# 等待一秒
time.sleep(1)
# 更新当前时间和时间差
current_time = datetime.datetime.now()
delta = user_time - current_time
# 如果时间差为负,判断是否是第二天的时间
else:
# 如果用户输入的时间比当前时间的小时数小,说明是第二天的时间
if user_time.hour < current_time.hour:
# 将用户时间加上一天
user_time = user_time + datetime.timedelta(days=1)
# 重新计算时间差
delta = user_time - current_time
# 每秒刷新剩余时间
import time
while delta.total_seconds() > 0:
print(f"剩余{delta.total_seconds()}秒 ",end="\r",flush=True)
time.sleep(1)
current_time = datetime.datetime.now()
delta = user_time - current_time
# 如果用户输入的时间不是第二天的时间,提示用户输入的时间已过
else:
print("你输入的时间已过")
# 运行接下来的代码
print("运行接下来的代码")