Documentation ¶
Overview ¶
Package cqp 是用于编写酷Q插件的包,酷Q是一个QQ机器人软件。
Usage 用法 ¶
通过导入本包,再使用特定的编译命令即可将go代码编译成dll,就可以作为插件被酷Q加载。 为了编译成一个dll,你的代码里需要一个空的main函数。 然后编写init函数,设置你的插件的AppID。
package main import "github.com/Tnze/CoolQ-Golang-SDK/cqp" func main() {} func init() { // 设置AppID cqp.AppID = "your.app.id" // 注册事件 cqp.Enable = Enable } func Enable(){ // 当插件启用时被调用 }
Build tools ¶
当写完基本的代码之后可以将它编译成dll。 插件的编译需要在windows环境下进行, 需要go和gcc两种编译工具来分别编译go代码和c代码。 请检查你的go和gcc是否都安装完成:
go version gcc --version
其中go工具可以从https://golang.google.cn 下载 没有gcc可以安装TDM-GCC http://tdm-gcc.tdragon.net/
Generate app.json ¶
推荐使用tools/cqcfg工具自动生成和更新app.json。 使用go get命令安装cqcfg工具,执行完毕后会在GOPATH或者GOBIN下生成可执行文件。
go get github.com/Tnze/CoolQ-Golang-SDK/tools/cqcfg
安装完毕后应当可以在命令提示符中使用cqcfg命令,-v参数用于查看版本。
cqcfg -v
如果安装后仍提示找不到cqcfg命令请确保GOPATH/bin路径存在于PATH环境变量中。
接下来,执行如下命令,生成app.json
cqcfg -c .
其中"-c"代表将git commit次数加到顺序版本号上,"."代表分析当前目录的源码。
Build app.dll ¶
编译时需要设置几个环境变量:
CGO_LDFLAGS=-Wl,--kill-at CGO_ENABLED=1 GOOS=windows GOARCH=386
然后执行编译命令:
go build -ldflags "-s -w" -buildmode=c-shared -o app.dll
若成功编译则会生成app.dll,将其和app.json一起复制到酷Q的指定文件夹内即可
Index ¶
- Constants
- Variables
- func AddLog(p Priority, logType, reason string) int32
- func CanSendImage() bool
- func CanSendRecord() bool
- func DeleteMsg(msgID int64) int32
- func GetAppDir() string
- func GetCSRFToken() int32
- func GetCookies(domain string) string
- func GetImage(file string) string
- func GetLoginNick() string
- func GetLoginQQ() int64
- func GetRecord(file, format string) string
- func Main()
- func SendDiscussMsg(discuss int64, msg string) int32
- func SendGroupMsg(group int64, msg string) int32
- func SendLike(qq int64, times int32) int32
- func SendPrivateMsg(qq int64, msg string) int32
- func SetDiscussLeave(discuss int64) int32
- func SetFriendAddRequest(code string, Type int32, remark string) int32
- func SetGroupAddRequest(ReqFeedback string, ReqType, FeedbackType int32, reason string) int32
- func SetGroupAdmin(group, qq int64, admin bool) int32
- func SetGroupAnonymous(group int64, anonymous bool) int32
- func SetGroupAnonymousBan(group int64, anonymous string, time int64) int32
- func SetGroupBan(group, qq, bantime int64) int32
- func SetGroupCard(group, qq int64, card string) int32
- func SetGroupKick(group, qq int64, rej bool) int32
- func SetGroupLeave(group int64, dissolve bool) int32
- func SetGroupSpecialTitle(group, qq int64, title string, timeout int64) int32
- func SetGroupWholeBan(group int64, ban bool) int32
- type FriendInfo
- type GroupDetail
- type GroupInfo
- type GroupMember
- type Priority
- type StrangerInfo
Constants ¶
const ( Debug Priority = 0 Info = 10 InfoSuccess = 11 InfoRecv = 12 InfoSend = 13 Warning = 20 Error = 30 Fatal = 40 )
Log优先级(priority, AddLog的第一个参数)
Variables ¶
var AppID string
AppID 插件的AppID。 务必在init函数内为这个变量赋值,酷Q加载插件时会读取这个值。 为了保证其唯一性,酷Q定义了AppID的规则,即开发者域名反写.应用英文名。 AppID中仅允许数字、字母、短横线(-)、下划线(_)、点(.), 不允许出现其他字符(如空格等),同时其中域名反写部分的字母全部统一使用小写字母。
var Disable func() int32
Disable 在插件禁用时被调用
var DiscussMsg func(subType, msgID int32, fromDiscuss, fromQQ int64, msg string, font int32) int32
var Enable func() int32
Enable 在插件启动时被调用
var Exit func() int32
var FriendAdd func(subType, sendTime int32, fromQQ int64) int32
var FriendRequest func(subType, sendTime int32, fromQQ int64, msg, responseFlag string) int32
var GroupAdmin func(subType, sendTime int32, fromGroup, QQ int64) int32
var GroupMemberDecrease func(subType, sendTime int32, fromGroup, fromQQ, beingOperateQQ int64) int32
var GroupMemberIncrease func(subType, sendTime int32, fromGroup, fromQQ, beingOperateQQ int64) int32
var GroupMsg func(subType, msgID int32, fromGroup, fromQQ int64, fromAnonymous, msg string, font int32) int32
GroupMsg 在收到群聊消息时被调用 subType目前固定为1
var GroupRequest func(subType, sendTime int32, fromGroup, fromQQ int64, msg, responseFlag string) int32
GroupRequest 在机器人收到群请求时被调用 subType为请求子类型, 可选的值有, 1:加群请求 2: 登录号被邀请入群 msg 加群请求的验证问答, 若subType为2时通常为空字符串 responseFlag 请求flag, 在调用处理请求api时需传入 PC端在线时酷Q不会收到群请求
var GroupUpload func(subType, sendTime int32, fromGroup, fromQQ int64, file string) int32
PrivateMsg 在收到私聊消息时被调用。 subType为子类型,可选的值有,11:来自好友 1:来自在线状态 2:来自群 3:来自讨论组。 若返回非0值,消息将被拦截,最高优先不可拦截。
var Start func() int32
Functions ¶
func AddLog ¶
AddLog 增加运行日志
priority 是Log的优先级,请使用cqp预定义好的值。 logType 是日志类型,酷Q日志窗口将将其显示在日志本身的前一列。 reason 是日志内容
func GetAppDir ¶
func GetAppDir() string
GetAppDir 取应用目录 返回的路径末尾带"\",一般用法如下,所以不用关心是否有斜线
os.Open(filepath.Join(cqp.GetAppDir(), "data.db"))
func SetFriendAddRequest ¶
SetFriendAddRequest 响应好友申请 code 请传入好友请求事件(FriendRequest)中收到的responseFlag。 Type 是否同意请求,同意:1,拒绝:2。 remark 好友备注
func SetGroupAddRequest ¶
SetGroupAddRequest 响应群组申请 ReqFeedback 请传入群组请求事件(GroupRequest)中收到的responseFlag。 ReqType 请传入群组请求事件(GroupRequest)中收到的subType。 FeedbackType 是否同意请求,同意:1,拒绝:2。 reason 拒绝入群请求说明,仅在 拒绝入群请求 时有效
func SetGroupAnonymous ¶
SetGroupAnonymous 设置群匿名是否开启
func SetGroupAnonymousBan ¶
SetGroupAnonymousBan 设置群匿名成员禁言
func SetGroupSpecialTitle ¶
SetGroupSpecialTitle 设置群成员头衔
Types ¶
type FriendInfo ¶
func UnpackFriendList ¶
func UnpackFriendList(str string) ([]FriendInfo, error)
UnpackFriendList 解码好友列表
type GroupDetail ¶
func GetGroupInfo ¶
func GetGroupInfo(group int64, noCache bool) GroupDetail
GetGroupInfo 取群信息 若获取失败,返回零值
func UnpackGroupInfo ¶
func UnpackGroupInfo(str string) (g GroupDetail, err error)
UnpackGroupInfo 解码群信息
type GroupMember ¶
type GroupMember struct { //群号和Q号 Group, QQ int64 Name, Card string //性别,0/男;1/女 Gender int32 Age int32 Area string JoinTime, LastChat time.Time Level string //管理权限,1/成员;2/管理员;3/群主 Auth int32 //是否有不良记录 Bad bool Title string TitleLife time.Time CanSetTitle bool }
GroupMember 群成员信息
func GetGroupMemberInfo ¶
func GetGroupMemberInfo(group, qq int64, noCache bool) GroupMember
GetGroupMemberInfo 获取群成员信息 若获取失败,返回零值
func GetGroupMemberList ¶
func GetGroupMemberList(group int64) []GroupMember
GetGroupMemberList 获取群成员列表 若获取失败,返回nil
func UnpackGroupMemberInfo ¶
func UnpackGroupMemberInfo(str string) (m GroupMember, err error)
UnpackGroupMemberInfo 解码群成员信息
func UnpackGroupMemberList ¶
func UnpackGroupMemberList(str string) ([]GroupMember, error)
UnpackGroupMemberList 解码群成员列表
type StrangerInfo ¶
func GetStrangerInfo ¶
func GetStrangerInfo(qq int64, noCache bool) StrangerInfo
GetStrangerInfo 获取陌生人信息 noCache指定是否使用缓存 若获取失败,返回零值
func UnpackStrangerInfo ¶
func UnpackStrangerInfo(str string) (s StrangerInfo, err error)
UnpackStrangerInfo 解码匿名信息