@@ -12,6 +12,7 @@ from concurrent.futures import ThreadPoolExecutor | |||||
from common.log import logger | from common.log import logger | ||||
from common.tmp_dir import TmpDir | from common.tmp_dir import TmpDir | ||||
from config import conf | from config import conf | ||||
from common.time_check import time_checker | |||||
import requests | import requests | ||||
import io | import io | ||||
import time | import time | ||||
@@ -66,6 +67,8 @@ class WechatChannel(Channel): | |||||
else: | else: | ||||
self._do_send_text(query, from_user_id) | self._do_send_text(query, from_user_id) | ||||
@time_checker | |||||
def handle_text(self, msg): | def handle_text(self, msg): | ||||
logger.debug("[WX]receive text msg: " + json.dumps(msg, ensure_ascii=False)) | logger.debug("[WX]receive text msg: " + json.dumps(msg, ensure_ascii=False)) | ||||
content = msg['Text'] | content = msg['Text'] | ||||
@@ -109,6 +112,7 @@ class WechatChannel(Channel): | |||||
thread_pool.submit(self._do_send_text, content, to_user_id) | thread_pool.submit(self._do_send_text, content, to_user_id) | ||||
@time_checker | |||||
def handle_group(self, msg): | def handle_group(self, msg): | ||||
logger.debug("[WX]receive group msg: " + json.dumps(msg, ensure_ascii=False)) | logger.debug("[WX]receive group msg: " + json.dumps(msg, ensure_ascii=False)) | ||||
group_name = msg['User'].get('NickName', None) | group_name = msg['User'].get('NickName', None) | ||||
@@ -0,0 +1,72 @@ | |||||
import time,re,hashlib | |||||
from config import load_config,md5,conf | |||||
import config | |||||
def get_file_md5(file_name): | |||||
""" | |||||
计算文件的md5 | |||||
:param file_name: | |||||
:return m.hexdigest(): | |||||
""" | |||||
m = hashlib.md5() #创建md5对象 | |||||
with open(file_name,'rb') as fobj: | |||||
while True: | |||||
data = fobj.read(1024) | |||||
if not data: | |||||
break | |||||
m.update(data) #更新md5对象 | |||||
return m.hexdigest() #返回md5值 | |||||
def time_checker(f): | |||||
# print(args[0]()) | |||||
def wrapTheFunction(self, *args, **kwargs): | |||||
global md5 # 从config.py拿来一个全局变量md5 默认是False | |||||
if md5 == None: | |||||
_config = conf() | |||||
elif md5 == get_file_md5("./config.json"): | |||||
_config = conf() | |||||
# chat_time_module = _config["chat_time_module"] | |||||
# chat_start_time = _config["chat_start_time"] | |||||
# chat_stopt_time = _config["chat_stop_time"] | |||||
else: | |||||
print("检测到配置文件变化") | |||||
_config = load_config() # 启动时间支持热更改 修改config.json文件后即可生效 | |||||
md5 = get_file_md5("./config.json") | |||||
# config.md5 = get_file_md5("./config.json") | |||||
chat_time_module = _config["chat_time_module"] | |||||
chat_start_time = _config["chat_start_time"] | |||||
chat_stopt_time = _config["chat_stop_time"] | |||||
# print(md5,chat_time_module,chat_start_time,chat_stopt_time) | |||||
if chat_time_module: | |||||
time_regex = re.compile(r'^([01]?[0-9]|2[0-4])(:)([0-5][0-9])$') #时间匹配,包含24:00 | |||||
starttime_format_check = time_regex.match(chat_start_time) # 检查停止时间格式 | |||||
stoptime_format_check = time_regex.match(chat_stopt_time) # 检查停止时间格式 | |||||
chat_time_check = chat_start_time < chat_stopt_time # 确定启动时间<停止时间 | |||||
if starttime_format_check and stoptime_format_check and chat_time_check: | |||||
# print('服务启动时间:{}'.format(CHAT_START_TIME)) | |||||
# print('服务结束时间:{}'.format(CHAT_STOP_TIME)) | |||||
if chat_start_time>"23:59": | |||||
print('启动时间可能存在问题,请修改') | |||||
else: | |||||
print("时间格式不正确,请在config.json中修改您的CHAT_START_TIME/CHAT_STOP_TIME,否则可能会影响您正常使用,程序正在自动退出") | |||||
now_time = time.strftime("%H:%M", time.localtime()) | |||||
if chat_start_time <= now_time <= chat_stopt_time: | |||||
# print("在服务时间内") | |||||
# 正常请求并返回 | |||||
f(self, *args, **kwargs) | |||||
return None | |||||
else: | |||||
print('不在服务时间内,禁止访问') | |||||
return None | |||||
else: | |||||
f(self, *args, **kwargs) | |||||
return wrapTheFunction | |||||
@@ -11,6 +11,9 @@ | |||||
"voice_reply_voice": false, | "voice_reply_voice": false, | ||||
"conversation_max_tokens": 1000, | "conversation_max_tokens": 1000, | ||||
"expires_in_seconds": 3600, | "expires_in_seconds": 3600, | ||||
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" | |||||
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。", | |||||
"chat_time_module": false, | |||||
"chat_start_time": "00:00", | |||||
"chat_stop_time": "24:00" | |||||
} | } | ||||
@@ -5,7 +5,7 @@ import os | |||||
from common.log import logger | from common.log import logger | ||||
config = {} | config = {} | ||||
md5 = None | |||||
def load_config(): | def load_config(): | ||||
global config | global config | ||||
@@ -17,6 +17,7 @@ def load_config(): | |||||
# 将json字符串反序列化为dict类型 | # 将json字符串反序列化为dict类型 | ||||
config = json.loads(config_str) | config = json.loads(config_str) | ||||
logger.info("[INIT] load config: {}".format(config)) | logger.info("[INIT] load config: {}".format(config)) | ||||
return config | |||||