mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
104 lines
2.8 KiB
Python
104 lines
2.8 KiB
Python
from datetime import datetime
|
||
|
||
from nonebot.adapters import Bot
|
||
|
||
from zhenxun.models.friend_user import FriendUser
|
||
from zhenxun.models.group_member_info import GroupInfoUser
|
||
from zhenxun.utils.image_utils import BuildImage, ImageTemplate
|
||
|
||
from .model import BlackWord
|
||
from .utils import Config, _get_punish
|
||
|
||
|
||
async def show_black_text_image(
|
||
user_id: str | None,
|
||
group_id: str | None,
|
||
date: datetime | None,
|
||
data_type: str = "=",
|
||
) -> BuildImage:
|
||
"""展示记录名单
|
||
|
||
参数:
|
||
bot: bot
|
||
user: 用户id
|
||
group_id: 群组id
|
||
date: 日期
|
||
data_type: 日期搜索类型
|
||
|
||
返回:
|
||
BuildImage: 数据图片
|
||
"""
|
||
data_list = await BlackWord.get_black_data(user_id, group_id, date, data_type)
|
||
column_name = [
|
||
"ID",
|
||
"昵称",
|
||
"UID",
|
||
"GID",
|
||
"文本",
|
||
"检测内容",
|
||
"检测等级",
|
||
"惩罚",
|
||
"平台",
|
||
"记录日期",
|
||
]
|
||
column_list = []
|
||
uid_list = [u for u in data_list]
|
||
uid2name = {
|
||
u.user_id: u.user_name for u in await FriendUser.filter(user_id__in=uid_list)
|
||
}
|
||
for i, data in enumerate(data_list):
|
||
uname = uid2name.get(data.user_id)
|
||
if not uname:
|
||
if u := await GroupInfoUser.get_or_none(
|
||
user_id=data.user_id, group_id=data.group_id
|
||
):
|
||
uname = u.user_name
|
||
if len(data.plant_text) > 30:
|
||
data.plant_text = data.plant_text[:30] + "..."
|
||
column_list.append(
|
||
[
|
||
i,
|
||
uname or data.user_id,
|
||
data.user_id,
|
||
data.group_id,
|
||
data.plant_text,
|
||
data.black_word,
|
||
data.punish_level,
|
||
data.punish,
|
||
data.platform,
|
||
data.create_time,
|
||
]
|
||
)
|
||
A = await ImageTemplate.table_page(
|
||
"记录名单", "一个都不放过!", column_name, column_list
|
||
)
|
||
return A
|
||
|
||
|
||
async def set_user_punish(
|
||
bot: Bot, user_id: str, group_id: str | None, id_: int, punish_level: int
|
||
) -> str:
|
||
"""设置惩罚
|
||
|
||
参数:
|
||
user_id: 用户id
|
||
group_id: 群组id或频道id
|
||
id_: 记录下标
|
||
punish_level: 惩罚等级
|
||
|
||
返回:
|
||
str: 结果
|
||
"""
|
||
result = await _get_punish(bot, punish_level, user_id, group_id)
|
||
punish = {
|
||
1: "永久ban",
|
||
2: "删除好友",
|
||
3: f"ban {result} 天",
|
||
4: f"ban {result} 分钟",
|
||
5: "口头警告",
|
||
}
|
||
if await BlackWord.set_user_punish(user_id, punish[punish_level], id_=id_):
|
||
return f"已对 USER {user_id} 进行 {punish[punish_level]} 处罚。"
|
||
else:
|
||
return "操作失败,可能未找到用户,id或敏感词"
|