diff options
author | Kyomotoi <[email protected]> | 2022-02-03 14:36:24 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2022-02-03 14:36:24 +0800 |
commit | 3e32ca3964ff8f40e0b491e87f153040f2348fd0 (patch) | |
tree | d04d19ba5a25f6f1f6a9c4f8c398d49eb252df3c /ATRI/plugins/setu/__init__.py | |
parent | f5a020d45f7294214bbcd488955b9c391d651a6d (diff) | |
download | ATRI-3e32ca3964ff8f40e0b491e87f153040f2348fd0.tar.gz ATRI-3e32ca3964ff8f40e0b491e87f153040f2348fd0.tar.bz2 ATRI-3e32ca3964ff8f40e0b491e87f153040f2348fd0.zip |
🔖 更新版本:
更新记录请参考文档: atri.kyomotoi.moe/changelog/overview/
Diffstat (limited to 'ATRI/plugins/setu/__init__.py')
-rw-r--r-- | ATRI/plugins/setu/__init__.py | 91 |
1 files changed, 75 insertions, 16 deletions
diff --git a/ATRI/plugins/setu/__init__.py b/ATRI/plugins/setu/__init__.py index 244e030..6c135aa 100644 --- a/ATRI/plugins/setu/__init__.py +++ b/ATRI/plugins/setu/__init__.py @@ -1,10 +1,11 @@ import re import asyncio from random import choice + from nonebot.permission import SUPERUSER -from nonebot.adapters.cqhttp import Bot, MessageEvent, Message -from nonebot.adapters.cqhttp.message import MessageSegment -from nonebot.typing import T_State +from nonebot.matcher import Matcher +from nonebot.params import CommandArg, ArgPlainText +from nonebot.adapters.onebot.v11 import Bot, MessageEvent, Message, MessageSegment from ATRI.config import BotSelfConfig from ATRI.utils.limit import FreqLimiter, DailyLimiter @@ -22,7 +23,7 @@ random_setu = Setu().on_command( @random_setu.handle() -async def _random_setu(bot: Bot, event: MessageEvent): +async def _random_setu(bot: Bot, event: MessageEvent, matcher: Matcher, args: Message = CommandArg()): user_id = event.get_user_id() if not _setu_flmt.check(user_id): await random_setu.finish() @@ -44,12 +45,25 @@ async def _random_setu(bot: Bot, event: MessageEvent): await asyncio.sleep(30) await bot.delete_msg(message_id=event_id) + msg = args.extract_plain_text() + if msg: + matcher.set_arg("r_rush_after_think", args) + +@random_setu.got("r_rush_after_think") +async def _(think: str = ArgPlainText("r_rush_after_think")): + is_repo = will_think(think) + if not is_repo: + await random_setu.finish() + else: + await random_setu.finish(is_repo) + + tag_setu = Setu().on_regex(r"来[张点丶份](.*?)的[涩色🐍]图", "根据提供的tag查找涩图") @tag_setu.handle() -async def _tag_setu(bot: Bot, event: MessageEvent): +async def _tag_setu(bot: Bot, event: MessageEvent, matcher: Matcher, args: Message = CommandArg()): user_id = event.get_user_id() if not _setu_flmt.check(user_id): await random_setu.finish() @@ -77,6 +91,19 @@ async def _tag_setu(bot: Bot, event: MessageEvent): await asyncio.sleep(30) await bot.delete_msg(message_id=event_id) + msg = args.extract_plain_text() + if msg: + matcher.set_arg("r_rush_after_think", args) + + +@tag_setu.got("t_rush_after_think") +async def _(think: str = ArgPlainText("t_rush_after_think")): + is_repo = will_think(think) + if not is_repo: + await random_setu.finish() + else: + await random_setu.finish(is_repo) + _catcher_max_file_size = 128 @@ -129,17 +156,16 @@ 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() +async def _nsfw_checker(matcher: Matcher, args: Message = CommandArg()): + msg = args.extract_plain_text() if msg: - state["nsfw_img"] = msg + matcher.set_arg("nsfw_img", args) @nsfw_checker.got("nsfw_img", "图呢?") -async def _deal_check(bot: Bot, event: MessageEvent, state: T_State): - msg = state["nsfw_img"] +async def _deal_check(bot: Bot, img: str = ArgPlainText("nsfw_img")): pattern = r"url=(.*?)]" - args = re.findall(pattern, msg) + args = re.findall(pattern, img) if not args: await nsfw_checker.reject("请发送图片而不是其他东西!!") @@ -167,16 +193,15 @@ catcher_setting = Setu().on_command("嗅探设置", "涩图检测图片文件大 @catcher_setting.handle() -async def _catcher_setting(bot: Bot, event: MessageEvent, state: T_State): - msg = str(event.message).strip() +async def _catcher_setting(matcher: Matcher, args: Message = CommandArg()): + msg = args.extract_plain_text() if msg: - state["catcher_set"] = msg + matcher.set_arg("catcher_set", args) @catcher_setting.got("catcher_set", "数值呢?(1对应1kb,默认128)") -async def _deal_setting(bot: Bot, event: MessageEvent, state: T_State): +async def _deal_setting(msg: str = ArgPlainText("catcher_set")): global _catcher_max_file_size - msg = state["catcher_set"] try: _catcher_max_file_size = int(msg) except Exception: @@ -205,3 +230,37 @@ async def _scheduler_setu(bot): except Exception: pass + + +_ag_l = ["涩图来", "来点涩图", "来份涩图"] +_ag_patt = r"来[张点丶份](.*?)的[涩色🐍]图" + +_nice_patt = r"[hH好][sS涩色][oO哦]|[嗯恩摁社蛇🐍射]了|(硬|石更)了|[牛🐂][牛🐂]要炸了|[炼恋]起来|开?导" +_nope_patt = r"不够[涩色]|就这|这也[是叫算]|[??]" +_again_patt = r"再来一张|不够" + +_nice_repo = ["w", "好诶!", "ohh", "(///w///)", "🥵", "我也"] +_nope_repo = ["那你来发", "爱看不看", "你看不看吧", "看这种类型的涩图,是一件多么美妙的事情"] +_again_repo = ["没了...", "自己找去"] + + +def will_think(msg: str) -> str: + if msg in _ag_l: + return str() + + ag_jud = re.findall(_ag_patt, msg) + if ag_jud: + return str() + + nice_jud = re.findall(_nice_patt, msg) + nope_jud = re.findall(_nope_patt, msg) + again_jud = re.findall(_again_patt, msg) + + if nice_jud: + return choice(_nice_repo) + elif nope_jud: + return choice(_nope_repo) + elif again_jud: + return choice(_again_repo) + else: + return str() |