diff --git a/CHANGELOG.md b/CHANGELOG.md index aa39c171..4987719a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,4 +12,5 @@ 12. 修复群成员加入时间 上次活跃 活跃等级字段 - 影响 API: /get_group_member_info /get_group_member_list 13. 修复视频所需的 ffmpeg 路径不正确导致视频封面和时长获取失败 - 影响 Event/API 14. 支持音乐卡片,需要配置签名服务器地址, `config/onebot11_.json`的`musicSignUrl`字段 - 新增 Feat: Sign Music -15. 支持获取与设置群公告 - 新增 API: (/_send_group_notice 暂时未完全实现) /_get_group_notice \ No newline at end of file +15. 支持获取与设置群公告 - 新增 API: (/_send_group_notice 暂时未完全实现) /_get_group_notice +16. 支持获取群精华消息 - 新增 API: /get_essence_msg_list diff --git a/README.md b/README.md index 338ac1f9..e94f68e0 100644 --- a/README.md +++ b/README.md @@ -4,88 +4,14 @@ ## 项目介绍 -NapCatQQ(瞌睡猫QQ,不准叫我NCQQ!),像睡着了一样在后台低占用运行的无头(没有界面)的NTQQ - -目前测试在 Windows 上表现优秀,最低可达只占用内存 **20M**左右 - -由于 Linux 上的 QQ 图形依赖较多,会导致内存占用小高,大约 **100+M**,目前正在研究如何优化 - -具体占用会因人而异,QQ 群、好友越多占用越高 - -目前只支持 onebot11 协议 - -## 下载 - -前往 Release 页面下载最新版本 - -## 启动 - -NapCat 是基于 官方NTQQ 实现的Bot框架,因此先需要安装官方QQ,**注意同个账号不能同时登录NT QQ 和 NapCatQQ** - -*如果没有安装 QQ 请往后翻查看安装方法* - -修改 `config/onebot11.json`内容,并重名为 `onebot11_<你的QQ号>.json`,如`onebot11_1234567.json` - -json 配置内容参数解释: - -```json5 -{ - // HTTP服务监听的 ip 地址,为空则监听所有地址 - "httpHost": "", - // 是否启用http服务, true为启动,false为禁用,如果启用,可以通过http接口发送消息 - "enableHttp": false, - // http服务端口 - "httpPort": 3000, - // 正向 ws 服务监听的 ip 地址,为空则监听所有地址 - "wsHost": "", - // 是否启用正向websocket服务 - "enableWs": false, - // 正向websocket服务端口 - "wsPort": 3001, - // 是否启用反向websocket服务 - "enableWsReverse": false, - // 反向websocket对接的地址, 如["ws://127.0.0.1:8080/onebot/v11/ws"] - "wsReverseUrls": [], - // 是否启用http上报服务 - "enableHttpPost": false, - // http上报地址, 如["http://127.0.0.1:8080/onebot/v11/http"] - "httpPostUrls": [], - // 是否启用http心跳 - "enableHttpHeart": false, - // http上报密钥,可为空 - "httpSecret": "", - // 消息上报格式,array为消息组,string为cq码字符串 - "messagePostFormat": "array", - // 是否上报自己发送的消息 - "reportSelfMessage": false, - // 是否开启调试模式,开启后上报消息会携带一个raw字段,为原始消息内容 - "debug": false, - // 调用get_file接口时如果获取不到url则使用base64字段返回文件内容 - "enableLocalFile2Url": true, - // ws心跳间隔,单位毫秒 - "heartInterval": 30000, - // access_token,可以为空 - "token": "" -} - -``` - -配置日志: - -复制`config/napcat.json` 并重命名为 `config/napcat_.json` - -json 配置内容参数解释: -```json5 -{ - // 是否开启文件日志 - "fileLog": true, - // 是否开启控制台日志 - "consoleLog": true, - // 日志等级, 可选值: debug, info, error - "fileLogLevel": "debug", - "consoleLogLevel": "info" -} -``` +NapCatQQ 是基于NTQQ本体实现一套 Bot 框架。 + +名字寓意 瞌睡猫QQ ,但是不准叫NCQQ!,像睡着了一样在后台低占用运行的无需GUI界面的NTQQ。 + +## 使用教程 + +可前往 Release 页面下载最新版本 + ### Windows 启动 运行`powershell ./napcat.ps1`, 或者 `napcat.bat`,如果出现乱码,可以尝试运行`napcat-utf8.ps1` 或 `napcat-utf8.bat` @@ -96,108 +22,23 @@ json 配置内容参数解释: ### Linux 启动 -运行`napcat.sh` - -或使用[NapCatDocker](https://github.com/NapNeko/NapCat-Docker) - -## 使用无需扫码快速登录 - -前提是你已经成功登录过QQ,可以加参数` -q <你的QQ>` 进行登录,如`napcat.sh -q 1234567` - -## 安装 - -### Linux安装 - -#### 安装 Linux QQ(22741),已经安装了的可以跳过 - -目前还在研究怎么精简安装,暂时只能安装官方QQ整体依赖 - -下载QQ - -[deb x86版本](https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.7_240403_amd64_01.deb) -[deb arm版本](https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.7_240403_arm64_01.deb) - -[rpm x86版本](https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.7_240403_x86_64_01.rpm) -[rpm arm版本](https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.7_240403_aarch64_01.rpm) - -安装QQ -```bash -sudo dpkg -i --force-depends ./qq.deb -``` - -安装QQ的依赖 -```bash -sudo apt install libgbm1 libasound2 -``` - -### Windows 安装 - -#### 安装Windows QQ(22741),已经安装了的可以跳过 - -[Windows版本QQ下载](https://dldir1.qq.com/qqfile/qq/QQNT/Windows/QQ_9.9.9_240403_x64_01.exe) - -## 常见问题 - -### 二维码无法扫描 - -NapCat 会自动保存二维码到目录,可以手动打开图片扫描 -如果没有条件访问本地目录,可以将二维码解析的 url 复制到二维码生成网站上生成二维码,然后手机QQ扫描 +手动运行:运行`napcat.sh` -### 语音、视频发送失败 +容器运行:使用[NapCatDocker](https://github.com/NapNeko/NapCat-Docker) -需要配置 ffmpeg,将 ffmpeg 目录加入环境变量,如果仍未生效,可以修改 napcat 启动脚本加入 FFMPEG_PATH 变量指定到 ffmpeg -程序的完整路径 +### 详细教程 -如 Windows 上修改 napcat.ps1,在第一行加入 +**首次使用** 请务必前往 [官方文档](https://napneko.github.io/) 查看使用文档与教程 -```powershell -$env:FFMPEG_PATH="d:\ffmpeg\bin\ffmpeg.exe" -``` - -### 修改日志等级 - - - -### 出现 error code v2:-1 之类的提示 - -不用管,这是正常现象,是因为 QQ 本身的问题,不影响使用 - -### 本地登录后迁移至服务器 - -如果在服务器扫码登录提示出现网络环境不稳定不在同一网络,可以尝试在本地登录后,将 QQ 的文档传到服务器相同目录覆盖,Linux 目录位于 `~/.config/QQ`, Windows 一般是 **文档下的QQ文件夹**,具体可以打开 `QQ的设置->存储管理` 查看 - -或者手机使用 VPN 等方式连接到服务器网络使其和服务器在同一网络 - -### Windows 运行出现 sqlite3 不是 win32 程序 - -运行时出现`node_sqlite3.node is not a valid Win32 application` - -检查下载的是否是 Windows 版本的 NapCatQQ - -检查是否是安装的 64 位版本的 QQ - -### 如果出现崩溃 - -由于新版本使用了 Native Hook,如果你的 NapCatQQ 崩溃了,尝试删除 `MoeHoo.node` - -### 其他问题 - -NapCat 是基于 QQ 22741 版本开发的,其他版本不敢保证是否会出现一些奇怪的问题,有问题可以尝试安装此版本的 QQ - -## API 文档 - -[NapCat Doc](https://napneko.github.io/) - -## 声明 +## 项目声明 * 请不要在无关地方宣传NapCatQQ,本项目只是用于学习 node 相关知识,切勿用于违法用途 * NapCat 不会收集用户隐私信息,但是未来可能会为了更好的利于 NapCat 的优化会收集一些设备信息,如 cpu 架构,系统版本等 ## 相关链接 - -[TG群](https://t.me/+nLZEnpne-pQ1OWFl) +[Telegram Link](https://t.me/+nLZEnpne-pQ1OWFl) ## 鸣谢名单 diff --git a/src/core b/src/core index aa3221a8..e5a4b1b9 160000 --- a/src/core +++ b/src/core @@ -1 +1 @@ -Subproject commit aa3221a8904bf6b66cb85325cda85cbcea5639a0 +Subproject commit e5a4b1b941d36b34bb91a622de8ea5a0f98b6d99 diff --git a/src/onebot11/action/group/GetGroupEssence.ts b/src/onebot11/action/group/GetGroupEssence.ts new file mode 100644 index 00000000..4ffb2347 --- /dev/null +++ b/src/onebot11/action/group/GetGroupEssence.ts @@ -0,0 +1,24 @@ +import { getGroup } from '@/core/data'; +import { OB11Group } from '../../types'; +import { OB11Constructor } from '../../constructor'; +import BaseAction from '../BaseAction'; +import { ActionName } from '../types'; +import { NTQQMsgApi } from '@/core/apis/msg'; +import { GroupEssenceMsgRet, WebApi } from '@/core/apis/webapi'; + +interface PayloadType { + group_id: number; + pages: number; +} + +export class GetGroupEssence extends BaseAction { + actionName = ActionName.GoCQHTTP_GetEssenceMsg; + + protected async _handle(payload: PayloadType) { + let ret = await WebApi.getGroupEssenceMsg(payload.group_id.toString(), payload.pages.toString()); + if (!ret) { + throw new Error('获取失败'); + } + return ret; + } +} diff --git a/src/onebot11/action/index.ts b/src/onebot11/action/index.ts index ea5c2c1c..61e8f6d8 100644 --- a/src/onebot11/action/index.ts +++ b/src/onebot11/action/index.ts @@ -50,6 +50,7 @@ import { SetMsgEmojiLike } from '@/onebot11/action/msg/SetMsgEmojiLike'; import { GetRobotUinRange } from './extends/GetRobotUinRange'; import { SetOnlineStatus } from './extends/SetOnlineStatus'; import { GetGroupNotice } from './group/GetGroupNotice'; +import { GetGroupEssence } from './group/GetGroupEssence'; export const actionHandlers = [ new GetFile(), @@ -92,6 +93,7 @@ export const actionHandlers = [ new GetRobotUinRange(), //以下为go-cqhttp api new GetGroupNotice(), + new GetGroupEssence(), new GoCQHTTPSendForwardMsg(), new GoCQHTTPSendGroupForwardMsg(), new GoCQHTTPSendPrivateForwardMsg(), diff --git a/src/onebot11/action/types.ts b/src/onebot11/action/types.ts index 9873c218..41b88e6c 100644 --- a/src/onebot11/action/types.ts +++ b/src/onebot11/action/types.ts @@ -56,6 +56,7 @@ export enum ActionName { GetRobotUinRange = 'get_robot_uin_range', SetOnlineStatus = 'set_online_status', // 以下为go-cqhttp api + GoCQHTTP_GetEssenceMsg='get_essence_msg_list', GoCQHTTP_SetGroupNotice = '_send_group_notice', GoCQHTTP_GetGroupNotice = '_get_group_notice', GoCQHTTP_SendForwardMsg = 'send_forward_msg',