zhenxun_bot/zhenxun/plugins/black_word/data_source.py

104 lines
2.8 KiB
Python
Raw Normal View History

2024-03-18 16:10:44 +08:00
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或敏感词"