OPQBot Wiki
本文最后更新于 2022年02月18日 已经是 401天前了 ,文章可能具有时效性,若有错误或已失效,请在下方留言
文章还在施工和完善呢!

前言

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

简单介绍

GitHub go.mod Go version (branch & subdirectory of monorepo) GitHub tag (latest SemVer pre-release) GitHub


支持的功能

入门使用

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

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
表情映射

评论

  1. quan
    Windows Edge
    安徽省安庆市
    3周前
    2023-3-05 0:29:27

    你好,我想问一下OPQBot.SendTypeVoice一系列的发语音是如何使用的

    • Avatar photo
      enjoy
      博主
      quan
      Windows Edge
      伊朗
      3周前
      2023-3-07 10:53:56

      这个需要安装 https://github.com/kn007/silk-v3-decoder 到同一目录下才可以使用

  2. Linux Firefox
    江西省上饶市
    已编辑
    9月前
    2022-7-12 16:57:40

    你好, 我想问一下, 文章目录中的功能函数是哪个语言的呢?Go吗?
    还有就是, 我依然没有找到lua相关的API介绍在哪里, 您之前提供的链接我看了, 里面并没有相关的介绍, 目前在很努力的啃源码来使用, 如果有可能, 能够提供一下确切的地址吗, 万分感谢

    • Avatar photo
      enjoy
      博主
      MemoryShadow
      Windows Chrome
      台湾省台北市
      9月前
      2022-7-12 17:00:26

      是OPQBot Golang版本SDK的相关函数

      • enjoy
        Linux Firefox
        江西省上饶市
        9月前
        2022-7-12 17:06:19

        好的好的, 那么lua语言插件的API列表的确切地址能够提供吗, 我想要了解一下相关的API, 但是一直都找不到确切的地址(☆ω☆)

        • Avatar photo
          enjoy
          博主
          MemoryShadow
          Windows Chrome
          台湾省台北市
          9月前
          2022-7-12 17:13:00

          lua 插件会造成非预期的内存泄露,建议还是使用其他语言进行编写,并且lua 插件没有相关API的列表,你只能看看其他大佬是怎么写的 官方插件目录
          其他大佬的插件仓库

          • enjoy
            Linux Firefox
            江西省上饶市
            9月前
            2022-7-12 17:31:10

            好的好的, 主要就是现在只是轻量级的需求, 没必要上其他语言, 内存泄漏我实际上也没有遇到过这个问题
            现在也只是希望加个撤回的功能哈哈

  3. Linux Edge
    江西省吉安市
    11月前
    2022-4-30 23:36:23

    你好,我现在正在寻找OPQBot的官方Lua api文档,你知道在哪里可以找到吗?万分感谢

    • Avatar photo
      enjoy
      博主
      MemoryShadow
      Android Chrome
      河北省
      11月前
      2022-5-01 19:32:25

      你可以去官网看看https://docs.opqbot.com/

      • enjoy
        Linux Edge
        江西省吉安市
        已编辑
        10月前
        2022-6-03 19:26:48

        啊哈,我更新了官方附带的Events.lua获得了一些demo, 已经解决问题啦, 谢谢你的回复

    • Avatar photo
      enjoy
      博主
      T_T
      Windows Chrome
      中国北京市北京
      1年前
      2022-1-11 21:38:54

      有啥疑问可以在这里直接提问哦~

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
小黄脸