🐛 修复签到金币排行bug以及添加官bot监控

This commit is contained in:
HibiKier
2024-10-19 00:36:19 +08:00
parent c9aa568767
commit 3ffe213652
6 changed files with 47 additions and 3 deletions
@@ -13,3 +13,11 @@ try:
nonebot.load_plugins(str((path / "qq").resolve()))
except ImportError:
logger.warning("未安装 onebot-adapter,无法加载QQ平台专用插件...")
try:
from nonebot.adapters.qq import Bot # noqa: F401
nonebot.load_plugins(str((path / "qq_api").resolve()))
except ImportError:
logger.warning("未安装 onebot-adapter,无法加载QQ官平台专用插件...")
@@ -0,0 +1,28 @@
from nonebot_plugin_uninfo import Uninfo
from nonebot.message import run_preprocessor
from zhenxun.services.log import logger
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.friend_user import FriendUser
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.group_member_info import GroupInfoUser
@run_preprocessor
async def do_something(session: Uninfo):
platform = PlatformUtils.get_platform(session)
if session.group:
if not await GroupConsole.exists(group_id=session.group.id):
await GroupConsole.create(group_id=session.group.id)
logger.info("添加当前群组ID信息" "", session=session)
if not await GroupInfoUser.exists(
user_id=session.user.id, group_id=session.group.id
):
await GroupInfoUser.create(
user_id=session.user.id, group_id=session.group.id, platform=platform
)
logger.info("添加当前用户群组ID信息", "", session=session)
elif not await FriendUser.exists(user_id=session.user.id, platform=platform):
await FriendUser.create(user_id=session.user.id, platform=platform)
logger.info("添加当前好友用户信息", "", session=session)
+5 -1
View File
@@ -81,7 +81,9 @@ class ShopParam(BaseModel):
"""UniMessage"""
async def gold_rank(session: Uninfo, group_id: str | None, num: int):
async def gold_rank(
session: Uninfo, group_id: str | None, num: int
) -> BuildImage | str:
query = UserConsole
if group_id:
uid_list = await GroupInfoUser.filter(group_id=group_id).values_list(
@@ -90,6 +92,8 @@ async def gold_rank(session: Uninfo, group_id: str | None, num: int):
if uid_list:
query = query.filter(user_id__in=uid_list)
user_list = await query.annotate().order_by("-gold").values_list("user_id", "gold")
if not user_list:
return "当前还没有人拥有金币哦..."
user_id_list = [user[0] for user in user_list]
index = user_id_list.index(session.user.id) + 1
user_list = user_list[:num] if num < len(user_list) else user_list
@@ -33,7 +33,7 @@ class SignManage:
@classmethod
async def rank(
cls, session: Uninfo, num: int, group_id: str | None = None
) -> BuildImage: # sourcery skip: avoid-builtin-shadow
) -> BuildImage | str: # sourcery skip: avoid-builtin-shadow
"""好感度排行
参数:
@@ -56,6 +56,8 @@ class SignManage:
.order_by("-impression")
.values_list("user_id", "impression", "sign_count", "platform")
)
if not user_list:
return "当前还没有人签到过哦..."
user_id_list = [user[0] for user in user_list]
index = user_id_list.index(session.user.id) + 1
user_list = user_list[:num] if num < len(user_list) else user_list