Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[功能请求] 点击小月卡领取以及定时启动功能 #757

Open
lostduel opened this issue Nov 13, 2023 · 0 comments
Open

[功能请求] 点击小月卡领取以及定时启动功能 #757

lostduel opened this issue Nov 13, 2023 · 0 comments
Labels
enhancement New feature or request

Comments

@lostduel
Copy link

原因

我想在每天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("运行接下来的代码")
@lostduel lostduel added the enhancement New feature or request label Nov 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant