diff --git a/resources/template/sign/main.css b/resources/template/sign/main.css index 3f868cc2..5d9a7016 100644 --- a/resources/template/sign/main.css +++ b/resources/template/sign/main.css @@ -279,6 +279,7 @@ body { position: absolute; font-size: 20px; top: 350px; - left: 260px; + left: 250px; font-family: 'yshsFont'; + width: 210px; } \ No newline at end of file diff --git a/zhenxun/builtin_plugins/admin/group_update.py b/zhenxun/builtin_plugins/admin/group_update.py new file mode 100644 index 00000000..9b263703 --- /dev/null +++ b/zhenxun/builtin_plugins/admin/group_update.py @@ -0,0 +1,45 @@ +from nonebot.adapters import Bot +from nonebot.plugin import PluginMetadata +from nonebot_plugin_alconna import Alconna, Arparma, on_alconna +from nonebot_plugin_session import EventSession + +from zhenxun.configs.utils import PluginExtraData +from zhenxun.services.log import logger +from zhenxun.utils.enum import PluginType +from zhenxun.utils.message import MessageUtils +from zhenxun.utils.platform import PlatformUtils +from zhenxun.utils.rules import admin_check, ensure_group + +__plugin_meta__ = PluginMetadata( + name="更新群组列表", + description="更新群组列表", + usage=""" + 更新群组的基本信息 + 指令: + 更新群组信息 + """.strip(), + extra=PluginExtraData( + author="HibiKier", + version="0.1", + plugin_type=PluginType.SUPER_AND_ADMIN, + admin_level=1, + ).dict(), +) + + +_matcher = on_alconna( + Alconna("更新群组信息"), + rule=admin_check(1) & ensure_group, + priority=5, + block=True, +) + + +@_matcher.handle() +async def _(bot: Bot, session: EventSession, arparma: Arparma): + logger.info("更新群组信息", arparma.header_result, session=session) + try: + await PlatformUtils.update_group(bot) + await MessageUtils.build_message("已经成功更新了群组信息!").send(reply_to=True) + except Exception as e: + await MessageUtils.build_message("更新群组信息失败!").finish(reply_to=True) diff --git a/zhenxun/builtin_plugins/init/__init__.py b/zhenxun/builtin_plugins/init/__init__.py index b3bab4db..0631c9ed 100644 --- a/zhenxun/builtin_plugins/init/__init__.py +++ b/zhenxun/builtin_plugins/init/__init__.py @@ -23,17 +23,15 @@ async def _(bot: Bot): if PlatformUtils.get_platform(bot) == "qq": logger.debug(f"更新Bot: {bot.self_id} 的群认证...") group_list, _ = await PlatformUtils.get_group_list(bot) - gid_list = [(g.group_id, g.group_name) for g in group_list] db_group_list = await GroupConsole.all().values_list("group_id", flat=True) create_list = [] update_id = [] - for gid, name in gid_list: - if gid not in db_group_list: - create_list.append( - GroupConsole(group_id=gid, group_name=name, group_flag=1) - ) + for group in group_list: + if group.group_id not in db_group_list: + group.group_flag = 1 + create_list.append(group) else: - update_id.append(gid) + update_id.append(group.group_id) if create_list: await GroupConsole.bulk_create(create_list, 10) else: diff --git a/zhenxun/utils/platform.py b/zhenxun/utils/platform.py index 57eb09c1..cc481104 100644 --- a/zhenxun/utils/platform.py +++ b/zhenxun/utils/platform.py @@ -349,22 +349,37 @@ class PlatformUtils: int: 更新个数 """ create_list = [] + update_list = [] group_list, platform = await cls.get_group_list(bot) if group_list: - exists_group_list = await GroupConsole.all().values_list( - "group_id", "channel_id" - ) + db_group = await GroupConsole.all() + db_group_id = [(group.group_id, group.channel_id) for group in db_group] for group in group_list: group.platform = platform - if (group.group_id, group.channel_id) not in exists_group_list: + if (group.group_id, group.channel_id) not in db_group_id: create_list.append(group) logger.debug( "群聊信息更新成功", "更新群信息", target=f"{group.group_id}:{group.channel_id}", ) + else: + _group = [ + g + for g in db_group + if g.group_id == group.group_id + and g.channel_id == group.channel_id + ][0] + _group.group_name = group.group_name + _group.max_member_count = group.max_member_count + _group.member_count = group.member_count + update_list.append(_group) if create_list: await GroupConsole.bulk_create(create_list, 10) + if group_list: + await GroupConsole.bulk_update( + update_list, ["group_name", "max_member_count", "member_count"], 10 + ) return len(create_list) @classmethod