diff --git a/commands.py b/commands.py index 6dd17d513142bc7def419272edde399b8131f359..a0b6b30a9c0429ac8090ce2513674a199186f245 100644 --- a/commands.py +++ b/commands.py @@ -214,3 +214,9 @@ def renderlatex(bot: CQHttp, context=None, args=None)->None: )) except Exception as ex: bot.send(context, "渲染Latex时发生错误:\n{}".format(ex)) + +@command(name="签到", help="群签到") +def attendance(bot: CQHttp, context=None, args=None): + import sign_up + bot.send(context,sign_up.get_reply(context)) + diff --git a/config_default.py b/config_default.py index 8b36d8f111b852369f83420b27d4ccbbf84f62eb..b52861bdc7c40403cddef4356543c371defeef76 100644 --- a/config_default.py +++ b/config_default.py @@ -38,6 +38,9 @@ OUTPUT_LENGTH_LIMIT = 200 EXECUTE_TIME_LIMIT = 2000 # 负责执行的Docker镜像名 DOCKER_IMAGE = "" +# 签到数据文件路径 +ATTENDANCE_DATA = "./bot-data/" + SAMPLE = { "718459861": [ diff --git a/sign_up.py b/sign_up.py new file mode 100644 index 0000000000000000000000000000000000000000..5a2f54df83f7cd35bafccfe7d53869e9fa5eb86e --- /dev/null +++ b/sign_up.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +# -*- coding: UTF-8 -*- +from global_vars import config +def get_reply(context): + data = {} + file_path=config.ATTENDANCE_DATA+"group_data.json" + import os,json,random + + # 文件不存在,建立文件夹 + if not os.path.exists(config.ATTENDANCE_DATA): + os.makedirs(config.ATTENDANCE_DATA) + + # 读取json文件 + if os.access(file_path, os.F_OK): + with open(file_path,"r") as f: + data=json.load(f) + + group_id = str(context['group_id']) + sender = context['sender'] + user_id= str(sender['user_id']) + nickname = sender['nickname'] + + # 群不在字典中 + if group_id not in data.keys(): + data[group_id] = {} + + # 发件人不在群字典中 + if user_id not in data[group_id].keys(): + data[group_id][user_id]={ + "rating" : 0, + "times_all" : 0, + "times_month" : 0, + "date" : "0001-01-01" + } + + from datetime import datetime,date + today = datetime.strptime(str(date.today()),'%Y-%m-%d') + last_day = datetime.strptime(data[group_id][user_id]['date'],'%Y-%m-%d') + + + #比较上次签到时间,今日已经签到 + if last_day >= today : + return "%s今天已经签过到了!\n当前积分:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( + nickname,data[group_id][user_id]['rating'],data[group_id][user_id]['times_month'],data[group_id][user_id]['times_all']) + + # 清零上个月 + if last_day.month!=today.month or last_day.year!=today.year: + data[group_id][user_id]['times_month'] = 0 + + #签到 + delta=random.randint(10,50-datetime.now().hour) + data[group_id][user_id]['rating'] += delta + data[group_id][user_id]['times_month'] += 1 + data[group_id][user_id]['times_all'] += 1 + data[group_id][user_id]['date'] = str(date.today()) + + with open(file_path,"w") as f: + json.dump(data,f) + + return "给%s签到成功了!\n积分增加:%d\n当前积分:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( + nickname,delta,data[group_id][user_id]['rating'],data[group_id][user_id]['times_month'],data[group_id][user_id]['times_all'])