🐛 修复签到金币排行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

2
bot.py
View File

@ -7,7 +7,6 @@ from nonebot.adapters.onebot.v11 import Adapter as OneBotV11Adapter
nonebot.init()
from zhenxun.services.db_context import disconnect, init
driver = nonebot.get_driver()
driver.register_adapter(OneBotV11Adapter)
@ -15,6 +14,7 @@ driver.register_adapter(KaiheilaAdapter)
driver.register_adapter(DoDoAdapter)
# driver.register_adapter(DiscordAdapter)
from zhenxun.services.db_context import init, disconnect
driver.on_startup(init)
driver.on_shutdown(disconnect)

View File

@ -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官平台专用插件...")

View File

@ -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)

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

View File

@ -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

View File

@ -36,9 +36,11 @@ class GroupConsole(Model):
superuser_block_plugin = fields.TextField(
default="", description="超级用户禁用插件"
)
"""超级用户禁用插件"""
block_task = fields.TextField(default="", description="禁用插件")
"""禁用插件"""
superuser_block_task = fields.TextField(default="", description="超级用户禁用被动")
"""超级用户禁用被动"""
platform = fields.CharField(255, default="qq", description="所属平台")
"""所属平台"""