summaryrefslogtreecommitdiff
path: root/ATRI/plugins/rss
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/rss')
-rw-r--r--ATRI/plugins/rss/__init__.py32
-rw-r--r--ATRI/plugins/rss/rss_mikanan/__init__.py36
-rw-r--r--ATRI/plugins/rss/rss_mikanan/data_source.py20
-rw-r--r--ATRI/plugins/rss/rss_rsshub/__init__.py30
-rw-r--r--ATRI/plugins/rss/rss_rsshub/data_source.py17
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: