diff --git a/plugins/read/__init__.py b/plugins/read/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/plugins/read/config_default.py b/plugins/read/config_default.py new file mode 100644 index 0000000000000000000000000000000000000000..c55a1555640925733fbf60483cf6cd820ec202e2 --- /dev/null +++ b/plugins/read/config_default.py @@ -0,0 +1,6 @@ +MAX_STRING_LENGTH = 300 + +# Baidu AI Apps +APP_ID = "" +API_KEY = "" +SECRET_KEY = "" diff --git a/plugins/read/read.py b/plugins/read/read.py new file mode 100644 index 0000000000000000000000000000000000000000..4bae101f51f258351bdcd6ba1dee9a93d6939cc5 --- /dev/null +++ b/plugins/read/read.py @@ -0,0 +1,50 @@ +from register import command +from global_vars import CONFIG +import base64 +import tempfile +import os +from aip import AipSpeech + +config = CONFIG[__name__] + +def plugin(): + return { + "author": "Antares", + "version": 1.0, + "description": "文字朗读" + } + + +@command(name="read", help="文字转语音") +def sam(bot, context, args): + + if len(args) < 2: + bot.send(context, "请输入文字") + return + string = "".join(args[1:]) + if len(string) > config.MAX_STRING_LENGTH: + bot.send(context, "字符串过长") + return + + client = AipSpeech(config.APP_ID, config.API_KEY, config.SECRET_KEY) + + voice = client.synthesis(string, 'zh', 1, { + 'vol': 10, + 'per': 4, + 'spd': 4 + }) + + tmpdir = tempfile.mkdtemp() + audiopath=os.path.join(tmpdir, "audio.mp3") + + if not isinstance(voice, dict): + with open(audiopath, "wb") as file: + file.write(voice) + else: + bot.send(context, "转换语音失败,请检查是否含有非法字符") + return + + result = "" + with open(audiopath, "rb") as file: + result = base64.encodebytes(file.read()).decode().replace("\n", "") + bot.send(context, "[CQ:record,file=base64://{}]".format(result)) diff --git a/plugins/sign_in/sign_in.py b/plugins/sign_in/sign_in.py index e7708fe3c4fc7c5428cbdf63b0c7e37bf85b417b..d2d22750a6f77bc16ee54c684dda80c59cb5d92e 100644 --- a/plugins/sign_in/sign_in.py +++ b/plugins/sign_in/sign_in.py @@ -6,7 +6,7 @@ import os import re import json import random -from datetime import datetime, date +from datetime import datetime, date, timedelta from json import JSONDecoder, JSONEncoder web_app = global_vars.VARS["web_app"] DATA_PATH = os.path.join(os.path.dirname(__file__)) @@ -15,7 +15,7 @@ config = global_vars.CONFIG[__name__] def plugin(): return { - "author": "ACCEPT", + "author": "Antares", "version": 1.0, "description": "签到支持" } @@ -70,7 +70,8 @@ def get_user_data(data: dict, user_id): "rating": 0, "times_all": 0, "times_month": 0, - "date": "0001-01-01" + "date": "0001-01-01", + "count": 0 }) @@ -88,26 +89,35 @@ def get_reply(context): today = datetime.strptime(str(date.today()), '%Y-%m-%d') last_day = datetime.strptime(user_data['date'], '%Y-%m-%d') - + # 比较上次签到时间,今日已经签到 - if last_day >= today: - return "%s今天已经签过到了!\n当前积分:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( - nickname, user_data['rating'], user_data['times_month'], user_data['times_all']) + if last_day == today: + return "%s今天已经签过到了!\n当前积分:%d\n连续签到天数:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( + nickname, user_data['rating'], user_data['count'], user_data['times_month'], user_data['times_all']) # 清零上个月 if last_day.month != today.month or last_day.year != today.year: user_data['times_month'] = 0 + # 连续签到计数 + if today - last_day == timedelta(days=1): + user_data['count'] += 1 + else: + user_data['count'] = 1 + # 签到 - delta = random.randint(10, 50-datetime.now().hour) - user_data['rating'] += delta + delta = random.randint(30,40) + add = 5*(user_data['count']-1) + if add > 50: + add = 50 + user_data['rating'] += (delta+add) user_data['times_month'] += 1 user_data['times_all'] += 1 user_data['date'] = str(date.today()) data[user_id] = user_data save_data(data, group_id) - return "给%s签到成功了!\n积分增加:%d\n当前积分:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( - nickname, delta, user_data['rating'], user_data['times_month'], user_data['times_all']) + return "给%s签到成功了!\n积分增加:%d (连续签到加成:%d)\n当前积分:%d\n连续签到天数:%d\n本月签到次数:%d\n累计群签到次数:%d" % ( + nickname, delta+add, add, user_data['rating'], user_data['count'], user_data['times_month'], user_data['times_all']) @web_app.route("/api/credit/get_by_group/", methods=["POST", "GET"])