mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
🐛 修复签到金币排行bug以及添加官bot监控
This commit is contained in:
parent
c9aa568767
commit
3ffe213652
2
bot.py
2
bot.py
@ -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)
|
||||
|
||||
@ -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官平台专用插件...")
|
||||
|
||||
28
zhenxun/builtin_plugins/platform/qq_api/ug_watch.py
Normal file
28
zhenxun/builtin_plugins/platform/qq_api/ug_watch.py
Normal 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)
|
||||
@ -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
|
||||
|
||||
@ -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="所属平台")
|
||||
"""所属平台"""
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user