7 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
XuChenXu
c6b87bf981 📑Update pyproject.toml 2024-10-01 10:13:16 +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
Mornie
bf577b5a31 📝 Create LICENSE 2024-09-28 19:24:08 +08:00
7 changed files with 54 additions and 17 deletions

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 ChenXu233
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -74,14 +74,17 @@ def wrapper(slot: Union[int, str], content: Optional[str], context) -> str:
return content return content
return "" # pragma: no cover return "" # pragma: no cover
build_cache_cmd = on_command("build_cache", aliases={"重建缓存"}, block=True) build_cache_cmd = on_command("build_cache", aliases={"重建缓存"}, block=True)
@build_cache_cmd.handle() @build_cache_cmd.handle()
async def _build_cache(bot: Bot, event: Event): async def _build_cache(bot: Bot, event: Event):
await saa.Text("正在重建缓存,请稍等。").send(reply=True) await saa.Text("正在重建缓存,请稍等。").send(reply=True)
await build_cache() await build_cache()
await saa.Text("重建缓存完成。").send(reply=True) await saa.Text("重建缓存完成。").send(reply=True)
rank_cmd = on_alconna( rank_cmd = on_alconna(
Alconna( Alconna(
"B话榜", "B话榜",

View File

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

View File

@@ -56,7 +56,9 @@ async def build_cache():
where.append( where.append(
or_( or_(
MessageCountCache.time 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) statement = select(MessageCountCache).where(*where)
@@ -68,7 +70,9 @@ async def build_cache():
else: else:
user_cache = MessageCountCache( user_cache = MessageCountCache(
session_id=msg.session_persist_id, 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, session_bnum=1,
) )
db_session.add(user_cache) db_session.add(user_cache)

View File

@@ -194,6 +194,7 @@ async def _get_user_default_avatar() -> bytes:
).read() ).read()
return img return img
async def _get_user_avatar(user: UserInfo, client: httpx.AsyncClient) -> bytes: async def _get_user_avatar(user: UserInfo, client: httpx.AsyncClient) -> bytes:
if not user.user_avatar: if not user.user_avatar:
return await _get_user_default_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) await asyncio.sleep(3)
raise NetworkError(f"{url} 下载失败!") raise NetworkError(f"{url} 下载失败!")
def get_default_user_info() -> UserInfo: def get_default_user_info() -> UserInfo:
user_info = UserInfo( user_info = UserInfo(
user_id="114514", user_id="114514",
@@ -215,8 +217,12 @@ def get_default_user_info() -> UserInfo:
) )
return user_info return user_info
async def get_user_infos( 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]: ) -> List[UserRankInfo]:
user_ids = [i[0] for i in rank] user_ids = [i[0] for i in rank]
@@ -253,11 +259,13 @@ async def get_user_infos(
user_nickname=_get_user_nickname(user_info), user_nickname=_get_user_nickname(user_info),
user_avatar_bytes=user_avatars[i], user_avatar_bytes=user_avatars[i],
) )
user.user_gender = ( print(user.user_gender)
"" if user.user_gender == "male":
if user.user_gender == "male" user.user_gender = ""
else "" if user.user_gender == "female" else "" elif user.user_gender == "female":
) user.user_gender = ""
else:
user.user_gender = "🤔"
rank2.append(user) rank2.append(user)
return rank2 return rank2

4
pdm.lock generated
View File

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

View File

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