前言

目前IOTQQ框架挺多的,许多功能也挺强大的,但我想要的是一个完全异步,自带队列,而且可以编译出二进制文件的框架,所以就有了这个项目

「其他分享」IOTQQ框架使用教程插图
IOTQQ框架使用教程

简单介绍

OPQBot

解决一切问题的方法:先百度,不行再问我哟!

支持的功能

  1. 群消息处理事件
  2. 好友消息处理事件
  3. 机器人事件处理
  4. 所有支持的消息发送
  5. At
  6. 表情
  7. 撤回
  8. 下载文件
  9. 禁言
  10. 群公告

入门使用

安装框架 (就一条命令欧~)

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功能和一些其他的功能