5 Commits

Author SHA1 Message Date
XuChenXu
a753305282 🔖 version 2.4.3 2024-11-02 00:31:45 +08:00
XuChenXu
ad5f556229 ⬇️ 限制python为3.12以下(3.13依赖不支持) 2024-11-02 00:30:59 +08:00
Chenric
3efaafe81c Merge branch 'master' of https://github.com/ChenXu233/nonebot_plugin_dialectlist 2024-10-01 10:23:36 +08:00
Chenric
e62f2ed488 Merge branch 'master' of https://github.com/ChenXu233/nonebot_plugin_dialectlist 2024-09-30 22:00:44 +08:00
Chenric
e5d107c520 💄 性别显示 2024-09-30 22:00:37 +08:00
6 changed files with 33 additions and 17 deletions

View File

@@ -31,7 +31,7 @@ from nonebot_plugin_alconna import (
from nonebot_plugin_chatrecorder import get_message_records
from nonebot_plugin_session import Session, SessionIdType, extract_session
from .storage import get_cache,build_cache
from .storage import get_cache, build_cache
from .config import Config, plugin_config
from .usage import __usage__
from .time import (
@@ -74,14 +74,17 @@ def wrapper(slot: Union[int, str], content: Optional[str], context) -> str:
return content
return "" # pragma: no cover
build_cache_cmd = on_command("build_cache", aliases={"重建缓存"}, block=True)
@build_cache_cmd.handle()
async def _build_cache(bot: Bot, event: Event):
await saa.Text("正在重建缓存,请稍等。").send(reply=True)
await build_cache()
await saa.Text("重建缓存完成。").send(reply=True)
rank_cmd = on_alconna(
Alconna(
"B话榜",

View File

@@ -11,6 +11,7 @@ class ScopedConfig(BaseModel):
visualization: bool = True # 是否可视化
counting_cache: bool = False # 计数缓存(能够提高回复速度)
excluded_people: List[str] = [] # 排除的人的QQ号
use_user_info_cache: bool = False # 是否使用用户信息缓存
timezone: Optional[str] = "Asia/Shanghai" # 时区,影响统计时间
string_suffix: str = "统计花费时间:{timecost}" # 消息格式后缀
template_path: str = "./template/rank_template.j2" # 模板路径

View File

@@ -6,7 +6,7 @@ from sqlalchemy import delete, or_, select
from nonebot import get_driver
from nonebot.log import logger
from nonebot.params import Depends
from nonebot.adapters import Event,Bot
from nonebot.adapters import Event, Bot
from nonebot.message import event_postprocessor
from .model import MessageCountCache
@@ -56,7 +56,9 @@ async def build_cache():
where.append(
or_(
MessageCountCache.time
== remove_timezone(msg.time.replace(hour=1, minute=0, second=0, microsecond=0))
== remove_timezone(
msg.time.replace(hour=1, minute=0, second=0, microsecond=0)
)
)
)
statement = select(MessageCountCache).where(*where)
@@ -68,7 +70,9 @@ async def build_cache():
else:
user_cache = MessageCountCache(
session_id=msg.session_persist_id,
time=remove_timezone(msg.time.replace(hour=1, minute=0, second=0, microsecond=0)),
time=remove_timezone(
msg.time.replace(hour=1, minute=0, second=0, microsecond=0)
),
session_bnum=1,
)
db_session.add(user_cache)
@@ -100,7 +104,7 @@ async def _():
@event_postprocessor
async def _(bot: Bot, event: Event,session: Session = Depends(extract_session)):
async def _(bot: Bot, event: Event, session: Session = Depends(extract_session)):
if not plugin_config.counting_cache:
return
if not session.id2:
@@ -112,7 +116,7 @@ async def _(bot: Bot, event: Event,session: Session = Depends(extract_session)):
async with get_session() as db_session:
session_id = await get_session_persist_id(session)
logger.debug("session_id:"+str(session_id))
logger.debug("session_id:" + str(session_id))
where = [or_(MessageCountCache.session_id == session_id)]
where.append(or_(MessageCountCache.time == remove_timezone(now)))
statement = select(MessageCountCache).where(*where)

View File

@@ -194,6 +194,7 @@ async def _get_user_default_avatar() -> bytes:
).read()
return img
async def _get_user_avatar(user: UserInfo, client: httpx.AsyncClient) -> bytes:
if not user.user_avatar:
return await _get_user_default_avatar()
@@ -208,6 +209,7 @@ async def _get_user_avatar(user: UserInfo, client: httpx.AsyncClient) -> bytes:
await asyncio.sleep(3)
raise NetworkError(f"{url} 下载失败!")
def get_default_user_info() -> UserInfo:
user_info = UserInfo(
user_id="114514",
@@ -215,14 +217,18 @@ def get_default_user_info() -> UserInfo:
)
return user_info
async def get_user_infos(
bot: Bot, event: Event, rank: List, use_cache: bool = True
bot: Bot,
event: Event,
rank: List,
use_cache: bool = plugin_config.use_user_info_cache,
) -> List[UserRankInfo]:
user_ids = [i[0] for i in rank]
pool = [get_user_info(bot, event, id, use_cache) for id in user_ids]
user_infos = await asyncio.gather(*pool)
async with httpx.AsyncClient() as client:
pool = []
for i in user_infos:
@@ -253,11 +259,13 @@ async def get_user_infos(
user_nickname=_get_user_nickname(user_info),
user_avatar_bytes=user_avatars[i],
)
user.user_gender = (
""
if user.user_gender == "male"
else "" if user.user_gender == "female" else ""
)
print(user.user_gender)
if user.user_gender == "male":
user.user_gender = ""
elif user.user_gender == "female":
user.user_gender = ""
else:
user.user_gender = "🤔"
rank2.append(user)
return rank2

4
pdm.lock generated
View File

@@ -5,10 +5,10 @@
groups = ["default", "Test", "dev"]
strategy = ["inherit_metadata"]
lock_version = "4.5.0"
content_hash = "sha256:f31fbbd00506680ed623e0216a48314dcbb142cebec25ebe15f1dc9a50915b25"
content_hash = "sha256:882dfc18d7454ced6bb1f46e04172b14b83f90157475153bf0fff7b13e4d41a2"
[[metadata.targets]]
requires_python = "~=3.9"
requires_python = ">=3.9,<3.13"
[[package]]
name = "aiofiles"

View File

@@ -1,6 +1,6 @@
[project]
name = "nonebot-plugin-dialectlist"
version = "2.4.2"
version = "2.4.3"
description = "看看你群群友有多能说"
authors = [
{name = "Chen_Xu233", email = "woyerpa@outlook.com"},
@@ -18,7 +18,7 @@ dependencies = [
"pillow>=10.4.0",
"nonebot-plugin-uninfo>=0.1.1",
]
requires-python = ">=3.9,<4.0"
requires-python = ">=3.9,<3.13"
readme = "README.md"
license = {text = "MIT"}