# **实现目标** ▶针对每个用户计算独立的签到积分 ▶每日只能签到一次 ▶签到计数器每日自动刷新 ***** # **实现思路** ## **针对每个用户计算独立的签到积分** 创建一个配置文件,创建节名[**积分**] 对每个用户的数据采取**QQ号对应记录**的模式,以下是样例配置文件 >[info] [积分] > 895445383=823 在此配置文件中,有一个用户,其QQ为895445383,他的积分已经到达了823 ## **每日只能签到一次** 在配置文件中,创建节名[**每日次数**] 对每个用户的数据同样采用**QQ号对应记录**的模式,以下是样例配置文件 >[info] [每日次数] > 895445383=0 在此配置文件中,有一个用户,其QQ为895445383,他的每日次数为0,代表他今日已经签到过了 ## **签到计数器每日自动刷新** 创建一个定时任务,在每日固定时间刷新配置文件中的[**每日次数**]一节 定时任务需要实现的内容其实很简单,只需要将每日次数清零即可,原理请见后文 具体定时任务内容如下 >[warning] [写配置项[数据目录]好感.ini;次数;;] 具体的原理将在后文讲述 ***** # **实现代码** **命令名**:签到 >[warning] [**隐藏** > [**赋值**签到积分;5][**赋值**次数上限;1] > [**赋值**次数;[**读配置项**[**数据目录**]签到.ini;每日次数;[**发送者号码**];[**取值**次数上限]]] > [**如果**可以;[**取值**次数]>0] > [**操作配置项**[**数据目录**]签到.ini;积分;[**发送者号码**];+[**取值**签到积分]] > [**写配置项**[**数据目录**]签到.ini;每日次数;[**发送者号码**];[**计算**[**取值**次数]-1]] > ]签到成功,您的累积积分为[**读配置项**[**数据目录**]签到.ini;积分;[**发送者号码**];][**隐藏** > [**如果可以假**] > ]签到失败,今日签到次数已达上限[**隐藏** > [**如果可以结束**]] ***** # **代码解读** > [**赋值**签到积分;5][**赋值**次数上限;1] 此句代码为快捷自定义,为后续代码提供便捷,该赋值操作类似编程中的宏定义,方便引用 > [**赋值**次数;[**读配置项**[**数据目录**]签到.ini;每日次数;[**发送者号码**];[**取值**次数上限]]] 此句代码作用为获取每日次数上限,当配置文件中不含有该号码对应的记录时,读取结果为自定义值:次数上限 此句代码需结合定时任务的重置使用,重置任务的作用是删除[每日次数]一节下的所有数据,删除后即可被该句代码初始化每日签到次数上限 > [**如果**可以;[**取值**次数]>0] ③ > [**如果可以假**] ④ > [**如果可以结束**]] 此句代码作用是进行判断,判断用户今日是否还可以签到 当次数>0(即可以进行签到)的时候,执行③处的代码(该处代码可包含多句) 当次数≤0(即不可进行签到)的时候,执行④处的代码(该处代码可包含多句) > [**操作配置项**[**数据目录**]签到.ini;积分;[**发送者号码**];+[**取值**签到积分]] 该句代码作用是进行签到积分的累加,对于用户的记录进行操作,给原有记录加上自定义值:签到积分,当不存在记录时,初始值为0,操作后的记录值等于自定义值:签到积分的值 > [**写配置项**[**数据目录**]签到.ini;每日次数;[**发送者号码**];[**计算**[**取值**次数]-1]] 此句代码作用是更改今日签到剩余次数,每次签到次数减一,执行后会影响下一次[**如果**]语句的判断 > [**读配置项**[**数据目录**]签到.ini;积分;[**发送者号码**];] 此句代码作用是读取用户当前积分(即签到后的积分)