From 97317ed2c6265d09dd932f90c7fce972bdc5f017 Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Wed, 13 Jul 2022 22:54:13 +0800 Subject: [PATCH] update bilibili_sub --- README.md | 11 +++++++++- plugins/bilibili_sub/__init__.py | 34 ++++++++++++++++++++++++----- plugins/bilibili_sub/data_source.py | 3 +++ plugins/bilibili_sub/model.py | 18 +++++++-------- 4 files changed, 51 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index a6871a76..39da03c0 100644 --- a/README.md +++ b/README.md @@ -243,6 +243,15 @@ __Docker 最新版本由 [Sakuracio](https://github.com/Sakuracio) 提供__ ## 更新 +### 2022/7/13 + +* B站订阅提供配置项`LIVE_MSG_AT_ALL`,`UP_MSG_AT_ALL`:控制UP动态投稿和直播是否AT全体 + +### 2022/7/9 + +* 修改了Omega图库检测的数据库文件名 +* game_utils提供了Game类 + ### 2022/7/4 * 修复商品未设置限购时无法购买 @@ -550,7 +559,7 @@ __Docker 最新版本由 [Sakuracio](https://github.com/Sakuracio) 提供__ * 修复点歌无法正确发送 * 修复我有一个朋友有时文本会包含CQ码 * 修复群欢消息被动控制文本未删除 [@pull/124](https://github.com/HibiKier/zhenxun_bot/pull/124) -* message_builder.image不再提供参数:abspath +* message_builder.image不再提供参数:abspath ### 2022/2/23 diff --git a/plugins/bilibili_sub/__init__.py b/plugins/bilibili_sub/__init__.py index aadce645..f6676752 100755 --- a/plugins/bilibili_sub/__init__.py +++ b/plugins/bilibili_sub/__init__.py @@ -1,6 +1,8 @@ from nonebot import on_command from nonebot.typing import T_State from nonebot.adapters.onebot.v11 import Bot, MessageEvent, GroupMessageEvent, Message + +from utils.message_builder import at from .data_source import ( add_live_sub, delete_sub, @@ -50,7 +52,17 @@ __plugin_configs__ = { "value": 5, "help": "群内bilibili订阅需要管理的权限", "default_value": 5, - } + }, + "LIVE_MSG_AT_ALL": { + "value": False, + "help": "直播提醒是否AT全体(仅在真寻是管理员时生效)", + "default_value": False, + }, + "UP_MSG_AT_ALL": { + "value": False, + "help": "UP动态投稿提醒是否AT全体(仅在真寻是管理员时生效)", + "default_value": False, + }, } add_sub = on_command("添加订阅", priority=5, block=True) @@ -233,10 +245,22 @@ async def send_sub_msg(rst: str, sub: BilibiliSub, bot: Bot): for x in sub.sub_users.split(",")[:-1]: try: if ":" in x and x.split(":")[1] not in temp_group: - temp_group.append(x.split(":")[1]) - await bot.send_group_msg( - group_id=int(x.split(":")[1]), message=Message(rst) - ) + group_id = int(x.split(":")[1]) + temp_group.append(group_id) + if ( + await bot.get_group_member_info( + group_id=group_id, user_id=int(bot.self_id), no_cache=True + ) + )["role"] in ["owner", "admin"]: + if ( + sub.sub_type == "live" + and Config.get_config("bilibili_sub", "LIVE_MSG_AT_ALL") + ) or ( + sub.sub_type == "up" + and Config.get_config("bilibili_sub", "UP_MSG_AT_ALL") + ): + rst = "[CQ:at,qq=all]\n" + rst + await bot.send_group_msg(group_id=group_id, message=Message(rst)) else: await bot.send_private_msg(user_id=int(x), message=Message(rst)) except Exception as e: diff --git a/plugins/bilibili_sub/data_source.py b/plugins/bilibili_sub/data_source.py index a34c06d5..a1ca3fb8 100755 --- a/plugins/bilibili_sub/data_source.py +++ b/plugins/bilibili_sub/data_source.py @@ -3,6 +3,8 @@ from nonebot.adapters.onebot.v11 import MessageSegment from utils.manager import resources_manager from asyncio.exceptions import TimeoutError + +from utils.utils import get_bot from .model import BilibiliSub from bilireq.live import get_room_info_by_id from .utils import get_meta @@ -229,6 +231,7 @@ async def _get_live_status(id_: int) -> Optional[str]: await BilibiliSub.update_sub_info(id_, live_status=live_status) if sub.live_status == 0 and live_status == 1: return ( + f"" f"{image(cover)}\n" f"{sub.uname} 开播啦!\n" f"标题:{title}\n" diff --git a/plugins/bilibili_sub/model.py b/plugins/bilibili_sub/model.py index 777cebf4..449c36ce 100755 --- a/plugins/bilibili_sub/model.py +++ b/plugins/bilibili_sub/model.py @@ -47,9 +47,9 @@ class BilibiliSub(db.Model): season_update_time: Optional[datetime] = None, ) -> bool: """ - 说明: + 说明: 添加订阅 - 参数: + 参数: :param sub_id: 订阅名称,房间号,番剧号等 :param sub_type: 订阅类型 :param sub_user: 订阅此条目的用户 @@ -110,9 +110,9 @@ class BilibiliSub(db.Model): @classmethod async def delete_bilibili_sub(cls, sub_id: int, sub_user: str) -> bool: """ - 说明: + 说明: 删除订阅 - 参数: + 参数: :param sub_id: 订阅名称 :param sub_user: 删除此条目的用户 """ @@ -140,9 +140,9 @@ class BilibiliSub(db.Model): @classmethod async def get_sub(cls, sub_id: int) -> Optional["BilibiliSub"]: """ - 说明: + 说明: 获取订阅对象 - 参数: + 参数: :param sub_id: 订阅 id """ return await cls.query.where(cls.sub_id == sub_id).gino.first() @@ -173,9 +173,9 @@ class BilibiliSub(db.Model): season_update_time: Optional[datetime] = None, ) -> bool: """ - 说明: + 说明: 更新订阅信息 - 参数: + 参数: :param sub_id: 订阅名称,房间号,番剧号等 :param live_short_id: 直接短 id :param live_status: 主播开播状态 @@ -232,7 +232,7 @@ class BilibiliSub(db.Model): cls, ) -> "List[BilibiliSub], List[BilibiliSub], List[BilibiliSub]": """ - 说明: + 说明: 分类获取所有数据 """ live_data = []