mirror of
https://github.com/ChenXu233/nonebot_plugin_dialectlist.git
synced 2026-01-25 21:22:16 +00:00
Compare commits
16 Commits
49ce2ffb7c
...
V2.6.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1a20922c4 | ||
|
|
5e00605dfb | ||
|
|
833cdb4a75 | ||
|
|
29b4598e5f | ||
|
|
10cc5cf278 | ||
|
|
ed167a56b5 | ||
|
|
b40c7be1f9 | ||
|
|
07f85be527 | ||
|
|
f2cdfe7f8a | ||
|
|
e0ca7907c0 | ||
|
|
53b2a33923 | ||
|
|
4e339bcdb1 | ||
|
|
0b85f6fb34 | ||
|
|
83d9cda2eb | ||
|
|
dfde832dba | ||
|
|
987b34e282 |
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@@ -19,6 +19,7 @@
|
||||
"pygal",
|
||||
"sqlalchemy",
|
||||
"timecost",
|
||||
"uninfo",
|
||||
"userinfo",
|
||||
"whereclause",
|
||||
"xaxis",
|
||||
|
||||
39
README.md
39
README.md
@@ -26,15 +26,16 @@ nonebot-plugin-dialectlist
|
||||
|
||||
## 💿 安装
|
||||
|
||||
通过`pip`或`nb`安装;
|
||||
通过`pip`或`nb`安装:
|
||||
- 通过 pip 安装
|
||||
```bash
|
||||
pip install nonebot-plugin-dialectlist
|
||||
```
|
||||
- 通过 nb-cli 安装
|
||||
```bash
|
||||
nb plugin install nonebot-plugin-dialectlist
|
||||
```
|
||||
|
||||
>**通过 pip **安装
|
||||
|
||||
`pip install nonebot-plugin-dialectlist`
|
||||
|
||||
>**通过 nb **安装
|
||||
|
||||
`nb plugin install nonebot-plugin-dialectlist`
|
||||
|
||||
### ✅ 插件依赖于
|
||||
|
||||
@@ -76,6 +77,8 @@ __!!注意!!__
|
||||
|
||||
### 🎨一般用法
|
||||
|
||||
#### B话榜
|
||||
|
||||
-`/B话榜` ————看看有史以来(机器人存在以来)群友们发了多少消息! (好像没写)
|
||||
|
||||
-`/今日B话榜` ————看看今天的群友发了多少消息!
|
||||
@@ -94,8 +97,14 @@ __!!注意!!__
|
||||
|
||||
-`/历史B话榜` ————看看历史上(机器人存在以来)的群友发了多少消息!
|
||||
|
||||
#### 看看B话(kkb)
|
||||
|
||||
-`/看看B话 [@某人|QQ号]` ————看看这个b人在这个b群发了多少b话!
|
||||
|
||||
### 🚀进阶用法
|
||||
|
||||
#### B话榜
|
||||
|
||||
`/{时间类型(今日|年度)?}{B话榜|废话榜} {时间类型?} {ISO8601 格式时间 ?} {群号} {关键词}`
|
||||
|
||||
如:`/B话榜 历史 2024-01-01~2024-01-02 12345678 女装`
|
||||
@@ -108,6 +117,15 @@ __!!注意!!__
|
||||
`/昨日B话榜 -k 女装`
|
||||
`/本周B话榜 -g 12345678`
|
||||
|
||||
#### 看看B话
|
||||
|
||||
`/看看B话 {@|QQ号} {群号?} {关键词?}`
|
||||
|
||||
以下调用方法均合法:
|
||||
|
||||
`/kkb 114514 1919810 ♂`
|
||||
`/kkb @man -k ♂`
|
||||
|
||||
## 💪 目前支持的平台
|
||||
|
||||
| 平台 | 是否经过测试 | 是否能够正常工作 | 测试环境 |
|
||||
@@ -142,6 +160,9 @@ __!!注意!!__
|
||||
|
||||
</details>
|
||||
|
||||

