diff --git a/zhenxun/builtin_plugins/__init__.py b/zhenxun/builtin_plugins/__init__.py index ce689287b..5e3d6f942 100644 --- a/zhenxun/builtin_plugins/__init__.py +++ b/zhenxun/builtin_plugins/__init__.py @@ -16,6 +16,7 @@ require("nonebot_plugin_alconna") require("nonebot_plugin_session") require("nonebot_plugin_userinfo") +require("nonebot_plugin_htmlrender") import nonebot diff --git a/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py b/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py index 211427263..a24741cdb 100644 --- a/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py +++ b/zhenxun/builtin_plugins/admin/group_member_update/_data_source.py @@ -90,6 +90,7 @@ async def v11(cls, bot: v11Bot, group_id: str): group_member_list = await bot.get_group_member_list(group_id=int(group_id)) db_user = await GroupInfoUser.filter(group_id=group_id).all() db_user_uid = [u.user_id for u in db_user] + uid2name = {u.user_id: u.user_name for u in db_user} create_list = [] update_list = [] delete_list = [] @@ -116,8 +117,9 @@ async def v11(cls, bot: v11Bot, group_id: str): if cnt > 1: for u in users[1:]: delete_list.append(u.id) - user.user_name = nickname - update_list.append(user) + if nickname != uid2name.get(user_id): + user.user_name = nickname + update_list.append(user) else: create_list.append( GroupInfoUser( @@ -129,9 +131,6 @@ async def v11(cls, bot: v11Bot, group_id: str): ) ) exist_member_list.append(user_id) - logger.debug( - "更新成功", "更新群组成员信息", session=user_id, group_id=group_id - ) if create_list: await GroupInfoUser.bulk_create(create_list, 30) logger.debug( diff --git a/zhenxun/builtin_plugins/sign_in/_data_source.py b/zhenxun/builtin_plugins/sign_in/_data_source.py index 539972c8c..83080b59e 100644 --- a/zhenxun/builtin_plugins/sign_in/_data_source.py +++ b/zhenxun/builtin_plugins/sign_in/_data_source.py @@ -163,7 +163,7 @@ async def _handle_sign_in( gift = f"额外金币 +{gift}" else: await UserConsole.add_gold(user.user_id, gold, "sign_in", session.platform) - await UserConsole.add_props(user.user_id, gift, 1, session.platform) + await UserConsole.add_props_by_name(user.user_id, gift, 1, session.platform) gift += " + 1" logger.info( f"签到成功. score: {user.impression:.2f} " diff --git a/zhenxun/models/user_console.py b/zhenxun/models/user_console.py index 8ac2a204d..1b560a11b 100644 --- a/zhenxun/models/user_console.py +++ b/zhenxun/models/user_console.py @@ -2,9 +2,10 @@ from tortoise import fields +from zhenxun.models.goods_info import GoodsInfo from zhenxun.services.db_context import Model from zhenxun.utils.enum import GoldHandle -from zhenxun.utils.exception import InsufficientGold +from zhenxun.utils.exception import GoodsNotFound, InsufficientGold from .user_gold_log import UserGoldLog @@ -138,3 +139,19 @@ async def add_props( user.props[goods_uuid] = 0 user.props[goods_uuid] += num await user.save(update_fields=["props"]) + + @classmethod + async def add_props_by_name( + cls, user_id: str, name: str, num: int = 1, platform: str | None = None + ): + """添加道具 + + 参数: + user_id: 用户id + name: 道具名称 + num: 道具数量. + platform: 平台. + """ + if goods := await GoodsInfo.get_or_none(goods_name=name): + return await cls.add_props(user_id, goods.uuid, num, platform) + raise GoodsNotFound("未找到商品...") diff --git a/zhenxun/utils/exception.py b/zhenxun/utils/exception.py index dbade4e4c..db8c0656a 100644 --- a/zhenxun/utils/exception.py +++ b/zhenxun/utils/exception.py @@ -44,3 +44,11 @@ class NotFindSuperuser(Exception): """ pass + + +class GoodsNotFound(Exception): + """ + 或找到道具 + """ + + pass