Compare commits

...

4 Commits

Author SHA1 Message Date
XuChenXu
07f85be527 🔖 Version 2.5.1 2024-11-24 20:15:43 +08:00
XuChenXu
f2cdfe7f8a 📝 usage 2024-11-24 20:12:32 +08:00
XuChenXu
e0ca7907c0 kkb! 2024-11-24 20:07:42 +08:00
XuChenXu
53b2a33923 合并转发开关! 2024-11-24 19:39:07 +08:00
6 changed files with 98 additions and 8 deletions

View File

@ -77,6 +77,8 @@ __注意__
### 🎨一般用法 ### 🎨一般用法
#### B话榜
-`/B话榜` ————看看有史以来(机器人存在以来)群友们发了多少消息! (好像没写) -`/B话榜` ————看看有史以来(机器人存在以来)群友们发了多少消息! (好像没写)
-`/今日B话榜` ————看看今天的群友发了多少消息! -`/今日B话榜` ————看看今天的群友发了多少消息!
@ -95,8 +97,14 @@ __注意__
-`/历史B话榜` ————看看历史上(机器人存在以来)的群友发了多少消息! -`/历史B话榜` ————看看历史上(机器人存在以来)的群友发了多少消息!
#### 看看B话kkb
-`/看看B话 [@某人|QQ号]` ————看看这个b人在这个b群发了多少b话
### 🚀进阶用法 ### 🚀进阶用法
#### B话榜
`/{时间类型(今日|年度)?}{B话榜|废话榜} {时间类型?} {ISO8601 格式时间 ?} {群号} {关键词}` `/{时间类型(今日|年度)?}{B话榜|废话榜} {时间类型?} {ISO8601 格式时间 ?} {群号} {关键词}`
如:`/B话榜 历史 2024-01-01~2024-01-02 12345678 女装` 如:`/B话榜 历史 2024-01-01~2024-01-02 12345678 女装`
@ -109,6 +117,15 @@ __注意__
`/昨日B话榜 -k 女装` `/昨日B话榜 -k 女装`
`/本周B话榜 -g 12345678` `/本周B话榜 -g 12345678`
#### 看看B话
`/看看B话 {@|QQ号} {群号?} {关键词?}`
以下调用方法均合法:
`/kkb 114514 1919810 ♂`
`/kkb @man -k ♂`
## 💪 目前支持的平台 ## 💪 目前支持的平台
| 平台 | 是否经过测试 | 是否能够正常工作 | 测试环境 | | 平台 | 是否经过测试 | 是否能够正常工作 | 测试环境 |
@ -174,7 +191,7 @@ __注意__
- [x] 查询带某关键词的消息量 - [x] 查询带某关键词的消息量
- [ ] 合并转发 - [x] 合并转发
待补充。..... 待补充。.....

View File

