diff options
Diffstat (limited to 'ATRI/plugins/onMessage.py')
-rw-r--r-- | ATRI/plugins/onMessage.py | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/ATRI/plugins/onMessage.py b/ATRI/plugins/onMessage.py new file mode 100644 index 0000000..fc888e4 --- /dev/null +++ b/ATRI/plugins/onMessage.py @@ -0,0 +1,124 @@ +import re +import os +import json +import nonebot +from pathlib import Path +from random import randint, choice + +from ATRI.modules.error import errorBack +from ATRI.modules.funcControl import checkSwitch, checkNoob +from ATRI.plugins.SauceNAO import API_KEY, now_time, SauceNAO + + +bot = nonebot.get_bot() + + [email protected]_message("group") +async def _(context): + group = context["group_id"] + user = context["user_id"] + if 0 <= now_time() < 5.5: + pass + else: + if checkNoob(user, group): + msg = str(context["message"]) + print(msg) + if "搜图" in msg or "识图" in msg: + if checkSwitch("saucenao_search", group): + try: + pattern = r"CQ:reply,id=(.*?)]" + info = re.findall(pattern, msg) + msgID = info[0] + print(msgID) + except: + print('ERROR-onMessage') + return + + try: + with open(Path('.') / 'ATRI' / 'data' / 'groupData' / f'{group}' / 'msgData.json', 'r') as f: + data = json.load(f) + except: + data = {} + + if msgID in data.keys(): + msgR = data[f"{msgID}"]["msg"] + + pattern = r"url=(.*?)]" + info = re.findall(pattern, msgR) + picURL = info[0] + + try: + task = SauceNAO(api_key=API_KEY) + data = task.search(url=picURL) + msg0 = '' + except: + await bot.send_msg(group_id = group, message = errorBack('请求数据失败')) # type: ignore + return + + print(data) + try: + data = json.loads(data)['results'][0] + title = data['data']['title'] + pixiv_id = data['data']['pixiv_id'] + member_name = data['data']['member_name'] + member_id = data['data']['member_id'] + similarity = data['header']['similarity'] + mini_url = data['header']['thumbnail'] + msg0 = f'[CQ:at,qq={user}]' + msg0 += f'SauceNAO结果:' + msg0 += f'[CQ:image,file={mini_url}]\n' + msg0 += f'相似度:{similarity}%\n' + msg0 += f'标题:{title}\n' + msg0 += f'插画ID:{pixiv_id}\n' + msg0 += f'画师:{member_name}\n' + msg0 += f'画师ID:{member_id}\n' + msg0 += f'直链:https://pixiv.cat/{pixiv_id}.jpg' + except: + await bot.send_msg(group_id = group, message = errorBack('处理数据失败')) # type: ignore + return + if msg0: + if float(similarity) > 70: + await bot.send_msg(group_id = group, message = msg0) # type: ignore + else: + await bot.send_msg(group_id = group, message = 'ATRI无法找到相似的图呢...') # type: ignore + + else: + await bot.send_msg(group_id = group, message = '该功能已关闭...') # type: ignore + + else: + try: + with open(Path('.') / 'ATRI' / 'plugins' / 'LearnRepo' / 'LearnRepo.json', 'r') as f: + data = json.load(f) + except: + data = {} + + if str(msg) in data.keys(): + lt = data[f"{msg}"] + msg = lt[0] + prob = int(lt[1]) + res = randint(1,prob) + if res == 1: + await bot.send_msg( + group_id = group, + message = msg + ) # type: ignore + [email protected]_message('group') +async def _(context): + user = context["user_id"] + group = context["group_id"] + if checkNoob(user, group): + if 0 <= now_time() < 5.5: + pass + else: + if randint(1,20) == 4: + img = choice( + [ + '11.jpg', '12.jpg', '23.jpg' + ] + ) + img = os.path.abspath(Path('.') / 'ATRI' / 'data' / 'emoji' / 'senren' / f'{img}') + await bot.send_msg(message = f'[CQ:image,file=file:///{img}]', auto_escape = False) # type: ignore + + else: + pass
\ No newline at end of file |