这项目目前是我自用的基于Napcat端的QQ机器人插件,正在逐步完善中
-
调用ffmpeg将图片转成视频或者添加黑框,使得某些由于各种原因在群里发不出去的图片可以被转换后发送
-
随机二次元图片
-
给定 PID 获取P站图片
-
半自动搬史
-
Markdown渲染
-
用户多命令管理
-
参数解析(见docs/参数解析.md)
-
权限管理系统(见docs/权限系统.md)
-
信息处理函数库(msgutils) 涵盖对信息对象的转换、处理、发送 运用函数式方案处理信息
-
手搓信息管理数据库
- 数据库由两部分组成: messages以及medias
- messages用于存储信息 通过将 Message 转化为 DumpedMsg 后以 yaml 格式存储
- 文件名为该文件的sha256sum值 通过比较文件名去重
- 维护一个映射表(的yaml文件) 用于记录信息的引用数(由数据库用户维护) 通常若元信息的引用数为0 则删除元信息
- medias用于messages中信息中可能存在的多媒体文件
- 文件名为该文件的sha256sum值 通过比较文件名去重
- 维护一个映射表(的yaml文件) 用于记录文件的引用数(只会被messages中的信息引用 因此仅由数据库本身维护) 通常若元信息的引用数为0 则删除元信息
-
自动回复系统
-
添加单元测试 (技术债务这块 最讨厌的一集 想写哪个就写哪个)
-
B站视频解析并下载(支持链接块或者BV号)(6.12更新:我鬼脑意淫后越想越觉得写这个好累 所以把优先级后调)
-
为代码添加更多注释和写文档 (依旧技术债务 依旧最烦 依旧随缘)
-
智能化/shitpost (鉴于数据库搓好了 如果我后面认为这个写起来也不难的话我就来搓)
-
使用用上面提到的数据库
-
添加一个元信息映射表(yaml) 类型大概是Dict[str, Dict[str, Any]] 键是史的文件名 也就是哈希值 值中保存着史的:real_id列表 时间戳 好评数 发送失败次数 存储着已经发送过该史的群号的列表
-
维护一个yaml文件用于记录各个real_id对应的史的哈希值
-
根据以上信息我瞎编了一个可能有用的发史优先级公式:
$$ \begin{aligned} \small{50 - \frac{100}{\pi}\arctan\left(c_1时间戳 - f(好评数) + c_2 e^{c_3发送失败次数} + \infty\mathbb1_{已经发送过该史的群号}(将要发送史的群号) + \text{random}(0, 最新的史的时间戳与最旧的史的时间戳之差)\right)} \end{aligned} $$
-
-
暂时想到这些 哪天我又有什么点子也说不定(6.12更新:一个月下来能看到 TODO List 越来越少还是挺感慨的 为什么补上这条括号内容?因为上面的项我都加了 这条不加我会犯强迫症)
插件配置通过 NoneBot 标准的 dotenv / 环境变量读取。
nb plugin install nonebot-plugin-shitbot在 NoneBot 项目的 .env 文件中配置,变量如下:
| 配置项 | 类型 | 默认值 | 是否必填 | 说明 |
|---|---|---|---|---|
SHITBOT__CLIENT_CACHE |
路径 | 本地缓存路径 | 否 | 容器端缓存路径。本地缓存路径为 $LOCALSTORE_CACHE_DIR/nonebot_plugin_shitbot,容器端需对应挂载 |
SHITBOT__CLIENT_DATA |
路径 | 本地数据路径 | 否 | 容器端数据路径。本地数据路径为 $LOCALSTORE_DATA_DIR/nonebot_plugin_shitbot,容器端需对应挂载 |
SHITBOT__OWNERS |
JSON 字符串列表 | None | 是 | 机器人所有者 QQ 号列表,如 '["114514"]'
|
SHITBOT__MAX_MESSAGE_DEPTH |
整数 | 16 |
否 | 消息解析最大递归深度 |
SHITBOT__PIXIV_ACCESS_TOKEN |
字符串 | "" | 部分必填 | Pixiv API 访问令牌(使用 /pixiv 时必填) |
| 命令 | 说明 |
|---|---|
/session |
会话管理 |
/perm |
权限管理 |
/help |
查看帮助 |
/randpic |
随机二次元图片 |
/advrandpic |
高级随机图片 |
/pixiv |
P站图片检索 |
/convert |
图片格式转换 |
/shitpost |
搬史 |
/md2pic |
Markdown 渲染为图片 |
/autoreply |
自动回复管理 |
- ManyACG: 为 /randpic
以及下面的彩蛋提供了API - Lolicon APP: 为 /advrandpic 提供了API
- github-markdown-css: 为markdown渲染提供了CSS主题