├── .gitignore
├── LICENSE
├── README.md
├── include
├── CQSDK
│ ├── CQAPI.h
│ ├── CQAPI_EX.h
│ ├── CQEVE.h
│ ├── CQEVEBasic.h
│ ├── CQEVEMsg.h
│ ├── CQEVERequest.h
│ ├── CQEVE_ALL.h
│ ├── CQEVE_DiscussMsg.h
│ ├── CQEVE_FriendAdd.h
│ ├── CQEVE_GroupMsg.h
│ ├── CQEVE_PrivateMsg.h
│ ├── CQEVE_RequestAddFriend.h
│ ├── CQEVE_RequestAddGroup.h
│ ├── CQEVE_Status.h
│ ├── CQLogger.h
│ ├── CQMsgCode.h
│ ├── CQMsgSend.h
│ ├── CQTools.h
│ ├── CQconstant.h
│ ├── CQface.h
│ ├── Unpack.h
│ ├── bufstream.h
│ └── cqdefine.h
├── SQLite
│ └── sqlite3.h
└── SQLiteCpp
│ ├── Assertion.h
│ ├── Backup.h
│ ├── Column.h
│ ├── Database.h
│ ├── Exception.h
│ ├── ExecuteMany.h
│ ├── SQLiteCpp.h
│ ├── Statement.h
│ ├── Transaction.h
│ ├── Utils.h
│ └── VariadicBind.h
├── src
├── CQSDK
│ ├── CQAPI.cpp
│ ├── CQAPI_EX.cpp
│ ├── CQEVE.cpp
│ ├── CQTools.cpp
│ ├── CQstream.cpp
│ └── Unpack.cpp
├── SQLite
│ └── sqlite3.c
└── SQLiteCpp
│ ├── Backup.cpp
│ ├── Column.cpp
│ ├── Database.cpp
│ ├── Exception.cpp
│ ├── Statement.cpp
│ └── Transaction.cpp
├── trpglogger.sln
├── trpglogger.sln.DotSettings.user
└── trpglogger
├── APPINFO.h
├── CQP.lib
├── EncodingConvert.cpp
├── EncodingConvert.h
├── GlobalVar.cpp
├── GlobalVar.h
├── MsgType.h
├── S3PutObject.cpp
├── S3PutObject.h
├── SaveLog.cpp
├── SaveLog.h
├── com.w4123.trpglogger.json
├── dllmain.cpp
├── main.cpp
├── packages.config
├── trpglogger.vcxproj
├── trpglogger.vcxproj.filters
└── trpglogger.vcxproj.user
/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Compiled Object files
5 | *.slo
6 | *.lo
7 | *.o
8 | *.obj
9 |
10 | # Precompiled Headers
11 | *.gch
12 | *.pch
13 |
14 | # Compiled Dynamic libraries
15 | *.so
16 | *.dylib
17 | *.dll
18 |
19 | # Fortran module files
20 | *.mod
21 | *.smod
22 |
23 | # Compiled Static libraries
24 | *.lai
25 | *.la
26 | *.a
27 | *.lib
28 |
29 | # Executables
30 | *.exe
31 | *.out
32 | *.app
33 | /trpglogger/x64/Debug
34 | /Release
35 | /trpglogger/Release
36 | /.vs/trpglogger/v15
37 | /packages
38 | /Debug
39 | /trpglogger/Debug
40 | /.vs/trpglogger/v16
41 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # TrpgLogger
2 | QQ跑团记录记录器
3 |
4 | 用来记录跑团记录的酷Q插件 与 https://logpainter.kokona.tech 配合使用
5 |
6 | # 编译
7 | 请使用 Visual Studio 2015及以上进行编译, 编译前需要先还原nuget软件包
8 |
9 | # Q&A
10 | Q: 上传时遇到网络错误?
11 | A: 因为使用的是AWS S3存储,在墙外,所以服务器在墙内的话可能有时候连接不太稳定
12 |
13 | # 协议
14 | 本软件采用AGPLv3协议
15 |
16 | TrpgLogger Logger for TRPG
17 | Copyright (C) 2019 w4123溯洄
18 |
19 | This program is free software: you can redistribute it and/or modify
20 | it under the terms of the GNU Affero General Public License as
21 | published by the Free Software Foundation, either version 3 of the
22 | License, or (at your option) any later version.
23 |
24 | This program is distributed in the hope that it will be useful,
25 | but WITHOUT ANY WARRANTY; without even the implied warranty of
26 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 | GNU Affero General Public License for more details.
28 |
29 | You should have received a copy of the GNU Affero General Public License
30 | along with this program. If not, see .
31 |
32 | # 开源软件许可协议
33 | 本软件中使用了以下开源软件包:
34 |
35 | 1. SQLite https://www.sqlite.org Public Domain
36 |
37 | 2. SQLitecpp https://github.com/SRombauts/SQLiteCpp MIT
38 |
39 | Copyright (c) 2012-2019 Sébastien Rombauts (sebastien.rombauts@gmail.com)
40 |
41 | 3. CQSDK https://github.com/MikuPy2001/CQSDK GPLv3
42 |
43 | Copyright (c) Mikupy2001 2018-2019
44 |
45 | 4. aws-sdk-cpp https://github.com/aws/aws-sdk-cpp Apache 2.0
46 |
47 | Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
48 |
--------------------------------------------------------------------------------
/include/CQSDK/CQAPI.h:
--------------------------------------------------------------------------------
1 | /*
2 | CoolQ SDK for VS2017
3 | Api Version 9.13
4 | Written by MukiPy2001 & Thanks for the help of orzFly and Coxxs
5 | */
6 | #pragma once
7 | #include "cqdefine.h"
8 |
9 | #ifdef _MSC_VER
10 | #define CQAPI(NAME,ReturnType) extern "C" __declspec(dllimport) ReturnType __stdcall NAME // NOLINT
11 | #else
12 | #define CQAPI(NAME,ReturnType) extern "C" __attribute__((dllimport)) ReturnType __attribute__((__stdcall__)) NAME // NOLINT
13 | #endif /*_MSC_VER*/
14 |
15 |
16 | namespace CQ
17 | {
18 | // 获取调用api所需的AuthCode
19 | int getAuthCode();
20 | //发送好友消息
21 | //Auth=106 失败返回负值,成功返回消息ID
22 | CQAPI(CQ_sendPrivateMsg, int)(
23 | int AuthCode, //
24 | long long QQID, // 目标QQ
25 | const char* msg // 消息内容
26 | );
27 | //发送群消息
28 | //Auth=101 失败返回负值,成功返回消息ID
29 | CQAPI(CQ_sendGroupMsg, int)(
30 | int AuthCode, //
31 | long long GroupID, // 目标群
32 | const char* msg // 消息内容
33 | );
34 | //发送讨论组消息
35 | //Auth=103 失败返回负值,成功返回消息ID
36 | CQAPI(CQ_sendDiscussMsg, int)(
37 | int AuthCode, //
38 | long long DiscussID, // 目标讨论组
39 | const char* msg // 消息内容
40 | );
41 | //发送赞 Auth=110
42 | CQAPI(CQ_sendLike, int)(
43 | int AuthCode, //
44 | long long QQID // 目标QQ
45 | );
46 | //发送赞V2 Auth=110
47 | CQAPI(CQ_sendLikeV2, int)(
48 | int AuthCode, //
49 | long long QQID, // 目标QQ
50 | int times // 赞的次数,最多10次
51 | );
52 | //接收语音
53 | CQAPI(CQ_getRecord, const char *)(
54 | int AuthCode, //
55 | const char* file, // 收到消息中的语音文件名 (file)
56 | const char* outformat // 应用所需的格式 mp3,amr,wma,m4a,spx,ogg,wav,flac
57 | );
58 | //取CsrfToken (慎用,此接口需要严格授权)
59 | //Auth=20 即QQ网页用到的bkn/g_tk等 慎用,此接口需要严格授权
60 | CQAPI(CQ_getCsrfToken, int)(
61 | int AuthCode //
62 | );
63 | //取应用目录
64 | //返回的路径末尾带"\"
65 | CQAPI(CQ_getAppDirectory, const char *)(
66 | int AuthCode //
67 | );
68 | //取登录QQ
69 | CQAPI(CQ_getLoginQQ, long long)(
70 | int AuthCode //
71 | );
72 | //取登录昵称
73 | CQAPI(CQ_getLoginNick, const char *)(
74 | int AuthCode //
75 | );
76 | //置群员移除 Auth=120
77 | CQAPI(CQ_setGroupKick, int)(
78 | int AuthCode, //
79 | long long GroupID, // 目标群
80 | long long QQID, // 目标QQ
81 | CQBOOL RefuseForever // 如果为真,则“不再接收此人加群申请”,请慎用
82 | );
83 | //置群员禁言 Auth=121
84 | CQAPI(CQ_setGroupBan, int)(
85 | int AuthCode, //
86 | long long GroupID, // 目标群
87 | long long QQID, // 目标QQ
88 | long long Time // 禁言的时间,单位为秒。如果要解禁,这里填写0
89 | );
90 | //置群管理员 Auth=122
91 | CQAPI(CQ_setGroupAdmin, int)(
92 | int AuthCode, //
93 | long long GroupID, // 目标群
94 | long long QQID, // 被设置的QQ
95 | CQBOOL setAdmin // 真/设置管理员 假/取消管理员
96 | );
97 | //置群成员专属头衔 Auth=128 需群主权限
98 | CQAPI(CQ_setGroupSpecialTitle, int)(
99 | int AuthCode, //
100 | long long GroupID, // 目标群
101 | long long QQID, // 目标QQ
102 | const char* Title, // 如果要删除,这里填空
103 | long long ExpireTime // 专属头衔有效期,单位为秒。如果永久有效,这里填写-1
104 | );
105 | //置全群禁言 Auth=123
106 | CQAPI(CQ_setGroupWholeBan, int)(
107 | int AuthCode, //
108 | long long GroupID, // 目标群
109 | CQBOOL EnableWholeBan // 真/开启 假/关闭
110 | );
111 | //置匿名群员禁言 Auth=124
112 | CQAPI(CQ_setGroupAnonymousBan, int)(
113 | int AuthCode, //
114 | long long GroupID, // 目标群
115 | const char* AnonymousID, // 群消息事件收到的“匿名”参数
116 | long long time // 禁言的时间,单位为秒。不支持解禁
117 | );
118 | //置群匿名设置 Auth=125
119 | CQAPI(CQ_setGroupAnonymous, int)(
120 | int AuthCode, //
121 | long long GroupID, //
122 | CQBOOL EnableAnonymous //
123 | );
124 | //置群成员名片 Auth=126
125 | CQAPI(CQ_setGroupCard, int)(
126 | int AuthCode, //
127 | long long GroupID, // 目标群
128 | long long QQID, // 被设置的QQ
129 | const char* NewGroupCarkNick //
130 | );
131 | //置群退出 Auth=127 慎用,此接口需要严格授权
132 | CQAPI(CQ_setGroupLeave, int)(
133 | int AuthCode, //
134 | long long GroupID, // 目标群
135 | CQBOOL isDismiss // 真/解散本群 (群主) 假/退出本群 (管理、群成员)
136 | );
137 | //置讨论组退出 Auth=140
138 | CQAPI(CQ_setDiscussLeave, int)(
139 | int AuthCode, //
140 | long long DiscussID // 目标讨论组
141 | );
142 | //置好友添加请求 Auth=150
143 | CQAPI(CQ_setFriendAddRequest, int)(
144 | int AuthCode, //
145 | const char* ResponseToken, // 请求事件收到的“反馈标识”参数
146 | int ResponseType, // #请求_通过 或 #请求_拒绝
147 | const char* Remarks // 添加后的好友备注
148 | );
149 | //置群添加请求 Auth=151
150 | CQAPI(CQ_setGroupAddRequest, int)(
151 | int AuthCode, //
152 | const char* ResponseToken, // 请求事件收到的“反馈标识”参数
153 | int RequestType, // 根据请求事件的子类型区分 #请求_群添加 或 #请求_群邀请
154 | int ResponseType // #请求_通过 或 #请求_拒绝
155 | );
156 | //置群添加请求 Auth=151
157 | CQAPI(CQ_setGroupAddRequestV2, int)(
158 | int AuthCode, //
159 | const char* RequestToken, // 请求事件收到的“反馈标识”参数
160 | int RequestType, // 根据请求事件的子类型区分 #请求_群添加 或 #请求_群邀请
161 | int ResponseType, // #请求_通过 或 #请求_拒绝
162 | const char* Reason // 操作理由,仅 #请求_群添加 且 #请求_拒绝 时可用
163 | );
164 | //增加运行日志
165 | CQAPI(CQ_addLog, int)(
166 | int AuthCode, //
167 | int Priorty, // #Log_ 开头常量
168 | const char* Type, //
169 | const char* Content //
170 | );
171 | //置致命错误提示
172 | CQAPI(CQ_setFatal, int)(
173 | int AuthCode, //
174 | const char* ErrorMsg //
175 | );
176 | //取群成员信息 (旧版,请用CQ_getGroupMemberInfoV2) Auth=130
177 | CQAPI(CQ_getGroupMemberInfo, const char *)(
178 | int AuthCode, //
179 | long long GroupID, // 目标QQ所在群
180 | long long QQID // 目标QQ
181 | );
182 | //取群成员信息 (支持缓存) Auth=130
183 | CQAPI(CQ_getGroupMemberInfoV2, const char *)(
184 | int AuthCode, //
185 | long long GroupID, // 目标QQ所在群
186 | long long QQID, // 目标QQ
187 | CQBOOL DisableCache
188 | );
189 | //取陌生人信息 (支持缓存) Auth=131
190 | CQAPI(CQ_getStrangerInfo, const char *)(
191 | int AuthCode, //
192 | long long QQID, // 目标QQ
193 | CQBOOL DisableCache
194 | );
195 | //取群成员列表 Auth=160
196 | CQAPI(CQ_getGroupMemberList, const char *)(
197 | int AuthCode, //
198 | long long GroupID // 目标QQ所在群
199 | );
200 | //取群列表 Auth=161
201 | CQAPI(CQ_getGroupList, const char *)(
202 | int AuthCode
203 | );
204 | //撤回消息 Auth=180
205 | CQAPI(CQ_deleteMsg, int)(
206 | int AuthCode,
207 | long long MsgId
208 | );
209 | }
210 |
--------------------------------------------------------------------------------
/include/CQSDK/CQAPI_EX.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "cqdefine.h"
4 |
5 | #include
6 | #include