summaryrefslogtreecommitdiff
path: root/ATRI/plugins/onMessage.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/onMessage.py')
-rw-r--r--ATRI/plugins/onMessage.py124
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