summaryrefslogtreecommitdiff
path: root/ATRI/plugins/twitter
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/twitter')
-rw-r--r--ATRI/plugins/twitter/__init__.py36
-rw-r--r--ATRI/plugins/twitter/data_source.py18
2 files changed, 21 insertions, 33 deletions
diff --git a/ATRI/plugins/twitter/__init__.py b/ATRI/plugins/twitter/__init__.py
index 35c07f7..14c9ee8 100644
--- a/ATRI/plugins/twitter/__init__.py
+++ b/ATRI/plugins/twitter/__init__.py
@@ -11,12 +11,15 @@ from apscheduler.triggers.interval import IntervalTrigger
from nonebot import get_bot
from nonebot.matcher import Matcher
from nonebot.params import CommandArg, ArgPlainText
-from nonebot.permission import Permission, SUPERUSER
+from nonebot.permission import Permission
from nonebot.adapters.onebot.v11 import Message, MessageSegment, GroupMessageEvent, Bot
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.permission import MASTER
from ATRI.database import TwitterSubscription
from .data_source import TwitterDynamicSubscriptor
@@ -25,7 +28,11 @@ from .data_source import TwitterDynamicSubscriptor
_CONTENT_LIMIT: int = 0
-add_sub = TwitterDynamicSubscriptor().cmd_as_group("add", "添加推主订阅")
+twitter = Service("推特动态订阅").document("推特动态订阅助手~").permission(ADMIN).main_cmd("/td")
+sub = TwitterDynamicSubscriptor()
+
+
+add_sub = twitter.cmd_as_group("add", "添加推主订阅")
@add_sub.handle()
@@ -40,19 +47,17 @@ async def _td_deal_add_sub(
event: GroupMessageEvent, _name: str = ArgPlainText("td_add_sub_name")
):
group_id = event.group_id
- sub = TwitterDynamicSubscriptor()
result = await sub.add_sub(_name, group_id)
await add_sub.finish(result)
-del_sub = TwitterDynamicSubscriptor().cmd_as_group("del", "删除推主订阅")
+del_sub = twitter.cmd_as_group("del", "删除推主订阅")
@del_sub.handle()
async def _td_del_sub(event: GroupMessageEvent):
group_id = event.group_id
- sub = TwitterDynamicSubscriptor()
query_result = await sub.get_sub_list(group_id=group_id)
if not query_result:
@@ -79,21 +84,17 @@ async def _td_deal_del_sub(
group_id = event.group_id
tid = int(_tid)
- sub = TwitterDynamicSubscriptor()
result = await sub.del_sub(int(tid), group_id)
await del_sub.finish(result)
-get_sub_list = TwitterDynamicSubscriptor().cmd_as_group(
- "list", "获取本群推主订阅列表", permission=Permission()
-)
+get_sub_list = twitter.cmd_as_group("list", "获取本群推主订阅列表", permission=Permission())
@get_sub_list.handle()
async def _td_get_sub_list(event: GroupMessageEvent):
group_id = event.group_id
- sub = TwitterDynamicSubscriptor()
query_result = await sub.get_sub_list(group_id=group_id)
if not query_result:
@@ -114,9 +115,7 @@ async def _td_get_sub_list(event: GroupMessageEvent):
await get_sub_list.finish(output)
-limit_content = TwitterDynamicSubscriptor().cmd_as_group(
- "limit", "设置订阅内容字数限制", permission=SUPERUSER
-)
+limit_content = twitter.cmd_as_group("limit", "设置订阅内容字数限制", permission=MASTER)
@limit_content.handle()
@@ -144,8 +143,7 @@ tq = asyncio.Queue()
class TwitterDynamicChecker(BaseTrigger):
def get_next_fire_time(self, previous_fire_time, now):
- sub = TwitterDynamicSubscriptor()
- conf = sub.load_service("推特动态订阅")
+ conf = twitter.load_service("推特动态订阅")
if conf.get("enabled"):
return now
@@ -157,7 +155,6 @@ class TwitterDynamicChecker(BaseTrigger):
misfire_grace_time=60, # type: ignore
)
async def _check_td():
- sub = TwitterDynamicSubscriptor()
try:
all_dy = await sub.get_all_subs()
except Exception:
@@ -170,7 +167,12 @@ async def _check_td():
else:
m: TwitterSubscription = tq.get_nowait()
- _bot: Bot = get_bot()
+ try:
+ _bot: Bot = get_bot() # type: ignore
+ except Exception:
+ log.warning("当前无在线协议端, 已停止推送")
+ return
+
group_list = await _bot.get_group_list()
gl = [f"{i['group_id']}" for i in group_list]
if m.group_id not in gl:
diff --git a/ATRI/plugins/twitter/data_source.py b/ATRI/plugins/twitter/data_source.py
index 8f3e793..c735b1f 100644
--- a/ATRI/plugins/twitter/data_source.py
+++ b/ATRI/plugins/twitter/data_source.py
@@ -1,11 +1,7 @@
from datetime import datetime
-from nonebot.permission import SUPERUSER
-from nonebot.adapters.onebot.v11 import GROUP_OWNER, GROUP_ADMIN
-
from ATRI import driver
-from ATRI.service import Service, ServiceTools
-from ATRI.rule import is_in_service
+from ATRI.service import ServiceTools
from ATRI.log import log
from ATRI.utils import request
from ATRI.utils.apscheduler import scheduler
@@ -21,17 +17,7 @@ _DYNAMIC_OUTPUT_FORMAT = (
)
-class TwitterDynamicSubscriptor(Service):
- def __init__(self):
- Service.__init__(
- self,
- "推特动态订阅",
- "推特动态订阅助手~",
- rule=is_in_service("推特动态订阅"),
- permission=SUPERUSER | GROUP_OWNER | GROUP_ADMIN,
- main_cmd="/td",
- )
-
+class TwitterDynamicSubscriptor:
async def __add_sub(self, tid: int, group_id: int):
try:
async with DB() as db: