diff options
Diffstat (limited to 'ATRI/plugins/rss')
-rw-r--r-- | ATRI/plugins/rss/__init__.py | 32 | ||||
-rw-r--r-- | ATRI/plugins/rss/rss_mikanan/__init__.py | 36 | ||||
-rw-r--r-- | ATRI/plugins/rss/rss_mikanan/data_source.py | 20 | ||||
-rw-r--r-- | ATRI/plugins/rss/rss_rsshub/__init__.py | 30 | ||||
-rw-r--r-- | ATRI/plugins/rss/rss_rsshub/data_source.py | 17 |
5 files changed, 54 insertions, 81 deletions
diff --git a/ATRI/plugins/rss/__init__.py b/ATRI/plugins/rss/__init__.py index a29f385..3f0b906 100644 --- a/ATRI/plugins/rss/__init__.py +++ b/ATRI/plugins/rss/__init__.py @@ -1,28 +1,25 @@ from pathlib import Path from nonebot.adapters.onebot.v11 import MessageEvent -from nonebot.permission import SUPERUSER -from nonebot.adapters.onebot.v11 import GROUP_OWNER, GROUP_ADMIN +from ATRI.permission import ADMIN from ATRI.service import Service +from ATRI.message import MessageBuilder RSS_PLUGIN_DIR = Path(".") / "ATRI" / "plugins" / "rss" -class RssHelper(Service): - def __init__(self): - Service.__init__( - self, - "rss", - "Rss系插件助手", - True, - permission=SUPERUSER | GROUP_OWNER | GROUP_ADMIN, - main_cmd="/rss", - ) +rss_helper = ( + Service("rss") + .document("Rss系插件助手") + .only_admin(True) + .permission(ADMIN) + .main_cmd("/rss") +) -rss_menu = RssHelper().on_command("/rss", "Rss帮助菜单") +rss_menu = rss_helper.on_command("/rss", "Rss帮助菜单") @rss_menu.handle() @@ -32,8 +29,9 @@ async def _rss_menu(event: MessageEvent): if not rss_list: rss_list = [str(i).split("\\")[-1] for i in raw_rss_list] - result = f"""Rss Helper: - 可用订阅源: {"、".join(map(str, rss_list)).replace("rss_", str())} - 命令: /rss.(订阅源名称) - """.strip() + result = ( + MessageBuilder("Rss Helper:") + .text(f"可用订阅源: {', '.join(map(str, rss_list)).replace('rss_', str())}") + .text("命令: /rss.(订阅源名称)") + ) await rss_menu.finish(result) diff --git a/ATRI/plugins/rss/rss_mikanan/__init__.py b/ATRI/plugins/rss/rss_mikanan/__init__.py index a04f5cd..3165438 100644 --- a/ATRI/plugins/rss/rss_mikanan/__init__.py +++ b/ATRI/plugins/rss/rss_mikanan/__init__.py @@ -14,6 +14,9 @@ from nonebot.permission import Permission from nonebot.adapters.onebot.v11 import Message, GroupMessageEvent from ATRI.log import log +from ATRI.service import Service +from ATRI.permission import ADMIN +from ATRI.message import MessageBuilder from ATRI.plugins.rss.rss_rsshub.data_source import RssHubSubscriptor from ATRI.utils import timestamp2datetime from ATRI.utils.apscheduler import scheduler @@ -22,7 +25,16 @@ from ATRI.database import RssMikananiSubcription from .data_source import RssMikananSubscriptor -add_sub = RssMikananSubscriptor().cmd_as_group("add", "为本群添加 Mikan 订阅") +plugin = ( + Service("rss.mikan") + .document("Rss的mikan支持") + .permission(ADMIN) + .main_cmd("/rss.mikan") +) +sub = RssMikananSubscriptor() + + +add_sub = plugin.cmd_as_group("add", "为本群添加 Mikan 订阅") @add_sub.handle() @@ -35,19 +47,17 @@ async def _(matcher: Matcher, args: Message = CommandArg()): @add_sub.got("rm_add_url", prompt="Mikan 链接呢? 速速") async def _(event: GroupMessageEvent, _url: str = ArgPlainText("rm_add_url")): group_id = event.group_id - sub = RssMikananSubscriptor() result = await sub.add_sub(_url, group_id) await add_sub.finish(result) -del_sub = RssMikananSubscriptor().cmd_as_group("del", "删除本群 Mikan 订阅") +del_sub = plugin.cmd_as_group("del", "删除本群 Mikan 订阅") @del_sub.handle() async def _(event: GroupMessageEvent): group_id = event.group_id - sub = RssMikananSubscriptor() query_result = await sub.get_sub_list({"group_id": group_id}) if not query_result: @@ -69,21 +79,17 @@ async def _(event: GroupMessageEvent, _id: str = ArgPlainText("rm_del_sub_id")): await del_sub.finish("已取消操作~") group_id = event.group_id - sub = RssMikananSubscriptor() result = await sub.del_sub(_id, group_id) await del_sub.finish(result) -get_sub_list = RssMikananSubscriptor().cmd_as_group( - "list", "获取本群 Mikan 订阅列表", permission=Permission() -) +get_sub_list = plugin.cmd_as_group("list", "获取本群 Mikan 订阅列表", permission=Permission()) @get_sub_list.handle() async def _(event: GroupMessageEvent): group_id = event.group_id - sub = RssMikananSubscriptor() query_result = await sub.get_sub_list({"group_id": group_id}) if not query_result: @@ -104,7 +110,7 @@ tq = asyncio.Queue() class RssMikanDynamicChecker(BaseTrigger): def get_next_fire_time(self, previous_fire_time, now): - conf = RssHubSubscriptor().load_service("rss.mikan") + conf = plugin.load_service("rss.mikan") if conf.get("enabled"): return now @@ -112,11 +118,10 @@ class RssMikanDynamicChecker(BaseTrigger): @scheduler.scheduled_job( AndTrigger([IntervalTrigger(seconds=60), RssMikanDynamicChecker()]), name="Mikan 订阅检查", - max_instances=3, - misfire_grace_time=60, + max_instances=3, # type: ignore + misfire_grace_time=60, # type: ignore ) async def _(): - sub = RssMikananSubscriptor() try: all_dy = await sub.get_all_subs() except Exception: @@ -156,10 +161,7 @@ async def _(): if ts < m_t: title = data.title - repo = f"""本群订阅的 Mikan 更新啦! - {title} - {link} - """ + repo = MessageBuilder("本群订阅的 Mikan 更新啦!").text(f"{title}").text(f"{link}") bot = get_bot() await bot.send_group_msg(group_id=data.group_id, message=repo) diff --git a/ATRI/plugins/rss/rss_mikanan/data_source.py b/ATRI/plugins/rss/rss_mikanan/data_source.py index 6397c70..6aec1b5 100644 --- a/ATRI/plugins/rss/rss_mikanan/data_source.py +++ b/ATRI/plugins/rss/rss_mikanan/data_source.py @@ -1,11 +1,5 @@ import xmltodict -from nonebot.permission import SUPERUSER -from nonebot.adapters.onebot.v11 import GROUP_OWNER, GROUP_ADMIN - - -from ATRI.service import Service -from ATRI.rule import is_in_service from ATRI.exceptions import RssError from ATRI.utils import request, gen_random_str @@ -13,17 +7,7 @@ from ATRI.utils import request, gen_random_str from .db import DB -class RssMikananSubscriptor(Service): - def __init__(self): - Service.__init__( - self, - "rss.mikan", - "Rss的mikan支持", - rule=is_in_service("rss.mikan"), - permission=SUPERUSER | GROUP_OWNER | GROUP_ADMIN, - main_cmd="/rss.mikan", - ) - +class RssMikananSubscriptor: async def __add_sub(self, _id: str, group_id: int): try: async with DB() as db: @@ -98,7 +82,7 @@ class RssMikananSubscriptor(Service): try: resp = await request.get(url) except Exception: - RssError("rss.mikan: 请求链接失败") + raise RssError("rss.mikan: 请求链接失败") xml_data = resp.read() data = xmltodict.parse(xml_data) diff --git a/ATRI/plugins/rss/rss_rsshub/__init__.py b/ATRI/plugins/rss/rss_rsshub/__init__.py index 54d0502..7d2843b 100644 --- a/ATRI/plugins/rss/rss_rsshub/__init__.py +++ b/ATRI/plugins/rss/rss_rsshub/__init__.py @@ -14,6 +14,8 @@ from nonebot.permission import Permission from nonebot.adapters.onebot.v11 import Message, GroupMessageEvent from ATRI.log import log +from ATRI.service import Service +from ATRI.permission import ADMIN from ATRI.utils import timestamp2datetime from ATRI.utils.apscheduler import scheduler from ATRI.database import RssRsshubSubcription @@ -21,7 +23,16 @@ from ATRI.database import RssRsshubSubcription from .data_source import RssHubSubscriptor -add_sub = RssHubSubscriptor().cmd_as_group("add", "为本群添加 RSSHub 订阅") +plugin = ( + Service("rss.rsshub") + .document("Rss的Rsshub支持") + .permission(ADMIN) + .main_cmd("/rss.rsshub") +) +sub = RssHubSubscriptor() + + +add_sub = plugin.cmd_as_group("add", "为本群添加 RSSHub 订阅") @add_sub.handle() @@ -34,19 +45,17 @@ async def _(matcher: Matcher, args: Message = CommandArg()): @add_sub.got("rrh_add_url", "RSSHub 链接呢?速速") async def _(event: GroupMessageEvent, _url: str = ArgPlainText("rrh_add_url")): group_id = event.group_id - sub = RssHubSubscriptor() result = await sub.add_sub(_url, group_id) await add_sub.finish(result) -del_sub = RssHubSubscriptor().cmd_as_group("del", "删除本群 RSSHub 订阅") +del_sub = plugin.cmd_as_group("del", "删除本群 RSSHub 订阅") @del_sub.handle() async def _(event: GroupMessageEvent): group_id = event.group_id - sub = RssHubSubscriptor() query_result = await sub.get_sub_list({"group_id": group_id}) if not query_result: @@ -68,21 +77,17 @@ async def _(event: GroupMessageEvent, _id: str = ArgPlainText("rrh_del_sub_id")) await del_sub.finish("已取消操作~") group_id = event.group_id - sub = RssHubSubscriptor() result = await sub.del_sub(_id, group_id) await del_sub.finish(result) -get_sub_list = RssHubSubscriptor().cmd_as_group( - "list", "获取本群 RSSHub 订阅列表", permission=Permission() -) +get_sub_list = plugin.cmd_as_group("list", "获取本群 RSSHub 订阅列表", permission=Permission()) @get_sub_list.handle() async def _(event: GroupMessageEvent): group_id = event.group_id - sub = RssHubSubscriptor() query_result = await sub.get_sub_list({"group_id": group_id}) if not query_result: @@ -103,7 +108,7 @@ tq = asyncio.Queue() class RssHubDynamicChecker(BaseTrigger): def get_next_fire_time(self, previous_fire_time, now): - conf = RssHubSubscriptor().load_service("rss.rsshub") + conf = plugin.load_service("rss.rsshub") if conf.get("enabled"): return now @@ -111,11 +116,10 @@ class RssHubDynamicChecker(BaseTrigger): @scheduler.scheduled_job( AndTrigger([IntervalTrigger(seconds=120), RssHubDynamicChecker()]), name="RssHub 订阅检查", - max_instances=3, - misfire_grace_time=60, + max_instances=3, # type: ignore + misfire_grace_time=60, # type: ignore ) async def _(): - sub = RssHubSubscriptor() try: all_dy = await sub.get_all_subs() except Exception: diff --git a/ATRI/plugins/rss/rss_rsshub/data_source.py b/ATRI/plugins/rss/rss_rsshub/data_source.py index ca6f80c..9ca1c04 100644 --- a/ATRI/plugins/rss/rss_rsshub/data_source.py +++ b/ATRI/plugins/rss/rss_rsshub/data_source.py @@ -1,27 +1,12 @@ import xmltodict -from nonebot.permission import SUPERUSER -from nonebot.adapters.onebot.v11 import GROUP_OWNER, GROUP_ADMIN - -from ATRI.service import Service -from ATRI.rule import is_in_service from ATRI.exceptions import RssError from ATRI.utils import request, gen_random_str from .db import DB -class RssHubSubscriptor(Service): - def __init__(self): - Service.__init__( - self, - "rss.rsshub", - "Rss的Rsshub支持", - rule=is_in_service("rss.rsshub"), - permission=SUPERUSER | GROUP_OWNER | GROUP_ADMIN, - main_cmd="/rss.rsshub", - ) - +class RssHubSubscriptor: async def __add_sub(self, _id: str, group_id: int): try: async with DB() as db: |