From 900d8f3d61323948ce3c482778def84d07032e18 Mon Sep 17 00:00:00 2001 From: ZhehaoMi <1125263974@qq.com> Date: Wed, 5 Dec 2018 23:03:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BE=A4=E7=AD=BE?= =?UTF-8?q?=E5=88=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commands.py | 6 +++++ config_default.py | 3 +++ sign_up.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 sign_up.py diff --git a/commands.py b/commands.py index 6dd17d5..d558205 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,get_reply(context)) + diff --git a/config_default.py b/config_default.py index 8b36d8f..b52861b 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 0000000..617d7e6 --- /dev/null +++ b/sign_up.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +# -*- coding: UTF-8 -*- +from global_vars import config + +Path=config.ATTENDANCE_DATA+"group_data.json" + +import json,time + +Data = {} + +def get_reply(context): + + import os + # json文件不存在,建立文件 + if not os.access(Path, os.F_OK): + os.makedirs(JsonFilePath) + # 读取json文件 + FILE = open(JsonFilePath,"r") + Data=json.load(load_f) + FILE.close() + + group_id = context['group_id'] + sender = context['sender'] + user_id= sender['user_id'] + nikename = 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 datatime 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,Date[group_id][user_id]['rating'],Data[group_id][user_id]['times_month'],Data[group_id][user_id]['times_all']) + + # 清零上个月 + if lats_day.month!=today.month or last_day.year!=today.year: + Data[group_id][user_id]['times_month'] = 0 + + #签到 + delta=rand(1,30-datetime.now().hour) + Date[group_id][user_id]['rating'] += dalta + Data[group_id][user_id]['times_month'] += 1 + Data[group_id][user_id]['times_all'] += 1 + Data[group_id][user_id]['date'] = "%d-%d-%d" % () + + FILE = open(JsonFilePath,"w") + json.dump(Data,FILE) + FILE.close() + + return "给%s签到成功了!\n积分增加:%d\n当前积分:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( + nickname,delta,Date[group_id][user_id]['rating'],Data[group_id][user_id]['times_month'],Data[group_id][user_id]['times_all']) + -- Gitee From da2e8cf13e08d5ddd4143d9cff49c2cdd74bafa4 Mon Sep 17 00:00:00 2001 From: ZhehaoMi <1125263974@qq.com> Date: Thu, 6 Dec 2018 00:03:00 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sign_up.py | 56 ++++++++++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/sign_up.py b/sign_up.py index 617d7e6..d7e5c94 100644 --- a/sign_up.py +++ b/sign_up.py @@ -1,28 +1,28 @@ #!/usr/bin/env python3 # -*- coding: UTF-8 -*- -from global_vars import config - -Path=config.ATTENDANCE_DATA+"group_data.json" - -import json,time - -Data = {} - def get_reply(context): + from global_vars import config + 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 not os.access(file_path, os.F_OK): + with open(file_path,'w') as f: + json.dump(Data,f) - import os - # json文件不存在,建立文件 - if not os.access(Path, os.F_OK): - os.makedirs(JsonFilePath) # 读取json文件 - FILE = open(JsonFilePath,"r") - Data=json.load(load_f) - FILE.close() + with open(file_path,"r") as f: + Data=json.load(f) - group_id = context['group_id'] + group_id = str(context['group_id']) sender = context['sender'] - user_id= sender['user_id'] - nikename = sender['nickname'] + user_id= str(sender['user_id']) + nickname = sender['nickname'] # 群不在字典中 if group_id not in Data.keys(): @@ -37,7 +37,7 @@ def get_reply(context): "date" : "0001-01-01" } - from datatime import datetime,date + 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') @@ -45,23 +45,21 @@ def get_reply(context): #比较上次签到时间,今日已经签到 if last_day >= today : return "%s今天已经签过到了!\n当前积分:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( - nickname,Date[group_id][user_id]['rating'],Data[group_id][user_id]['times_month'],Data[group_id][user_id]['times_all']) + nickname,Data[group_id][user_id]['rating'],Data[group_id][user_id]['times_month'],Data[group_id][user_id]['times_all']) # 清零上个月 - if lats_day.month!=today.month or last_day.year!=today.year: + if last_day.month!=today.month or last_day.year!=today.year: Data[group_id][user_id]['times_month'] = 0 #签到 - delta=rand(1,30-datetime.now().hour) - Date[group_id][user_id]['rating'] += dalta + 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'] = "%d-%d-%d" % () + Data[group_id][user_id]['date'] = str(date.today()) - FILE = open(JsonFilePath,"w") - json.dump(Data,FILE) - FILE.close() + with open(file_path,"w") as f: + json.dump(Data,f) return "给%s签到成功了!\n积分增加:%d\n当前积分:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( - nickname,delta,Date[group_id][user_id]['rating'],Data[group_id][user_id]['times_month'],Data[group_id][user_id]['times_all']) - + nickname,delta,Data[group_id][user_id]['rating'],Data[group_id][user_id]['times_month'],Data[group_id][user_id]['times_all']) -- Gitee From 3c32e5a38d1a584a0084de21a9209493561fc21c Mon Sep 17 00:00:00 2001 From: ZhehaoMi <1125263974@qq.com> Date: Thu, 6 Dec 2018 12:20:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commands.py | 2 +- sign_up.py | 40 ++++++++++++++++++---------------------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/commands.py b/commands.py index d558205..a0b6b30 100644 --- a/commands.py +++ b/commands.py @@ -218,5 +218,5 @@ def renderlatex(bot: CQHttp, context=None, args=None)->None: @command(name="签到", help="群签到") def attendance(bot: CQHttp, context=None, args=None): import sign_up - bot.send(context,get_reply(context)) + bot.send(context,sign_up.get_reply(context)) diff --git a/sign_up.py b/sign_up.py index d7e5c94..5a2f54d 100644 --- a/sign_up.py +++ b/sign_up.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 # -*- coding: UTF-8 -*- +from global_vars import config def get_reply(context): - from global_vars import config - Data = {} + data = {} file_path=config.ATTENDANCE_DATA+"group_data.json" import os,json,random @@ -10,14 +10,10 @@ def get_reply(context): if not os.path.exists(config.ATTENDANCE_DATA): os.makedirs(config.ATTENDANCE_DATA) - # json不存在,建立空文件 - if not os.access(file_path, os.F_OK): - with open(file_path,'w') as f: - json.dump(Data,f) - # 读取json文件 - with open(file_path,"r") as f: - Data=json.load(f) + 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'] @@ -25,12 +21,12 @@ def get_reply(context): nickname = sender['nickname'] # 群不在字典中 - if group_id not in Data.keys(): - Data[group_id] = {} + if group_id not in data.keys(): + data[group_id] = {} # 发件人不在群字典中 - if user_id not in Data[group_id].keys(): - Data[group_id][user_id]={ + if user_id not in data[group_id].keys(): + data[group_id][user_id]={ "rating" : 0, "times_all" : 0, "times_month" : 0, @@ -39,27 +35,27 @@ def get_reply(context): 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') + 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']) + 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 + 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()) + 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) + 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']) + nickname,delta,data[group_id][user_id]['rating'],data[group_id][user_id]['times_month'],data[group_id][user_id]['times_all']) -- Gitee