@ -23,7 +23,10 @@ from nonebot.params import Arg, Depends
from nonebot.adapters import Bot, Event from nonebot.adapters import Bot, Event
from nonebot.plugin import PluginMetadata, inherit_supported_adapters from nonebot.plugin import PluginMetadata, inherit_supported_adapters
from nonebot_plugin_alconna import ( from nonebot_plugin_alconna import (
At,
Args, Args,
Field,
Match,
Option, Option,
Alconna, Alconna,
on_alconna, on_alconna,
@ -85,6 +88,55 @@ async def _build_cache(bot: Bot, event: Event):
await saa.Text("重建缓存完成。").send(reply=True) await saa.Text("重建缓存完成。").send(reply=True)
b_cmd = on_alconna(
Alconna(
"看看B话",
Args["at", [str, At], Field(completion=lambda: "请想要查询的人的QQ号")],
Option("-g|--group_id", Args["group_id?", 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],
group_id: Match[str],
keyword: Match[str],
session: Session = Depends(extract_session),
):
id = at.result
if isinstance(id, At):
id = id.target
if group_id.available:
gid = group_id.result
else:
gid = session.id2
if not gid:
await b_cmd.finish("请指定群号。")
if keyword.available:
keywords = keyword.result
else:
keywords = None
messages = await get_message_records(
id1s=[id],
id2s=[gid],
id_type=SessionIdType.GROUP,
include_bot_id=False,
include_bot_type=False,
types=["message"], # 排除机器人自己发的消息
exclude_id1s=plugin_config.excluded_people,
)
d = msg_counter(messages, keywords)
rank = got_rank(d)
await saa.Text(f"该用户在群{gid}的B话数量为{rank[0][1]}").send(reply=True)
rank_cmd = on_alconna( rank_cmd = on_alconna(
Alconna( Alconna(
"B话榜", "B话榜",
@ -267,7 +319,7 @@ async def handle_rank(
t1 = t.time() t1 = t.time()
rank2 = await get_user_infos(bot, event, rank) rank2 = await get_user_infos(bot, event, rank)
logger.debug(f"获取用户信息花费时间:{t.time() - t1}") logger.debug(f"获取用户信息花费时间:{t.time() - t1}")
string: str = "" string: str = ""
if plugin_config.show_text_rank: if plugin_config.show_text_rank:
@ -275,7 +327,7 @@ async def handle_rank(
string += f"关于{keyword}的话痨榜结果:\n" string += f"关于{keyword}的话痨榜结果:\n"
else: else:
string += "话痨榜:\n" string += "话痨榜:\n"
for i in rank2: for i in rank2:
logger.debug(i.user_name) logger.debug(i.user_name)
for i in range(len(rank2)): for i in range(len(rank2)):
@ -300,5 +352,8 @@ async def handle_rank(
msg += suffix msg += suffix
if not msg: if not msg:
await saa.Text("你把可视化都关了哪来的排行榜?").finish() await saa.Text("你把可视化都关了哪来的排行榜?").finish()
await msg.finish(reply=True) if plugin_config.aggregate_transmission:
await saa.AggregatedMessageFactory([msg]).finish(reply=True)
else:
await msg.finish(reply=True)

View File

@ -9,10 +9,11 @@ class ScopedConfig(BaseModel):
suffix: bool = True # 是否显示后缀 suffix: bool = True # 是否显示后缀
excluded_self: bool = True # 是否排除自己 excluded_self: bool = True # 是否排除自己
visualization: bool = True # 是否可视化 visualization: bool = True # 是否可视化
show_text_rank:bool = True # 是否显示文本排名 show_text_rank: 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 # 是否使用用户信息缓存 use_user_info_cache: bool = False # 是否使用用户信息缓存
aggregate_transmission: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

@ -7,6 +7,8 @@ __usage__ = cleandoc(
### 🎨一般用法 ### 🎨一般用法
#### B话榜
-`/B话榜` 看看有史以来机器人存在以来群友们发了多少消息 好像没写 -`/B话榜` 看看有史以来机器人存在以来群友们发了多少消息 好像没写
-`/今日B话榜` 看看今天的群友发了多少消息 -`/今日B话榜` 看看今天的群友发了多少消息
@ -25,8 +27,14 @@ __usage__ = cleandoc(
-`/历史B话榜` 看看历史上机器人存在以来的群友发了多少消息 -`/历史B话榜` 看看历史上机器人存在以来的群友发了多少消息
#### 看看B话kkb
-`/看看B话 [@某人|QQ号]` 看看这个b人在这个b群发了多少b话
### 🚀进阶用法 ### 🚀进阶用法
#### B话榜
`/{时间类型今日|年度?}{B话榜|废话榜} {时间类型} {ISO8601 格式时间 ?} {群号} {关键词}` `/{时间类型今日|年度?}{B话榜|废话榜} {时间类型} {ISO8601 格式时间 ?} {群号} {关键词}`
`/B话榜 历史 2024-01-01~2024-01-02 12345678 女装` `/B话榜 历史 2024-01-01~2024-01-02 12345678 女装`
@ -39,5 +47,14 @@ __usage__ = cleandoc(
`/昨日B话榜 -k 女装` `/昨日B话榜 -k 女装`
`/本周B话榜 -g 12345678` `/本周B话榜 -g 12345678`
#### 看看B话
`/看看B话 {@|QQ号} {群号} {关键词}`
以下调用方法均合法
`/kkb 114514 1919810 `
`/kkb @man -k `
""" """
) )

View File

@ -94,7 +94,7 @@ def msg_counter(
logger.info("wow , there are {} msgs to count !!!".format(msg_len)) logger.info("wow , there are {} msgs to count !!!".format(msg_len))
for i in msg_list: for i in msg_list:
logger.debug(f"processing msg {i.plain_text}") # logger.debug(f"processing msg {i.plain_text}")
if keyword: if keyword:
if keyword not in i.plain_text: if keyword not in i.plain_text:
continue continue

View File

@ -1,6 +1,6 @@
[project] [project]
name = "nonebot-plugin-dialectlist" name = "nonebot-plugin-dialectlist"
version = "2.4.6" version = "2.5.1"
description = "看看你群群友有多能说" description = "看看你群群友有多能说"
authors = [ authors = [
{name = "Chen_Xu233", email = "woyerpa@outlook.com"}, {name = "Chen_Xu233", email = "woyerpa@outlook.com"},