summaryrefslogtreecommitdiff
path: root/ATRI/plugins/setu.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/setu.py')
-rw-r--r--ATRI/plugins/setu.py362
1 files changed, 266 insertions, 96 deletions
diff --git a/ATRI/plugins/setu.py b/ATRI/plugins/setu.py
index 796f6f7..3a667fb 100644
--- a/ATRI/plugins/setu.py
+++ b/ATRI/plugins/setu.py
@@ -1,7 +1,10 @@
import os
+import re
import time
import json
import sqlite3
+import requests
+from urllib.parse import urlencode
from random import choice, randint
from pathlib import Path
from datetime import datetime
@@ -10,12 +13,16 @@ import nonebot
from nonebot import on_command, CommandSession
import config # type: ignore
-from ATRI.modules import response # type: ignore
+from ATRI.modules.response import request_api_params # type: ignore
+from ATRI.modules.b64 import b64_str_img_url # type: ignore
bot = nonebot.get_bot()
master = config.MASTER()
-apikey = bot.config.LOLICONAPI # type: ignore
+apikey_LOLI = bot.config.LOLICONAPI # type: ignore
+APP_ID = config.BAIDU_APP_ID()
+API_KEY = config.BAIDU_API_KEY()
+SECRECT_KEY = config.BAIDU_SECRET()
URL = 'https://api.lolicon.app/setu/'
@@ -37,127 +44,139 @@ def now_time():
setu_type = 1
@on_command('setu', patterns = (r"来[点丶张份副个幅][涩色瑟][图圖]|[涩色瑟][图圖]来|[涩色瑟][图圖][gkd|GKD|搞快点]|[gkd|GKD|搞快点][涩色瑟][图圖]|[图圖]来|[我你她他它]想要[点丶张份副][涩色瑟][图圖]|我想要[1一][张份幅副个只][涩色瑟][图圖]|[我你她他它]想[看|look][涩涩|色色]的东西"), only_to_me = False)
async def setu(session: CommandSession):
- group = session.event.group_id
- user = session.event.user_id
start = time.perf_counter()
- if 0 <= now_time() < 5.5:
- await session.send(
- choice(
- [
- 'zzzz......',
- 'zzzzzzzz......',
- 'zzz...好涩哦..zzz....',
- '别...不要..zzz..那..zzz..',
- '嘻嘻..zzz..呐~..zzzz..'
- ]
- )
- )
- else:
- with open('ATRI/plugins/noobList/noobList.json', 'r') as f:
- data0 = json.load(f)
- with open(Path('.') / 'ATRI' / 'plugins' / 'switch' / 'switch.json', 'r') as f:
+ user = session.event.user_id
+ group = session.event.group_id
+ try:
+ with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobGroup.json', 'r') as f:
+ data = json.load(f)
+ except:
+ data = {}
+ try:
+ with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobList.json', 'r') as f:
data1 = json.load(f)
+ except:
+ data1 = {}
- if str(user) in data0.keys():
+ if str(group) in data.keys():
+ pass
+ else:
+ if str(user) in data1.keys():
pass
else:
- if data1["setu"] == "on":
- res = randint(1,10)
- if 1 <= res < 9:
- res = randint(1,4)
- if 1 <= res < 3:
- if setu_type == 1:
- res = randint(1,4)
- con = sqlite3.connect(Path('.') / 'ATRI' / 'data' / 'sqlite' / 'setu' / 'nearR18.db')
- cur = con.cursor()
- msg = cur.execute('SELECT * FROM nearR18 ORDER BY RANDOM() limit 1;')
-
- if 1 <= res < 3:
- for i in msg:
- pid = i[0]
- title = i[1]
- img = i[7]
+ if 0 <= now_time() < 5.5:
+ await session.send(
+ choice(
+ [
+ 'zzzz......',
+ 'zzzzzzzz......',
+ 'zzz...好涩哦..zzz....',
+ '别...不要..zzz..那..zzz..',
+ '嘻嘻..zzz..呐~..zzzz..'
+ ]
+ )
+ )
+ else:
+ with open(Path('.') / 'ATRI' / 'plugins' / 'switch' / 'switch.json', 'r') as f:
+ data1 = json.load(f)
+
+ if data1["setu"] == "on":
+ res = randint(1,10)
+ if 1 <= res < 9:
+ res = randint(1,4)
+ if 1 <= res < 3:
+ if setu_type == 1:
+ res = randint(1,4)
+ con = sqlite3.connect(Path('.') / 'ATRI' / 'data' / 'sqlite' / 'setu' / 'nearR18.db')
+ cur = con.cursor()
+ msg = cur.execute('SELECT * FROM nearR18 ORDER BY RANDOM() limit 1;')
+
+ if 1 <= res < 3:
+ for i in msg:
+ pid = i[0]
+ title = i[1]
+ img = i[7]
+ end = time.perf_counter()
+ await session.send(
+ SETU_REPLY.format(
+ title = title,
+ pid = pid,
+ setu = img,
+ time = round(end - start, 3)
+ )
+ )
+ elif res == 4:
+ for i in msg:
+ pid = i[0]
+ title = i[1]
+ img = i[7]
+ end = time.perf_counter()
+ await session.send('我找到涩图了!但我发给主人了\nο(=•ω<=)ρ⌒☆')
+ await bot.send_private_msg( # type: ignore
+ user_id = master,
+ message = f"主人,从群{group}来的涩图!热乎着!\nTitle: {title}\nPid: {pid}\n{img}\nComplete time: {round(end - start, 3)}"
+ )
+
+ elif setu_type == 2:
+ res = randint(1,4)
+ await session.send('别急!正在找图!')
+ start = time.perf_counter()
+ values = {
+ "apikey": apikey_LOLI,
+ "r18": "0",
+ "num": "1"
+ }
+
+ try:
+ dc = json.loads(request_api_params(URL, values))
+ title = dc["data"][0]["title"]
+ pid = dc["data"][0]["pid"]
+ setu = dc["data"][0]["url"] #b64.b64_str_img_url(dc["data"][0]["url"])
+ except:
+ await session.send('失败了失败了失败了失...')
+ return
+ if 1 <= res < 3:
end = time.perf_counter()
await session.send(
SETU_REPLY.format(
title = title,
pid = pid,
- setu = img,
+ setu = dc["data"][0]["url"],
time = round(end - start, 3)
)
)
- elif res == 4:
- for i in msg:
- pid = i[0]
- title = i[1]
- img = i[7]
+ elif res == 4:
end = time.perf_counter()
await session.send('我找到涩图了!但我发给主人了\nο(=•ω<=)ρ⌒☆')
await bot.send_private_msg( # type: ignore
user_id = master,
- message = f"主人,从群{group}来的涩图!热乎着!\nTitle: {title}\nPid: {pid}\n{img}\nComplete time: {round(end - start, 3)}"
+ message = f"主人,从群{group}来的涩图!热乎着!\nTitle: {title}\nPid: {pid}\n{setu}\nComplete time: {round(end - start, 3)}"
)
-
- elif setu_type == 2:
- res = randint(1,4)
- await session.send('别急!正在找图!')
- start = time.perf_counter()
- values = {
- "apikey": apikey,
- "r18": "0",
- "num": "1"
- }
-
- try:
- dc = json.loads(response.request_api_params(URL, values))
- title = dc["data"][0]["title"]
- pid = dc["data"][0]["pid"]
- setu = dc["data"][0]["url"] #b64.b64_str_img_url(dc["data"][0]["url"])
- except:
- await session.send('失败了失败了失败了失...')
- return
- if 1 <= res < 3:
- end = time.perf_counter()
- await session.send(
- SETU_REPLY.format(
- title = title,
- pid = pid,
- setu = dc["data"][0]["url"],
- time = round(end - start, 3)
- )
- )
- elif res == 4:
- end = time.perf_counter()
- await session.send('我找到涩图了!但我发给主人了\nο(=•ω<=)ρ⌒☆')
- await bot.send_private_msg( # type: ignore
- user_id = master,
- message = f"主人,从群{group}来的涩图!热乎着!\nTitle: {title}\nPid: {pid}\n{setu}\nComplete time: {round(end - start, 3)}"
- )
- elif res == 4:
+ elif res == 4:
+ img = choice(
+ [
+ 'SP.jpg', 'SP1.jpg', 'SP2.jpg'
+ ]
+ )
+ img = Path('.') / 'ATRI' / 'data' / 'emoji' / f'{img}'
+ img = os.path.abspath(img)
+ await session.send(f'[CQ:image,file=file:///{img}]')
+
+ elif res == 10:
img = choice(
[
- 'SP.jpg', 'SP1.jpg', 'SP2.jpg'
+ 'GDZ.png', 'SHZY1.jpg', 'SHZY2.jpg', 'SHZY3.jpg', 'SHZY4.jpg', 'SHZY5.jpg', 'SHZY6.jpg'
]
)
- img = Path('.') / 'ATRI' / 'data' / 'emoji' / f'{img}'
+ img = Path('.') / 'ATRI' / 'data' / 'img' / 'niceIMG' / f'{img}'
img = os.path.abspath(img)
await session.send(f'[CQ:image,file=file:///{img}]')
-
- elif res == 10:
- img = choice(
- [
- 'GDZ.png', 'SHZY1.jpg', 'SHZY2.jpg', 'SHZY3.jpg', 'SHZY4.jpg', 'SHZY5.jpg', 'SHZY6.jpg'
- ]
- )
- img = Path('.') / 'ATRI' / 'data' / 'img' / 'niceIMG' / f'{img}'
- img = os.path.abspath(img)
- await session.send(f'[CQ:image,file=file:///{img}]')
- else:
- await session.send('该功能已被禁用...')
+ else:
+ await session.send('该功能已被禁用...')
-@on_command('change_setu_type', aliases = ['涩图导向'], only_to_me =False)
+@on_command('change_setu_type', aliases = ['涩图导向'], only_to_me = False)
async def _(session: CommandSession):
global setu_type
if session.event.user_id == master:
@@ -174,3 +193,154 @@ async def _(session: CommandSession):
pass
await session.send('okay~~~~')
+
+
[email protected]_message("group")
+async def _(context):
+ start = time.perf_counter()
+ user = context["user_id"]
+ group = context["group_id"]
+ if 0 <= now_time() < 5.5:
+ pass
+ else:
+ try:
+ with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobGroup.json', 'r') as f:
+ data = json.load(f)
+ except:
+ data = {}
+ try:
+ with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobList.json', 'r') as f:
+ data1 = json.load(f)
+ except:
+ data1 = {}
+
+ if str(group) in data.keys():
+ pass
+ else:
+ if str(user) in data1.keys():
+ pass
+ else:
+ try:
+ img = str(context["message"])
+ pattern = re.compile(r"url=(.*)]")
+ img = re.findall(pattern, img)
+ img = img[0].replace('url=', '')
+ img = img.replace(']', '')
+ print(img)
+ except:
+ return
+ img = b64_str_img_url(img)
+ if img:
+ host = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={API_KEY}&client_secret={SECRECT_KEY}'
+ headers = {
+ 'Content-Type': 'application/json;charset=UTF-8'
+ }
+ res = json.loads(request_api_params(host, headers))
+ access_token=res['access_token']
+ url = f'https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token={access_token}'
+ headers = {'Content-Type': 'application/x-www-form-urlencoded'}
+ data = urlencode({'image': img})
+ res = requests.post(url=url, headers=headers, data=data)
+
+ try:
+ words = json.loads(res.content)['words_result'][0]['words']
+ print(words)
+ except:
+ return
+
+ if re.findall(r"[涩色]图", words):
+ with open(Path('.') / 'ATRI' / 'plugins' / 'switch' / 'switch.json', 'r') as f:
+ data1 = json.load(f)
+
+ if data1["setu"] == "on":
+ res = randint(1,10)
+ if 1 <= res < 9:
+ res = randint(1,4)
+ if 1 <= res < 3:
+ if setu_type == 1:
+ res = randint(1,4)
+ con = sqlite3.connect(Path('.') / 'ATRI' / 'data' / 'sqlite' / 'setu' / 'nearR18.db')
+ cur = con.cursor()
+ msg = cur.execute('SELECT * FROM nearR18 ORDER BY RANDOM() limit 1;')
+
+ if 1 <= res < 3:
+ for i in msg:
+ pid = i[0]
+ title = i[1]
+ img = i[7]
+ end = time.perf_counter()
+ msg = SETU_REPLY.format(
+ title = title,
+ pid = pid,
+ setu = img,
+ time = round(end - start, 3)
+ )
+ await bot.send_group_msg(group_id = group, message = msg) # type: ignore
+ elif res == 4:
+ for i in msg:
+ pid = i[0]
+ title = i[1]
+ img = i[7]
+ end = time.perf_counter()
+ await bot.send_group_msg(group_id = group, message = '我找到涩图了!但我发给主人了\nο(=•ω<=)ρ⌒☆') # type: ignore
+ await bot.send_private_msg( # type: ignore
+ user_id = master,
+ message = f"主人,从群{group}来的涩图!热乎着!\nTitle: {title}\nPid: {pid}\n{img}\nComplete time: {round(end - start, 3)}"
+ )
+
+ elif setu_type == 2:
+ res = randint(1,4)
+ await bot.send_group_msg(group_id = group, message = '别急!正在找图!') # type: ignore
+ start = time.perf_counter()
+ values = {
+ "apikey": apikey_LOLI,
+ "r18": "0",
+ "num": "1"
+ }
+
+ try:
+ dc = json.loads(request_api_params(URL, values))
+ title = dc["data"][0]["title"]
+ pid = dc["data"][0]["pid"]
+ setu = dc["data"][0]["url"] #b64.b64_str_img_url(dc["data"][0]["url"])
+ except:
+ await bot.send_group_msg(group_id = group, message = '失败了失败了失...') # type: ignore
+ return
+ if 1 <= res < 3:
+ end = time.perf_counter()
+ msg = SETU_REPLY.format(
+ title = title,
+ pid = pid,
+ setu = img,
+ time = round(end - start, 3)
+ )
+ await bot.send_group_msg(group_id = group, message = msg) # type: ignore
+ elif res == 4:
+ end = time.perf_counter()
+ await bot.send_group_msg(group_id = group, message = '我找到涩图了!但我发给主人了\nο(=•ω<=)ρ⌒☆') # type: ignore
+ await bot.send_private_msg( # type: ignore
+ user_id = master,
+ message = f"主人,从群{group}来的涩图!热乎着!\nTitle: {title}\nPid: {pid}\n{setu}\nComplete time: {round(end - start, 3)}"
+ )
+ elif res == 4:
+ img = choice(
+ [
+ 'SP.jpg', 'SP1.jpg', 'SP2.jpg'
+ ]
+ )
+ img = Path('.') / 'ATRI' / 'data' / 'emoji' / f'{img}'
+ img = os.path.abspath(img)
+ await bot.send_group_msg(group_id = group, message = f'[CQ:image,file=file:///{img}]') # type: ignore
+
+ elif res == 10:
+ img = choice(
+ [
+ 'GDZ.png', 'SHZY1.jpg', 'SHZY2.jpg', 'SHZY3.jpg', 'SHZY4.jpg', 'SHZY5.jpg', 'SHZY6.jpg'
+ ]
+ )
+ img = Path('.') / 'ATRI' / 'data' / 'img' / 'niceIMG' / f'{img}'
+ img = os.path.abspath(img)
+ await bot.send_group_msg(group_id = group, message = f'[CQ:image,file=file:///{img}]') # type: ignore
+
+ else:
+ pass \ No newline at end of file