|
||||
|
||||
|
||||
### 💕感谢
|
||||
|
||||
本插件的__init__.py 中的处理函数参考了词云中的方法 ~~(其实大部分都是 Ctrl+C Ctr+V)~~
|
||||
@@ -170,7 +191,7 @@ __!!注意!!__
|
||||
|
||||
- [x] 查询带某关键词的消息量
|
||||
|
||||
- [ ] 合并转发
|
||||
- [x] 合并转发
|
||||
|
||||
待补充。.....
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -23,13 +24,17 @@ from nonebot.params import Arg, Depends
|
||||
from nonebot.adapters import Bot, Event
|
||||
from nonebot.plugin import PluginMetadata, inherit_supported_adapters
|
||||
from nonebot_plugin_alconna import (
|
||||
At,
|
||||
Args,
|
||||
Field,
|
||||
Match,
|
||||
Option,
|
||||
Alconna,
|
||||
on_alconna,
|
||||
)
|
||||
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
|
||||
@@ -85,6 +90,63 @@ async def _build_cache(bot: Bot, event: Event):
|
||||
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],
|
||||
uninfo: Uninfo,
|
||||
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)
|
||||
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(
|
||||
Alconna(
|
||||
"B话榜",
|
||||
@@ -267,7 +329,7 @@ async def handle_rank(
|
||||
t1 = t.time()
|
||||
rank2 = await get_user_infos(bot, event, rank)
|
||||
logger.debug(f"获取用户信息花费时间:{t.time() - t1}")
|
||||
|
||||
|
||||
string: str = ""
|
||||
if plugin_config.show_text_rank:
|
||||
|
||||
@@ -275,7 +337,7 @@ async def handle_rank(
|
||||
string += f"关于{keyword}的话痨榜结果:\n"
|
||||
else:
|
||||
string += "话痨榜:\n"
|
||||
|
||||
|
||||
for i in rank2:
|
||||
logger.debug(i.user_name)
|
||||
for i in range(len(rank2)):
|
||||
@@ -301,4 +363,7 @@ async def handle_rank(
|
||||
if not msg:
|
||||
await saa.Text("你把可视化都关了哪来的排行榜?").finish()
|
||||
|
||||
await msg.finish(reply=True)
|
||||
if plugin_config.aggregate_transmission:
|
||||
await saa.AggregatedMessageFactory([msg]).finish()
|
||||
else:
|
||||
await msg.finish(reply=True)
|
||||
|
||||
@@ -9,10 +9,11 @@ class ScopedConfig(BaseModel):
|
||||
suffix: bool = True # 是否显示后缀
|
||||
excluded_self: bool = True # 是否排除自己
|
||||
visualization: bool = True # 是否可视化
|
||||
show_text_rank:bool = True # 是否显示文本排名
|
||||
show_text_rank: bool = True # 是否显示文本排名
|
||||
counting_cache: bool = False # 计数缓存(能够提高回复速度)
|
||||
excluded_people: List[str] = [] # 排除的人的QQ号
|
||||
use_user_info_cache: bool = False # 是否使用用户信息缓存
|
||||
aggregate_transmission: bool = False # 是否聚合转发消息
|
||||
timezone: Optional[str] = "Asia/Shanghai" # 时区,影响统计时间
|
||||
string_suffix: str = "统计花费时间:{timecost}秒" # 消息格式后缀
|
||||
template_path: str = "./template/rank_template.j2" # 模板路径
|
||||
|
||||
@@ -7,6 +7,8 @@ __usage__ = cleandoc(
|
||||
|
||||
### 🎨一般用法
|
||||
|
||||
#### B话榜
|
||||
|
||||
-`/B话榜` ————看看有史以来(机器人存在以来)群友们发了多少消息! (好像没写)
|
||||
|
||||
-`/今日B话榜` ————看看今天的群友发了多少消息!
|
||||
@@ -25,8 +27,14 @@ __usage__ = cleandoc(
|
||||
|
||||
-`/历史B话榜` ————看看历史上(机器人存在以来)的群友发了多少消息!
|
||||
|
||||
#### 看看B话(kkb)
|
||||
|
||||
-`/看看B话 [@某人|QQ号]` ————看看这个b人在这个b群发了多少b话!
|
||||
|
||||
### 🚀进阶用法
|
||||
|
||||
#### B话榜
|
||||
|
||||
`/{时间类型(今日|年度)?}{B话榜|废话榜} {时间类型?} {ISO8601 格式时间 ?} {群号} {关键词}`
|
||||
|
||||
如:`/B话榜 历史 2024-01-01~2024-01-02 12345678 女装`
|
||||
@@ -39,5 +47,14 @@ __usage__ = cleandoc(
|
||||
`/昨日B话榜 -k 女装`
|
||||
`/本周B话榜 -g 12345678`
|
||||
|
||||
#### 看看B话
|
||||
|
||||
`/看看B话 {@|QQ号} {群号?} {关键词?}`
|
||||
|
||||
以下调用方法均合法:
|
||||
|
||||
`/kkb 114514 1919810 ♂`
|
||||
`/kkb @man -k ♂`
|
||||
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
import re
|
||||
import httpx
|
||||
import asyncio
|
||||
import unicodedata
|
||||
@@ -94,9 +95,10 @@ def msg_counter(
|
||||
logger.info("wow , there are {} msgs to count !!!".format(msg_len))
|
||||
|
||||
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 not in i.plain_text:
|
||||
match = re.search(keyword, i.plain_text)
|
||||
if not match:
|
||||
continue
|
||||
try:
|
||||
lst[str(i.session_persist_id)] += 1
|
||||
|
||||
8
pdm.lock
generated
8
pdm.lock
generated
@@ -5,7 +5,7 @@
|
||||
groups = ["default", "Test", "dev"]
|
||||
strategy = ["inherit_metadata"]
|
||||
lock_version = "4.5.0"
|
||||
content_hash = "sha256:882dfc18d7454ced6bb1f46e04172b14b83f90157475153bf0fff7b13e4d41a2"
|
||||
content_hash = "sha256:41c1ac2ec7d9ce3eb477f442e6ccbeda65fb25eb4f22cd696d361dae97cb065c"
|
||||
|
||||
[[metadata.targets]]
|
||||
requires_python = ">=3.9,<3.13"
|
||||
@@ -267,7 +267,7 @@ name = "charset-normalizer"
|
||||
version = "3.3.2"
|
||||
requires_python = ">=3.7.0"
|
||||
summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
||||
groups = ["default", "dev"]
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
|
||||
@@ -1876,7 +1876,7 @@ name = "requests"
|
||||
version = "2.32.3"
|
||||
requires_python = ">=3.8"
|
||||
summary = "Python HTTP for Humans."
|
||||
groups = ["default", "dev"]
|
||||
groups = ["dev"]
|
||||
dependencies = [
|
||||
"certifi>=2017.4.17",
|
||||
"charset-normalizer<4,>=2",
|
||||
@@ -2383,7 +2383,7 @@ name = "urllib3"
|
||||
version = "2.2.1"
|
||||
requires_python = ">=3.8"
|
||||
summary = "HTTP library with thread-safe connection pooling, file post, and more."
|
||||
groups = ["default", "dev"]
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
|
||||
{file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
[project]
|
||||
name = "nonebot-plugin-dialectlist"
|
||||
version = "2.4.5"
|
||||
version = "2.6.0"
|
||||
description = "看看你群群友有多能说"
|
||||
authors = [
|
||||
{name = "Chen_Xu233", email = "woyerpa@outlook.com"},
|
||||
]
|
||||
dependencies = [
|
||||
"nonebot-plugin-chatrecorder>=0.6.0",
|
||||
"requests>=2.32.3",
|
||||
"nonebot-plugin-orm[default]",
|
||||
"nonebot-plugin-apscheduler>=0.4.0",
|
||||
"nonebot-plugin-alconna>=0.50.2",
|
||||
|
||||
Reference in New Issue
Block a user