diff options
Diffstat (limited to 'ATRI/plugins/twitter/data_source.py')
-rw-r--r-- | ATRI/plugins/twitter/data_source.py | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/ATRI/plugins/twitter/data_source.py b/ATRI/plugins/twitter/data_source.py index 8d36b18..375c06c 100644 --- a/ATRI/plugins/twitter/data_source.py +++ b/ATRI/plugins/twitter/data_source.py @@ -1,3 +1,5 @@ +from datetime import datetime + from nonebot.permission import SUPERUSER from nonebot.adapters.onebot.v11 import GROUP_OWNER, GROUP_ADMIN @@ -30,7 +32,7 @@ class TwitterDynamicSubscriptor(Service): main_cmd="/td", ) - async def add_sub(self, tid: int, group_id: int): + async def __add_sub(self, tid: int, group_id: int): try: async with DB() as db: await db.add_sub(tid, group_id) @@ -44,10 +46,10 @@ class TwitterDynamicSubscriptor(Service): except Exception: raise TwitterDynamicError("更新订阅失败") - async def del_sub(self, screen_name: str, group_id: int): + async def __del_sub(self, tid: int, group_id: int): try: async with DB() as db: - await db.del_sub({"screen_name": screen_name, "group_id": group_id}) + await db.del_sub({"tid": tid, "group_id": group_id}) except Exception: raise TwitterDynamicError("删除订阅失败") @@ -103,6 +105,38 @@ class TwitterDynamicSubscriptor(Service): .replace("http://", str()), ) + async def add_sub(self, name: str, group_id: int) -> str: + t_name, t_screen_name = await self.get_twitter_username(name) + if not t_name or not t_screen_name: + return f"无法获取名为 {name} 的推主的信息...操作失败了" + + res = await self.get_twitter_user_info(name) + tid = res["id"] + + query_result = await self.get_sub_list(tid, group_id) + if query_result: + return f"该推主 {t_name}@{t_screen_name}\n已在本群订阅列表中啦!" + + await self.__add_sub(tid, group_id) + await self.update_sub( + tid, + group_id, + { + "name": t_name, + "screen_name": t_screen_name, + "last_update": datetime.utcnow(), + }, + ) + return f"成功订阅名为 {t_name}@{t_screen_name} 推主的动态~!" + + async def del_sub(self, tid: int, group_id: int) -> str: + query_result = await self.get_sub_list(tid, group_id) + if not query_result: + return f"取消订阅失败...该tid: {tid} 不在本群订阅列表中" + + await self.__del_sub(tid, group_id) + return f"成功取消tid为 {tid} 推主的订阅~" + # TODO # class TwitterHelper(Service): |