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

@@ -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.1"
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"}