diff options
Diffstat (limited to 'ATRI/plugins/nsfw.py')
-rw-r--r-- | ATRI/plugins/nsfw.py | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/ATRI/plugins/nsfw.py b/ATRI/plugins/nsfw.py index 076ce03..34ea61d 100644 --- a/ATRI/plugins/nsfw.py +++ b/ATRI/plugins/nsfw.py @@ -5,46 +5,43 @@ from nonebot.adapters.cqhttp import Bot, GroupMessageEvent from nonebot.typing import T_State from ATRI.log import logger as log -from ATRI.config import Config +from ATRI.config import BotSelfConfig, NsfwCheck from ATRI.service import Service as sv -from ATRI.exceptions import RequestTimeOut +from ATRI.exceptions import RequestError from ATRI.rule import is_in_service from ATRI.utils.request import get_bytes from ATRI.utils.cqcode import coolq_code_check -nsfw_url = f"http://{Config.NsfwCheck.host}:" f"{Config.NsfwCheck.port}/?url=" +nsfw_url = f"http://{NsfwCheck.host}:{NsfwCheck.port}/?url=" nsfw_checking = sv.on_message() - @nsfw_checking.handle() async def _nsfw_checking(bot: Bot, event: GroupMessageEvent) -> None: - if Config.NsfwCheck.enabled: + if NsfwCheck.enabled: msg = str(event.message) user = event.user_id group = event.group_id check = await coolq_code_check(msg, user, group) - + if check: if "image" not in msg: return - + url = nsfw_url + re.findall(r"url=(.*?)]", msg)[0] try: data = json.loads(await get_bytes(url)) except: - log.warning("检测涩图失败,请查阅文档以获取帮助") + log.warning('检测涩图失败,请查阅文档以获取帮助') return - if round(data["score"], 4) > Config.NsfwCheck.passing_rate: - score = "{:.2%}".format(round(data["score"], 4)) - log.debug(f"截获涩图,得分:{score}") - await bot.send(event, f"好涩哦!涩值:{score}\n不行了咱要发给主人看!") - for sup in Config.BotSelfConfig.superusers: - await bot.send_private_msg( - user_id=sup, message=f"{msg}\n涩值: {score}" - ) + if round(data['score'], 4)*100 >= NsfwCheck.passing_rate: + score = "{:.2%}".format(round(data['score'], 4)) + log.debug(f'截获涩图,得分:{score}') + for sup in BotSelfConfig.superusers: + await bot.send_private_msg(user_id=sup, message=f"{msg}\n涩值: {score}") + await bot.send(event, f'好涩哦!涩值:{score}\n不行了咱要发给主人看!') else: pass @@ -60,57 +57,60 @@ __doc__ = """ /nsfw 然后Bot会向你索取图片 """ -nsfw_reading = sv.on_command(cmd="/nsfw", docs=__doc__, rule=is_in_service("nsfw")) - +nsfw_reading = sv.on_command( + cmd="/nsfw", + docs=__doc__, + rule=is_in_service('nsfw') +) @nsfw_reading.args_parser # type: ignore async def _nsfw(bot: Bot, event: GroupMessageEvent, state: T_State) -> None: msg = str(event.message) - quit_list = ["算了", "罢了", "不搜了"] + quit_list = ['算了', '罢了', '不搜了'] if msg in quit_list: - await nsfw_reading.finish("好吧") - + await nsfw_reading.finish('好吧') + if not msg: - await nsfw_reading.reject("图呢?") + await nsfw_reading.reject('图呢?') else: - state["pic_nsfw"] = msg - + state['pic_nsfw'] = msg @nsfw_reading.handle() -async def _nsfw_r(bot: Bot, event: GroupMessageEvent, state: T_State) -> None: +async def _nsfw_r(bot: Bot, + event: GroupMessageEvent, + state: T_State) -> None: user = event.user_id group = event.group_id msg = str(event.message).strip() check = await coolq_code_check(msg, user, group) if check and msg: - state["pic_nsfw"] = msg - + state['pic_nsfw'] = msg -@nsfw_reading.got("pic_nsfw", prompt="图呢?") -async def _nsfw_reading(bot: Bot, event: GroupMessageEvent, state: T_State) -> None: - msg = state["pic_nsfw"] +@nsfw_reading.got('pic_nsfw', prompt='图呢?') +async def _nsfw_reading(bot: Bot, + event: GroupMessageEvent, + state: T_State) -> None: + msg = state['pic_nsfw'] pic = re.findall(r"url=(.*?)]", msg) if not pic: - await nsfw_reading.reject("请发送图片而不是其它东西!!") - + await nsfw_reading.reject('请发送图片而不是其它东西!!') + url = nsfw_url + pic[0] try: data = json.loads(await get_bytes(url)) - except RequestTimeOut: - raise RequestTimeOut("Time out!") - - score = round(data["score"], 4) - result = "{:.2%}".format(round(data["score"], 4)) - if score > 0.9: + except RequestError: + raise RequestError('Time out!') + + score = round(data['score'], 4) + result = "{:.2%}".format(round(data['score'], 4)) + if score >= 0.9: level = "hso! 我要发给主人看!" - for sup in Config.BotSelfConfig.superusers: - await bot.send_private_msg( - user_id=sup, message=f"{state['pic_nsfw']}\n涩值: {result}" - ) + for sup in BotSelfConfig.superusers: + await bot.send_private_msg(user_id=sup, message=f"{state['pic_nsfw']}\n涩值: {result}") elif 0.9 > score >= 0.6: level = "嗯,可冲" else: level = "?能不能换张55完全冲不起来" - + repo = f"涩值:{result}\n{level}" await nsfw_reading.finish(repo) |