12 Commits

Author SHA1 Message Date
XuChenXu
aff02f2666 🔖 2.6.2 2025-02-11 21:10:40 +08:00
XuChenXu
2f725e0808 📌 限制chatrecord到0.7.0以下 2025-02-11 21:07:36 +08:00
XuChenXu
3434a5352f 🔖 Version 2.6.1 2024-12-18 21:06:03 +08:00
XuChenXu
0954eb4f3e ⬆️ 解除python依赖限制 2024-12-18 21:05:18 +08:00
XuChenXu
5b94bc0fff 📝 更新自述文件 2024-11-25 21:42:02 +08:00
XuChenXu
e1a20922c4 🔖 Version 2.6.0 2024-11-25 21:19:14 +08:00
XuChenXu
5e00605dfb 🎨 结构化代码 2024-11-25 21:18:09 +08:00
XuChenXu
833cdb4a75 💄 还是人性化 2024-11-25 21:16:37 +08:00
XuChenXu
29b4598e5f 💄 人性化提示 2024-11-25 21:02:04 +08:00
XuChenXu
10cc5cf278 关键词支持正则 2024-11-25 21:00:00 +08:00
XuChenXu
ed167a56b5 🔖 Version 2.5.2 2024-11-25 20:51:32 +08:00
XuChenXu
b40c7be1f9 🐛 修复转发消息 2024-11-25 20:50:50 +08:00
6 changed files with 45 additions and 65 deletions

View File

@@ -19,6 +19,7 @@
"pygal",
"sqlalchemy",
"timecost",
"uninfo",
"userinfo",
"whereclause",
"xaxis",

View File

@@ -54,15 +54,20 @@ nb plugin install nonebot-plugin-dialectlist
在 .env 中,可以添加以下配置项
```python
dialectlist__string_format = "第{index}名:\n{nickname},{chatdatanum}条消息、\n" #消息格式
dialectlist__get_num = 10 #获取人数数量
dialectlist__visualization = True #是否可视化
# dialectlist__visualization_type = "圆环图" #可视化方案 (不再支持)
dialectlist__font = "SimHei" #字体格式
dialectlist__excluded_people = [] #排除的人的 QQ 号(或频道号?(未经测试))
dialectlist__excluded_self = True #是否排除机器人自己 QQ
dialectlist__suffix: bool = False # 是否显示后缀
dialectlist__string_suffix: str = "统计花费时间{timecost}" # 消息格式后缀
dialectlist__get_num: int = 5 # 获取人数数量
dialectlist__font: str = "SimHei" # 字体格式
dialectlist__suffix: bool = True # 是否显示后缀
dialectlist__excluded_self: bool = True # 是否排除自己
dialectlist__visualization: bool = True # 是否可视化
dialectlist__show_text_rank: bool = True # 是否显示文本排名
dialectlist__counting_cache: bool = False # 计数缓存(能够提高回复速度)
dialectlist__excluded_people: List[str] = [] # 排除的人的QQ号
dialectlist__use_user_info_cache: bool = False # 是否使用用户信息缓存
dialectlist__aggregate_transmission: bool = False # 是否聚合转发消息
dialectlist__timezone: Optional[str] = "Asia/Shanghai" # 时区,影响统计时间
dialectlist__string_suffix: str = "统计花费时间:{timecost}秒" # 消息格式后缀
dialectlist__template_path: str = "./template/rank_template.j2" # 模板路径
dialectlist__string_format: str = "第{index}名:\n{nickname},{chatdatanum}条消息\n" # 消息格式
```
💭也可以不进行配置,这将会使插件按照默认配置运行
@@ -70,6 +75,8 @@ dialectlist__string_suffix: str = "统计花费时间{timecost}" # 消息格式
> 在旧版插件2.0.0 以下dialectlist 与后面的配置项只隔了一个下划线,若更新到新版本以后需要俩个下划线。
> 由于插件依赖chatrecord多次引入爆炸性修改建议在遇到问题后优先尝试降级chatrecord插件
## 🗨命令
__注意__
新版本指令调用方式改变,改为更易理解也更好打的 B 话榜。
@@ -126,6 +133,9 @@ __注意__
`/kkb 114514 1919810 ♂`
`/kkb @man -k ♂`
> [!IMPORTANT]
> 关键词支持正则表达式!
## 💪 目前支持的平台
| 平台 | 是否经过测试 | 是否能够正常工作 | 测试环境 |
@@ -195,49 +205,6 @@ __注意__
待补充。.....
## 📖版本日志
<details>
<summary>点我展开</summary>
### V1.0
- 看看群里群友能有多话痨
### V1.1
- 支持频道咯!(*^_^*)
### V1.2
- 排行榜可视化
### V1.3
- 添加了一些可配置项
### V1.4
- 适配新版本的 chatrecorder, 暂时停止频道支持
### V2.0
- 理论支持全平台!暂停图片支持。
### V2.1
- 恢复图片支持。
### V2.2
- 优化代码,添加一些新的可配置项。
### V2.4
- 添加一些新的可配置项。
</details>
### 👾题外话
~~整个项目快被我写成屎山了~~

