一个使用搭配 go-cqhttp 框架的个人使用的 qq 机器人后端。
使用 express 后端框架;prisma 作为数据库 ORM,使用其生成的 sqlite 作为数据库;TypeScript 作为主要编写语言。
/time
返回当前时间,以及随机一张最近日期的 pixiv 日榜图片;/price 物品名 大区/服务器完整名称(默认猫区)
返回 FF14 国服物价;/spy
爬取 FF14 国服官网新闻,如果有较数据库中的新通知,则以每条一个消息进行返回;/spyPixiv
爬取当前 pixiv 日榜图片;/spyPixivBookmark
向 rsshub 爬取对应用户的收藏,并分别以消息返送每个收藏;/rankState
以数据库中的当日 pixiv 日榜图片的 tag 为文本,返回对应的 python 代码生成词云图片,如果图片已生成,则直接返回;如果没有,则生成后返回。
目前使用:
- 系统:ubuntu 20.04 arm64,其他平台暂未测试
- node:v16.14.0
- npm:8.13.2
- nodemon(可选):2.0.15
- python3:3.8.10
- wordcloud:1.8.2.2
- 其他 npm 包请参考
package.json
- 安装 nodemon(可选):
npm i -g nodemon
(可能需要sudo
) - 安装 wordcloud:
pip install wordcloud
或者pip3 install wordcloud
(都可能需要sudo
) - 安装其他依赖:
npm i
- 生成数据库:
npx prisma migrate dev --name init
根据 plugin/src/main_example.ts
和 plugin/src/pixiv_filter_example.ts
这两个文件分别创建对应的 plugin/src/main.ts
和 plugin/src/pixiv_filter.ts
两个文件,分别是主要程序入口和用于对 pixiv 日榜图进行筛选的过滤器
默认服务地址为 127.0.0.1:6700
,对应的 go-cqhttp 地址为 127.0.0.1:5700
,如果有修改的需要,请分别修改 plugin/src/main.ts
和 plugin/src/http/http.ts
如果只是直接使用,则可以直接运行如下命令:
npm run start
如果需要将日志写入对应的文件,可以参考下面的命令或者使用 tee
命令
建议使用
lnav
作为日志浏览工具
npm run start >> ./bot.log 2>> ./bot-error.log
如果需要进行开发或者热重载,则需要安装 nodemon(在 windows 下可能不能使用),并运行如下命令:
npm run dev
./plugin
├── dist // tsc 编译生成的文件夹,node 将会运行该文件夹中的 main.js
│ ├── xxxx
│ └── wordCloud
├── file
│ └── wordCloud // 与词云相关的文件夹
│ ├── font // 使用 python 生成词云所需要的字体,配置可以在 `plugin/src/wordCloud` 中的相关文件进行修改
│ └── image // 生成的 pixiv 日榜 tag 的词云图片
└── src // 代码文件夹
├── clock // 报时功能代码
├── http // 与 go-cqhttp 框架进行通信的相关函数
├── new // 对国服 FF14 官网新闻进行爬取的功能
├── pixiv // 对 pixiv.net 日榜进行爬取的功能
│ ├── pixivic // 一个 pixiv 的镜像网站(pixivic.com),不需要梯子,目前功能已弃用
│ └── rsshub // 通过 rsshub 进行 pixiv 相关的爬取
├── price // 查询国服 FF14 的游戏内物价的功能
├── spyder // 使用前面的功能进行一次具体的爬取以及设置定期爬取的功能
├── utils // 无关代码
└── wordCloud // 词云功能,包含 python 代码
./prisma
├── dev.db // 实际使用 sqlite 数据库
├── migrations // 命令自动生成的文件夹
│ └── migration_lock.toml
└── schema.prisma // prisma 数据库声明文件