What is BotShepherd

🐑BotShepherd是一个基于OneBot v11协议WebSocket代理和管理系统,统一管理和协调多个Bot实例,实现一对多的连接管理、消息统计、跨框架黑名单、全框架分群组功能开关和别名防冲突。

人话:一个账号只需要一个ws连接接入本系统,就可以自由的连接到下游框架。本系统可以方便的统计单个账号消息量,管理黑名单,进行指令转化等。你不再需要为每个账号创建一个Nonebot或配置账号数量x框架数量个ws连接

核心Feature

  • 每账号消息量,跨框架黑名单,每Bot、每群、全局可以将原有指令别名,不同名称的Bot不再需要为了一个指令名称单开框架
  • 触发指令:自己上号或主人在群里,通过指令帮助其他用户执行任何指令(bs触发 123456 some_command),避免红温
  • 支持对接其他系统,可自动化更新群组到期时间等

项目地址

https://github.com/syuan326/bs_plugin_message_filter


项目结构

  • init.py:插件导出入口。负责通过Monkey Patch技术将规则处理逻辑注入到系统的FilterManager中,确保所有外发消息都能经过过滤。

  • plugin.py:核心业务逻辑层。包含规则的加载、保存、单条规则的应用逻辑以及插件类的定义。

  • rules.json:配置文件(自动生成)。存储具体的过滤规则和全局启用状态。

核心过滤规则

enabled: 插件启停开关 第一层是OneBot消息类型 第二层是具体操作 第三层是操作参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{
"enabled": true,

"text": [
{
"mode": "replace",
"args": [
["原词", "新词"],
["坏话", "***"]
]
},
{
"mode": "prepend",
"args": "【前缀】"
},
{
"mode": "append",
"args": "【后缀】"
}
],

"image": [
{
"mode": "set_summary",
"args": "这是一张图片"
},
{
"mode": "append_summary",
"args": "(已处理)"
},
{
"mode": "replace_file",
"args": "file:///C:/xxx/xxx.png"
},
{
"mode": "remove"
}
]
}

规则处理变量的位置

在plugin.py第192行到第200行间,segments变量是捕获到的原始消息体,new_segments是处理过的消息体


鸣谢