View File

@@ -5,6 +5,7 @@ require("nonebot_plugin_apscheduler")
require("nonebot_plugin_htmlrender")
require("nonebot_plugin_userinfo")
require("nonebot_plugin_alconna")
require("nonebot_plugin_uninfo")
require("nonebot_plugin_cesaa")
import re
@@ -33,6 +34,7 @@ from nonebot_plugin_alconna import (
)
from nonebot_plugin_chatrecorder import get_message_records
from nonebot_plugin_session import Session, SessionIdType, extract_session
from nonebot_plugin_uninfo import Uninfo
from .storage import get_cache, build_cache
from .config import Config, plugin_config
@@ -93,17 +95,19 @@ b_cmd = on_alconna(
"看看B话",
Args["at", [str, At], Field(completion=lambda: "请想要查询的人的QQ号")],
Option("-g|--group_id", Args["group_id?", str]),
Option("-k|--keyword", Args["keyword?", str])
Option("-k|--keyword", Args["keyword?", str]),
),
aliases={"kkb"},
use_cmd_start=True,
)
@b_cmd.handle()
async def handle_b_cmd(
at:Match[str|At],
at: Match[str | At],
group_id: Match[str],
keyword: Match[str],
uninfo: Uninfo,
session: Session = Depends(extract_session),
):
id = at.result
@@ -113,10 +117,10 @@ async def handle_b_cmd(
gid = group_id.result
else:
gid = session.id2
if not gid:
await b_cmd.finish("请指定群号。")
if keyword.available:
keywords = keyword.result
else:
@@ -133,8 +137,14 @@ async def handle_b_cmd(
)
d = msg_counter(messages, keywords)
rank = got_rank(d)
await saa.Text(f"该用户在群{gid}的B话数量为{rank[0][1]}").send(reply=True)
if not rank:
await b_cmd.finish(
f"该用户在群“{uninfo.scene.name}”关于“{keyword}”的B话数量为0。"
)
await saa.Text(
f"该用户在群“{uninfo.scene.name}”关于“{keyword}”的B话数量为{rank[0][1]}"
).send(reply=True)
rank_cmd = on_alconna(
@@ -352,8 +362,8 @@ async def handle_rank(
msg += suffix
if not msg:
await saa.Text("你把可视化都关了哪来的排行榜?").finish()
if plugin_config.aggregate_transmission:
await saa.AggregatedMessageFactory([msg]).finish(reply=True)
await saa.AggregatedMessageFactory([msg]).finish()
else:
await msg.finish(reply=True)

View File

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

View File

@@ -1,4 +1,5 @@
import os
import re
import httpx
import asyncio
import unicodedata
@@ -96,7 +97,8 @@ def msg_counter(
for i in msg_list:
# logger.debug(f"processing msg {i.plain_text}")
if keyword:
if keyword not in i.plain_text:
match = re.search(keyword, i.plain_text)
if not match:
continue
try:
lst[str(i.session_persist_id)] += 1

View File

@@ -1,12 +1,12 @@
[project]
name = "nonebot-plugin-dialectlist"
version = "2.5.1"
version = "2.6.2"
description = "看看你群群友有多能说"
authors = [
{name = "Chen_Xu233", email = "woyerpa@outlook.com"},
]
dependencies = [
"nonebot-plugin-chatrecorder>=0.6.0",
"nonebot-plugin-chatrecorder>=0.6.0,<0.7.0",
"nonebot-plugin-orm[default]",
"nonebot-plugin-apscheduler>=0.4.0",
"nonebot-plugin-alconna>=0.50.2",
@@ -17,7 +17,7 @@ dependencies = [
"pillow>=10.4.0",
"nonebot-plugin-uninfo>=0.1.1",
]
requires-python = ">=3.9,<3.13"
requires-python = ">=3.9,<4.0"
readme = "README.md"
license = {text = "MIT"}