zhenxun_bot/zhenxun/builtin_plugins/scheduler/auto_update_group.py
2024-02-25 03:18:34 +08:00

69 lines
2.3 KiB
Python

import nonebot
from nonebot_plugin_apscheduler import scheduler
from zhenxun.models.friend_user import FriendUser
from zhenxun.models.group_console import GroupConsole
from zhenxun.services.log import logger
# TODO: 其他平台更新
# 自动更新群组信息
@scheduler.scheduled_job(
"cron",
hour=3,
minute=1,
)
async def _():
bots = nonebot.get_bots()
_used_group = []
for bot in bots.values():
try:
group_list = await bot.get_group_list()
gl = [g["group_id"] for g in group_list if g["group_id"] not in _used_group]
for g in gl:
_used_group.append(g)
group_info = await bot.get_group_info(group_id=g)
await GroupConsole.update_or_create(
group_id=str(group_info["group_id"]),
defaults={
"group_name": group_info["group_name"],
"max_member_count": group_info["max_member_count"],
"member_count": group_info["member_count"],
"group_flag": 1,
},
)
logger.debug("自动更新群组信息成功", "自动更新群组", group_id=g)
except Exception as e:
logger.error(f"Bot: {bot.self_id} 自动更新群组信息", e=e)
logger.info("自动更新群组成员信息成功...")
# 自动更新好友信息
@scheduler.scheduled_job(
"cron",
hour=3,
minute=1,
)
async def _():
bots = nonebot.get_bots()
for key in bots:
try:
bot = bots[key]
fl = await bot.get_friend_list()
for f in fl:
if FriendUser.exists(user_id=str(f["user_id"])):
await FriendUser.create(
user_id=str(f["user_id"]), user_name=f["nickname"]
)
logger.debug(
f"更新好友信息成功", "自动更新好友", session=f["user_id"]
)
else:
logger.debug(
f"好友信息已存在", "自动更新好友", session=f["user_id"]
)
except Exception as e:
logger.error(f"自动更新好友信息错误", "自动更新好友", e=e)
logger.info("自动更新好友信息成功...")