update invite_manager

This commit is contained in:
HibiKier 2022-05-21 22:40:05 +08:00
parent 33d1334174
commit 82902e0cde
8 changed files with 44 additions and 19 deletions

View File

@ -253,6 +253,7 @@ __Docker 最新版本由 [Sakuracio](https://github.com/Sakuracio) 提供__
* 优化刷屏显示设置禁言时长显示,并改为分钟 * 优化刷屏显示设置禁言时长显示,并改为分钟
* 修复了多连开箱无法指定武器箱 * 修复了多连开箱无法指定武器箱
* 修复识番链接无法正确获取 * 修复识番链接无法正确获取
* 新增真寻入群时即刻刷新权限
### 2022/5/19 ### 2022/5/19

View File

@ -232,10 +232,7 @@ async def update_member_info(group_id: int, remind_superuser: bool = False) -> b
_exist_member_list = [] _exist_member_list = []
# try: # try:
for user_info in _group_user_list: for user_info in _group_user_list:
if user_info["card"] == "": nickname = user_info["card"] or user_info["nickname"]
nickname = user_info["nickname"]
else:
nickname = user_info["card"]
async with db.transaction(): async with db.transaction():
# 更新权限 # 更新权限
if ( if (
@ -321,3 +318,4 @@ def set_group_bot_status(group_id: int, status: bool) -> str:
# for x in group_manager.get_task_data(): # for x in group_manager.get_task_data():
# group_manager.close_group_task(group_id, x) # group_manager.close_group_task(group_id, x)
return "那我先睡觉了..." return "那我先睡觉了..."

View File

@ -2,6 +2,7 @@ from nonebot import on_command, on_notice
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, GROUP, GroupIncreaseNoticeEvent from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, GROUP, GroupIncreaseNoticeEvent
from ._data_source import update_member_info from ._data_source import update_member_info
__zx_plugin_name__ = "更新群组成员列表 [Admin]" __zx_plugin_name__ = "更新群组成员列表 [Admin]"
__plugin_usage__ = """ __plugin_usage__ = """
usage usage

View File

@ -1,5 +1,6 @@
from nonebot import on_notice, on_request from nonebot import on_notice, on_request
from configs.path_config import IMAGE_PATH, DATA_PATH from configs.path_config import IMAGE_PATH, DATA_PATH
from models.level_user import LevelUser
from utils.message_builder import image from utils.message_builder import image
from models.group_member_info import GroupInfoUser from models.group_member_info import GroupInfoUser
from datetime import datetime from datetime import datetime
@ -96,6 +97,23 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent):
for plugin in data.keys(): for plugin in data.keys():
if not data[plugin]["default_status"]: if not data[plugin]["default_status"]:
group_manager.block_plugin(plugin, event.group_id) group_manager.block_plugin(plugin, event.group_id)
# 即刻刷新权限
for user_info in await bot.get_group_member_list(group_id=event.group_id):
if user_info["role"] in [
"owner",
"admin",
] and not await LevelUser.is_group_flag(
user_info["user_id"], event.group_id
):
await LevelUser.set_level(
user_info["user_id"],
user_info["group_id"],
Config.get_config("admin_bot_manage", "ADMIN_DEFAULT_AUTH"),
)
if str(user_info["user_id"]) in bot.config.superusers:
await LevelUser.set_level(
user_info["user_id"], user_info["group_id"], 9
)
else: else:
join_time = datetime.now() join_time = datetime.now()
user_info = await bot.get_group_member_info( user_info = await bot.get_group_member_info(
@ -128,9 +146,7 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent):
msg = msg.replace("[at]", "") msg = msg.replace("[at]", "")
at_flag = True at_flag = True
if (DATA_PATH / "custom_welcome_msg" / f"{event.group_id}.jpg").exists(): if (DATA_PATH / "custom_welcome_msg" / f"{event.group_id}.jpg").exists():
img = image( img = image(DATA_PATH / "custom_welcome_msg" / f"{event.group_id}.jpg")
DATA_PATH / "custom_welcome_msg" / f"{event.group_id}.jpg"
)
if msg or img: if msg or img:
msg = msg.strip() + img msg = msg.strip() + img
msg = "\n" + msg if at_flag else msg msg = "\n" + msg if at_flag else msg

View File

@ -56,6 +56,9 @@ def _create_help_img(
for matcher in _matchers: for matcher in _matchers:
plugin_name = None plugin_name = None
_plugin = nonebot.plugin.get_plugin(matcher.plugin_name) _plugin = nonebot.plugin.get_plugin(matcher.plugin_name)
if not _plugin:
logger.warning(f"获取 功能:{matcher.plugin_name} 失败...")
continue
_module = _plugin.module _module = _plugin.module
try: try:
plugin_name = _module.__getattribute__("__zx_plugin_name__") plugin_name = _module.__getattribute__("__zx_plugin_name__")

View File

@ -1,4 +1,4 @@
from nonebot import on_request, on_command from nonebot import on_request, on_message
from nonebot.adapters.onebot.v11 import ( from nonebot.adapters.onebot.v11 import (
Bot, Bot,
FriendRequestEvent, FriendRequestEvent,
@ -25,7 +25,7 @@ __plugin_configs__ = {
friend_req = on_request(priority=5, block=True) friend_req = on_request(priority=5, block=True)
group_req = on_request(priority=5, block=True) group_req = on_request(priority=5, block=True)
x = on_command("[[test_invite_manager]]", priority=999, block=False) x = on_message(priority=999, block=False)
exists_data = {"private": {}, "group": {}} exists_data = {"private": {}, "group": {}}

View File

@ -13,6 +13,7 @@ import time
driver: Driver = nonebot.get_driver() driver: Driver = nonebot.get_driver()
use = require("use") use = require("use")

View File

@ -1,3 +1,5 @@
from asyncpg import UniqueViolationError
from services.db_context import db from services.db_context import db
@ -44,16 +46,19 @@ class LevelUser(db.Model):
query = cls.query.where((cls.user_qq == user_qq) & (cls.group_id == group_id)) query = cls.query.where((cls.user_qq == user_qq) & (cls.group_id == group_id))
query = query.with_for_update() query = query.with_for_update()
user = await query.gino.first() user = await query.gino.first()
if user is None: try:
await cls.create( if not user:
user_qq=user_qq, await cls.create(
group_id=group_id, user_qq=user_qq,
user_level=level, group_id=group_id,
group_flag=group_flag, user_level=level,
) group_flag=group_flag,
return True )
else: return True
await user.update(user_level=level, group_flag=group_flag).apply() else:
await user.update(user_level=level, group_flag=group_flag).apply()
return False
except UniqueViolationError:
return False return False
@classmethod @classmethod