summaryrefslogtreecommitdiff
path: root/ATRI/plugins/setu/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/setu/__init__.py')
-rw-r--r--ATRI/plugins/setu/__init__.py83
1 files changed, 79 insertions, 4 deletions
diff --git a/ATRI/plugins/setu/__init__.py b/ATRI/plugins/setu/__init__.py
index b316020..7eb2c61 100644
--- a/ATRI/plugins/setu/__init__.py
+++ b/ATRI/plugins/setu/__init__.py
@@ -1,7 +1,82 @@
-import nonebot
-from pathlib import Path
+import re
+import asyncio
+from random import choice
+from nonebot.adapters.cqhttp import Bot, MessageEvent, Message
+from ATRI.utils.limit import FreqLimiter, DailyLimiter
+from ATRI.utils.apscheduler import scheduler
+from .data_source import Setu
-_sub_plugins = set()
-_sub_plugins |= nonebot.load_plugins(str((Path(__file__).parent / "modules").resolve()))
+_setu_flmt = FreqLimiter(120)
+_setu_dlmt = DailyLimiter(5)
+
+
+random_setu = Setu().on_command("来张涩图", "来张随机涩图,冷却2分钟,每天限5张", aliases={"涩图来", "来点涩图", "来份涩图"})
+
+@random_setu.handle()
+async def _random_setu(bot: Bot, event: MessageEvent):
+ user_id = event.get_user_id()
+ if not _setu_flmt.check(user_id):
+ await random_setu.finish()
+ if not _setu_dlmt.check(user_id):
+ await random_setu.finish()
+
+ setu, title, p_id = await Setu().random_setu()
+ repo = (
+ f"Title: {title}\n"
+ f"Pid: {p_id}"
+ )
+ await bot.send(event, repo)
+ msg_1 = await bot.send(event, Message(setu))
+ event_id = msg_1["message_id"]
+ _setu_flmt.start_cd(user_id)
+ _setu_dlmt.increase(user_id)
+ await asyncio.sleep(30)
+ await bot.delete_msg(message_id=event_id)
+
+
+tag_setu = Setu().on_regex(r"来[张点丶份](.*?)的[涩色🐍]图", "根据提供的tag查找涩图")
+
+@tag_setu.handle()
+async def _tag_setu(bot: Bot, event: MessageEvent):
+ user_id = event.get_user_id()
+ if not _setu_flmt.check(user_id):
+ await random_setu.finish()
+ if not _setu_dlmt.check(user_id):
+ await random_setu.finish()
+
+ msg = str(event.message).strip()
+ pattern = r"来[张点丶份](.*?)的[涩色🐍]图"
+ tag = re.findall(pattern, msg)[0]
+ setu, title, p_id, is_ok = await Setu().tag_setu(tag)
+ if not is_ok:
+ await tag_setu.finish(f"没有 {tag} 的涩图呢...")
+ repo_0 = (
+ f"Title: {title}\n"
+ f"Pid: {p_id}"
+ )
+
+ await bot.send(event, repo_0)
+ msg_1 = await bot.send(event, Message(setu))
+ event_id = msg_1["message_id"]
+ _setu_flmt.start_cd(user_id)
+ _setu_dlmt.increase(user_id)
+ await asyncio.sleep(30)
+ await bot.delete_msg(message_id=event_id)
+
+
[email protected]_job("interval", hours=1, misfire_grace_time=60, args=[Bot])
+async def _scheduler_setu(bot):
+ try:
+ group_list = await bot.get_group_list()
+ lucky_group = choice(group_list)
+ group_id = lucky_group["group_id"]
+ setu = await Setu().scheduler()
+ msg_0 = await bot.send_group_msg(group_id=int(group_id), message=Message(setu))
+ message_id = msg_0["message_id"]
+ await asyncio.sleep(60)
+ await bot.delete_msg(message_id=message_id)
+
+ except BaseException:
+ pass