本文最后更新于 2021年04月20日 已经是 772天前了 ,文章可能具有时效性,若有错误或已失效,请在下方留言。
文章还在施工和完善呢!
前言
目前IOTQQ框架挺多的,许多功能也挺强大的,但我想要的是一个完全异步,自带队列,而且可以编译出二进制文件的框架,所以就有了这个项目
简单介绍
解决一切问题的方法
支持的功能
入门使用
安装框架 (就一条命令欧~)
go get github.com/mcoo/OPQBot
使用
opqBot := OPQBot.NewBotManager(2629326992,"http://192.168.2.2:8899") //前面是机器人的QQ号,后面参数是机器人接口的地址
err := opqBot.Start()
if err != nil {
log.Println(err.Error())
}
defer opqBot.Stop()
绑定事件 (别问我啥是事件…)
群消息事件
err = opqBot.AddEvent(OPQBot.EventNameOnGroupMessage, func(botQQ int64, packet OPQBot.GroupMsgPack) {
log.Println(botQQ,packet)
})
好友消息事件
err = opqBot.AddEvent(OPQBot.EventNameOnFriendMessage, func(botQQ int64, packet OPQBot.FriendMsgPack) {
log.Println(botQQ,packet)
})
群禁言事件
err = opqBot.AddEvent(OPQBot.EventNameOnGroupShut, func(botQQ int64, packet OPQBot.GroupShutPack) {
log.Println(botQQ, packet)
})
群成员撤回消息事件
err = opqBot.AddEvent(OPQBot.EventNameOnGroupRevoke, func(botQQ int64, e OPQBot.GroupRevokePack) {
log.Println(e)
})
管理员变更事件
err = opqBot.AddEvent(OPQBot.EventNameOnGroupAdmin, func(botQQ int64, e OPQBot.GroupAdminPack) {
log.Println(e)
})
主动退群成功事件
err = opqBot.AddEvent(OPQBot.EventNameOnGroupExitSuccess, func(botQQ int64, e OPQBot.GroupExitSuccessPack) {
log.Println(e)
})
群成员退出群聊事件
err = opqBot.AddEvent(OPQBot.EventNameOnGroupExit, func(botQQ int64, e OPQBot.GroupExitPack) {
log.Println(e)
})
某人进群事件
err = opqBot.AddEvent(OPQBot.EventNameOnGroupJoin, func(botQQ int64, e OPQBot.GroupJoinPack) {
log.Println(e)
})
群系统消息相关通知 礼物通知 头衔变更通知等
err = opqBot.AddEvent(OPQBot.EventNameOnGroupSystemNotify, func(botQQ int64, e OPQBot.GroupSystemNotifyPack) {
log.Println(e)
})
邀请加群,加群申请等管理员事件
err = opqBot.AddEvent(OPQBot.EventNameOnGroupAdminSysNotify, func(botQQ int64, e OPQBot.GroupAdminSysNotifyPack) {
log.Println(e)
})
机器人连接断开事件
err = opqBot.AddEvent(OPQBot.EventNameOnConnected, func() {
log.Println("连接成功!!!")
})
if err != nil {
log.Println(err.Error())
}
err = opqBot.AddEvent(OPQBot.EventNameOnDisconnected, func() {
log.Println("连接断开!!")
})
if err != nil {
log.Println(err.Error())
}
其他事件
err = opqBot.AddEvent(OPQBot.EventNameOnOther, func(botQQ int64, e interface{}) {
log.Println(e)
})
发送消息函数
opqbot.Send(OPQBot.SendMsgPack{
SendToType: OPQBot.SendToTypeGroup,
ToUserUid: packet.FromGroupID,
Content: OPQBot.SendTypePicMsgByBase64Content{
Content: OPQBot.MacroAt([]int64{packet.FromUserID})+"30s后撤回哟,注意身体 "+tu.Data[0].Title+"\n"+OPQBot.MacroId(),
Base64: base64.StdEncoding.EncodeToString(res.Content()),
Flash: false,
},
CallbackFunc: func(Code int, Info string,record OPQBot.MyRecord) {
time.Sleep(30*time.Second)
_ = opqbot.ReCallMsg(packet.FromGroupID,record.MsgRandom,record.MsgSeq)
},
})
上面CallbackFunc
可以不填,只有消息内容中含有宏OPQBot.MacroId()
record 中才有消息的值,才能去用于撤回消息!
功能函数
赞
success := opqBot.Zan(packet.FromUserID, 50)
提供base64发送语音(即将被移除)
opqBot.OldSendVoice(packet.FromGroupID,2,b)
撤回消息
_ = opqBot.ReCallMsg(record.FromGroupID, record.MsgRandom, record.MsgSeq)
刷新Key (勿滥用)
err := opqBot.RefreshKey()
戳一戳
err := opqBot.Chuo(1, packet.FromGroupID, packet.FromUserID)
if err != nil {
log.Println(err.Error())
}
设置队列速度
// 设置发送队列每次发送的间隔时间 默认1000ms
opqBot.SetSendDelayed(1000)
宏
func MacroAt(qqs []int64) string
//返回At的宏
func MacroAtAll() string
//返回At所有人的宏
func MacroId() string
//返回撤回消息使用的ID
example
主要看仓库里的example,博客可能更新不及时!!!
更新记录
20210318
简化发送代码
20210319
将宏移出BotManager,添加对发送队列每次发送时间的控制
20210322
添加发送函数的中间件
20210403
增加发送回调和优化中间件,基础功能完善
20210405
添加对撤回功能的完善和支持 注意看一下 example
20210406
戳一戳功能,example 即是文档
20210407
删除多余log,完善戳戳
20210420
添加Mp3转Silk功能和一些其他的功能