diff options
author | Kyomotoi <[email protected]> | 2021-10-24 16:47:29 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2021-10-24 16:47:29 +0800 |
commit | 16838e0d83c8dd3f1be1e6ec5fb1cecd9b319d8a (patch) | |
tree | 77630910cac9cc38396cabe3dcc11e2d856a6c2f /ATRI/plugins/setu/__init__.py | |
parent | d789b1ae77f4415dab062c4af516e303dc447ddc (diff) | |
download | ATRI-16838e0d83c8dd3f1be1e6ec5fb1cecd9b319d8a.tar.gz ATRI-16838e0d83c8dd3f1be1e6ec5fb1cecd9b319d8a.tar.bz2 ATRI-16838e0d83c8dd3f1be1e6ec5fb1cecd9b319d8a.zip |
🔖 更新版本:YHN-001-A04
新增:
- nsfw检测(主动/被动) 又名 涩图嗅探
- 可选代理
修复:
- plugin/chat 在 nb2-a14+ 版本 finish 内为空时会报错
其他:
- 对定时任务进行中文命名
Diffstat (limited to 'ATRI/plugins/setu/__init__.py')
-rw-r--r-- | ATRI/plugins/setu/__init__.py | 89 |
1 files changed, 88 insertions, 1 deletions
diff --git a/ATRI/plugins/setu/__init__.py b/ATRI/plugins/setu/__init__.py index eec5281..3e0e452 100644 --- a/ATRI/plugins/setu/__init__.py +++ b/ATRI/plugins/setu/__init__.py @@ -2,7 +2,10 @@ import re import asyncio from random import choice from nonebot.adapters.cqhttp import Bot, MessageEvent, Message +from nonebot.adapters.cqhttp.message import MessageSegment +from nonebot.typing import T_State +from ATRI.config import BotSelfConfig from ATRI.utils.limit import FreqLimiter, DailyLimiter from ATRI.utils.apscheduler import scheduler from .data_source import Setu @@ -74,7 +77,91 @@ async def _tag_setu(bot: Bot, event: MessageEvent): await bot.delete_msg(message_id=event_id) [email protected]_job("interval", hours=1, misfire_grace_time=60, args=[Bot]) +setu_catcher = Setu().on_message("涩图嗅探") + + +@setu_catcher.handle() +async def _setu_catcher(bot: Bot, event: MessageEvent): + msg = str(event.message) + pattern = r"url=(.*?)]" + args = re.findall(pattern, msg) + if not args: + return + else: + hso = list() + for i in args: + try: + data = await Setu().detecter(i) + except Exception: + return + if data[1] > 0.7: + hso.append(data[1]) + + hso.sort(reverse=True) + + if not hso: + return + elif len(hso) == 1: + u_repo = f"hso! 涩值:{'{:.2%}'.format(hso[0])}\n不行我要发给别人看" + s_repo = ( + f"涩图来咧!\n{MessageSegment.image(args[0])}\n涩值:{'{:.2%}'.format(hso[0])}" + ) + + else: + u_repo = f"hso! 最涩的达到:{'{:.2%}'.format(hso[0])}\n不行我一定要发给别人看" + + ss = list() + for s in args: + ss.append(MessageSegment.image(s)) + ss = "\n".join(ss) + s_repo = f"多张涩图来咧!\n{ss}\n最涩的达到:{'{:.2%}'.format(hso[0])}" + + await bot.send(event, u_repo) + for superuser in BotSelfConfig.superusers: + await bot.send_private_msg(user_id=superuser, message=s_repo) + + +nsfw_checker = Setu().on_command("/nsfw", "涩值检测") + + +@nsfw_checker.handle() +async def _nsfw_checker(bot: Bot, event: MessageEvent, state: T_State): + msg = str(event.message).strip() + if msg: + state["nsfw_img"] = msg + + +@nsfw_checker.got("nsfw_img", "图呢?") +async def _deal_check(bot: Bot, event: MessageEvent, state: T_State): + msg = state["nsfw_img"] + pattern = r"url=(.*?)]" + args = re.findall(pattern, msg) + if not args: + await nsfw_checker.reject("请发送图片而不是其他东西!!") + + data = await Setu().detecter(args[0]) + hso = data[1] + if not hso: + await nsfw_checker.finish("图太小了!不测!") + + resu = f"涩值:{'{:.2%}'.format(hso)}\n" + if hso >= 0.75: + resu += "hso!不行我要发给别人看" + repo = f"涩图来咧!\n{MessageSegment.image(args[0])}\n涩值:{'{:.2%}'.format(hso[0])}" + for superuser in BotSelfConfig.superusers: + await bot.send_private_msg(user_id=superuser, message=repo) + + elif 0.75 > hso >= 0.5: + resu += "嗯。可冲" + else: + resu += "还行8" + + await nsfw_checker.finish(resu) + + [email protected]_job( + "interval", name="涩批诱捕器", hours=1, misfire_grace_time=60, args=[Bot] +) async def _scheduler_setu(bot): try: group_list = await bot.get_group_list() |