本文最后更新于 2022年02月18日 已经是 401天前了 ,文章可能具有时效性,若有错误或已失效,请在下方留言。
文章还在施工和完善呢!
前言
目前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()
opqBot.Wait()
绑定事件 (别问我啥是事件…)
群消息事件
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,博客可能更新不及时!!!
Qzone空间相关
发送说说
func (m *Manager) SendShuoShuoWithPic(Content, picBo, richVal string) (SendShuoShuoResult, error) //发送图文的 通过GetPicBoAndRichVal 函数可以将上传的图片转为需要的值
func (m *Manager) SendShuoShuo(Content string) (SendShuoShuoResult, error) //全文本的
点赞
func (m *Manager) Like(unikey, curkey, appid string) error
获取主页的说说
func (m *Manager) GetShuoShuoList() (ShuoshuoList, error)
更新记录
20210318
简化发送代码
20210319
将宏移出BotManager,添加对发送队列每次发送时间的控制
20210322
添加发送函数的中间件
20210403
增加发送回调和优化中间件,基础功能完善
20210405
添加对撤回功能的完善和支持 注意看一下 example
20210406
戳一戳功能,example 即是文档
20210407
删除多余log,完善戳戳
20210420
添加Mp3转Silk功能和一些其他的功能
20210424
添加事件的中间件,向下兼容以前的代码,使用看example,完善silk功能
20210427
修复SocketIO数据畸形的问题,添加群上传功能
20210428
添加内置session 相关内容看Wiki
20210508
添加空间的相关函数
20210515
添加 获取群成员列表 接口
20210608
框架内置消息记录读取CPU占用过高
20210728
表情映射
你好,我想问一下OPQBot.SendTypeVoice一系列的发语音是如何使用的
这个需要安装 https://github.com/kn007/silk-v3-decoder 到同一目录下才可以使用
你好, 我想问一下, 文章目录中的功能函数是哪个语言的呢?Go吗?
还有就是, 我依然没有找到lua相关的API介绍在哪里, 您之前提供的链接我看了, 里面并没有相关的介绍, 目前在很努力的啃源码来使用, 如果有可能, 能够提供一下确切的地址吗, 万分感谢
是OPQBot Golang版本SDK的相关函数
好的好的, 那么lua语言插件的API列表的确切地址能够提供吗, 我想要了解一下相关的API, 但是一直都找不到确切的地址(☆ω☆)
lua 插件会造成非预期的内存泄露,建议还是使用其他语言进行编写,并且lua 插件没有相关API的列表,你只能看看其他大佬是怎么写的 官方插件目录
其他大佬的插件仓库
好的好的, 主要就是现在只是轻量级的需求, 没必要上其他语言, 内存泄漏我实际上也没有遇到过这个问题
现在也只是希望加个撤回的功能哈哈
你好,我现在正在寻找OPQBot的官方Lua api文档,你知道在哪里可以找到吗?万分感谢
你可以去官网看看https://docs.opqbot.com/
啊哈,我更新了官方附带的Events.lua获得了一些demo, 已经解决问题啦, 谢谢你的回复
有啥疑问可以在这里直接提问哦~