rbq

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2023 License: MIT Imports: 15 Imported by: 0

README

rbq-go

一个以go-cqhttp为后端的插件开发框架

写在前面

这是一个个人学习性质的项目,不能提供任何可靠性保证,包括但不限于:代码安全与质量,相关文档,issue回复的及时性等

基于上述理由,本项目的更新速度可能会十分缓慢(就是懒)。如果star高了,用的人多了,项目变得活跃了,那我应该会变得很积极(手动狗头)

一个人的力量是有限的,所以如果你愿意使用,并在使用过程中有任何问题、新的feature/代码修改建议,欢迎提出issue,我会尽可能的回复并改进。

PS: rbq = robot qq

简介

rbq-go是一个以go-cqhttp为后端的插件开发框架,它的目标是提供一个简单、易用的插件开发环境,通过封装go-cqhttp的api,使插件开发者可以更简单的与qq交互。

项目灵感来自于许久以前写着玩儿的时候,发现要写一堆代码去调用后端,感觉很麻烦,于是有了写这个项目的念头,我但愿这个项目能够帮助到你。

为了保持项目简单易懂,项目会 尽量避免使用过于复杂的设计 ,降低学习成本。同时保留高级功能的空间,使之可以胜任复杂场景。期望是不再需要理解以及再封装onebot的文档,即可简单的开发插件

安装

go get -u github.com/afraidjpg/rbq-go

使用

示例代码请 点击这里

package main

import (
	"fmt"
	"github.com/afraidjpg/rbq-go"
)

// YourPlugin 这是你的插件本体
func YourPlugin(ctx *rbq.Context) {
	msg := ctx.GetMessage()
	if msg == "hello world" {
		ctx.Reply("welcome")
		return
	}

	ctx.Reply("test") // 发送 "test"

	ctx.AddText("boo") // 添加消息但不立刻发送
	ctx.AddText("bar")
	ctx.Reply() // 发送 "boobar"

	ctx.AddText("hello") // 添加消息但不立刻发送
	ctx.AddText(" ")
	ctx.Reply("world") // 发送 "hello world"
}

// main 方法
func main() {
	bot := rbq.NewApp()          // 新建app
	pld := bot.GetPluginLoader() // 获取插件装载器
	// 添加单个插件
	pld.BindPlugin(YourPlugin, nil)

	// 创建一个插件组,并向插件组中加入插件
	gp := pld.Group("gp", nil)
	gp.BindPlugin(YourPlugin, nil)

	// 添加插件中发生的错误
	errs := gp.GetErrors()
	if len(errs) > 0 {
		for _, err := range errs {
			fmt.Println(err)
			return
		}
	}
	// 不给参数,自动设置为 127.0.0.1:8080(go-cqhttp的默认正向websocket端口)
	bot.Run("")
}

运行

  • 下载 go-cqhttp
  • 启动 go-cqhttp 并使用选择正向websocket连接
  • 运行你的程序

插件选项

BindPlugin的第二个参数是一个*PluginOption类型的变量,可以为插件设置一些选项,例如:

package main

import (
	"fmt"
	"github.com/afraidjpg/rbq-go"
)

var SimpleOption = &rbq.PluginOption{
	Name: "example_reply", // 插件名称
	FilterFunc: []rbq.PluginFilterFunc{
		func(ctx *rbq.Context) bool {
			return ctx.IsGroup() // 只回复群消息
		},
	},
	RecoverFunc: func(ctx *rbq.Context, err any) {
		fmt.Println("插件运行错误:", err)
	}, // 当插件运行错误的时候执行的逻辑
}

func YourPlugin(ctx *rbq.Context) {
	ctx.Reply("test")
}

// 然后在绑定插件的时候使用
func main() {
	bot := rbq.NewApp()
	pld := bot.GetPluginLoader()
	pld.BindPlugin(YourPlugin, SimpleOption) // 该插件将应用上述设置

	gp := pld.Group("gp", &rbq.PluginGroupOption{SimpleOption})
	gp.BindPlugin(YourPlugin, nil) // gp组内的插件选项如果未设置,则会直接应用gp组的选项
	// ...
}

CQ码

如何获取CQ码与发送CQ码:


func YourPlugin(ctx *rbq.Context) {
    // 获取该条消息中的所有CQ码,返回类型为 []CQCodeInterface,需要手动转换类型
    cq := ctx.GetAllCQCode() 
	
    // 获取CQ码的方式为 ctx.GetCQX(), 其中X为CQ码的类型,例如 ctx.GetCQAt() 获取at码
    ats := ctx.GetCQAt() // 返回 []*CQAt,获取该条消息中的所有at
    for _, at := range ats {
        fmt.Println(at.GetQQ()) // 获取at的qq号
    }
	
    // 发送CQ码的方式为 ctx.AddCQX(), X代表CQ码类型,且首字母大写
    // 如 At、Image、Face...
    ctx.AddCQAt(1234567)
    ctx.AddCQFace(22)
    // ...
	
    ctx.Reply() // 发送消息
}

可CQ码的支持与 go-cqhttp 同步,可以点击这里查看README中对CQ码的描述

CQ码 说明 收发限制 备注
face 完成 收&发
record 完成 收&发 ⚠️可能存在问题,具体查看该issue
video 完成 收&发 如果没有后缀,通常为mp4
at 完成 收&发
share 完成 收&发 ⚠️对群时发送/接受时可能会失败
music 完成 收&发
reply 完成 收&发
forward 完成
node 完成
xml 未实现
json 未实现
image 完成 收&发
redbag 完成
poke 完成
cardimage 完成
tts 完成

Documentation

Index

Constants

View Source
const (
	CQScopePrivate = 0b1                 // 私聊
	CQScopeGroup   = CQScopePrivate << 1 // 群聊

	CQScopeAll = CQScopePrivate | CQScopeGroup // 允许所有的消息空间
)
View Source
const (
	CQMusicTypeQQ     = "qq"     // qq音乐
	CQMusicType163    = "163"    // 网易云音乐
	CQMusicTypeXM     = "xm"     // 虾米音乐
	CQMusicTypeCustom = "custom" // 自定义
)

CQMusic的 type 可选参数

View Source
const (
	CQImageTypeFlash = "flash" // 动图
	CQImageTypeShow  = "show"  // 秀图
)

CQImage的 type 可选参数

View Source
const (
	CQImageSubTypeNormal    = iota // 正常图片
	CQImageSubTypeEmoji            // 表情包, 在客户端会被分类到表情包图片并缩放显示
	CQImageSubTypeHot              // 热图
	CQImageSubTypeDou              // 斗图
	CQImageSubTypeZhi              // 智图?
	CQImageSubTypeTie              // 贴图
	CQImageSubTypeSelf             // 自拍
	CQImageSubTypeTieAd            // 贴图广告?
	CQImageSubTypeUnknown          // 有待测试
	CQImageSubTypeHotSearch        // 热搜图
)

CQImage的 subType 可选参数

View Source
const (
	CQImageIDNormal  = 40000 // 普通
	CQImageIDPhantom = 40001 // 幻影
	CQImageIDShake   = 40002 // 抖动
	CQImageIDBirth   = 40003 // 生日
	CQImageIDLove    = 40004 // 爱你
	CQImageIDSeek    = 40005 // 征友
)

CQImage的ID可选参数

View Source
const (
	CQGiftTypeWink           = iota // 甜 Wink
	CQGiftTypeCola                  // 肥宅快乐水
	CQGiftTypeLuckyBracelet         // 幸运手链
	CQGiftTypeCappuccino            // 卡布奇诺
	CQGiftTypeCatWatch              // 猫咪手表
	CQGiftTypeGlove                 // 绒绒手套
	CQGiftTypeRainbowCandy          // 彩虹糖果
	CQGiftTypeStrong                // 坚强
	CQGiftTypeConfession            // 告白话筒
	CQGiftTypeHoldHand              // 牵你的手
	CQGiftTypeCuteCat               // 可爱猫咪
	CQGiftTypeMysteriousMask        // 神秘面具
	CQGiftTypeBusy                  // 我超忙的
	CQGiftTypeLoveMask              // 爱心口罩
)

Variables

This section is empty.

Functions

func NewCQCardImage

func NewCQCardImage(file string, minWidth, minHeight, maxWidth, maxHeight int64, source, icon string) (*CQCode, *CQCodeError)

NewCQCardImage 新建一个装逼大图的CQ码 file 和 image 的 file 字段对齐,支持情况也想通 minWidth, minHeight, maxWidth, maxHeight 为图片的最小宽高和最大宽高, 0 为默认 source 可选,表示分享来源名称 icon 可选,表示分享来源图标url,支持 http://, https://

func NewCQForwardNode

func NewCQForwardNode(id int64, name string, uin int64, content, seq any) (*CQCode, *CQCodeError)

NewCQForwardNode 新建一个转发消息

func NewCQImage

func NewCQImage(file, type_ string, subType int, cache bool, id int64, c int) (*CQCode, *CQCodeError)

NewCQImage 新建一个图片的CQ码 file 为图片文件名,支持 http://,https://,file://,base64:// 格式 type_ 为图片类型,支持 flash,show, 不填则为普通图片 subType 为图片子类型,只出现在群聊中 cache 为是否使用缓存 id 特效ID c 下载线程数

func NewCQMusic

func NewCQMusic(type_ string, id int64, url, audio, title, content, image string) (*CQCode, *CQCodeError)

NewCQMusic 新建一个音乐的CQ码 type 为音乐类型,支持 qq,163,xm 以及自定义 custom id 为音乐id,只在 type 为 qq,163,xm 有效 其他参数只在 type 为 custom 有效 url 为点击后跳转目标 URL audio 为音乐 URL title 为音乐标题 content 可选 为音乐简介 image 可选 为音乐封面图片 URL CQMusic 没有接收,只有发送

func NewCQRecord

func NewCQRecord(file string, magic, cache, proxy bool, timeout int) (*CQCode, *CQCodeError)

NewCQRecord 新建一个语音消息 file 为语音文件路径,支持网络路径,base64,file://协议 magic 为是否为变声 cache, proxy, timeout 只有在 file 为网络路径时有效

func NewCQShare

func NewCQShare(url, title, content, image string) (*CQCode, *CQCodeError)

NewCQShare 新建一个分享链接的CQ码 url 分享链接 title 标题 content 可选,内容描述 image 可选,图片url链接

Types

type ApiReq

type ApiReq struct {
	Action string      `json:"action"`
	Params interface{} `json:"params"`
}

ApiReq 向 cqhttp 接口发送消息的消息体格式

type App

type App struct {
}

func NewApp

func NewApp() *App

func (*App) GetPluginLoader

func (a *App) GetPluginLoader() *PluginGroup

func (*App) Run

func (a *App) Run(cqAddr string)

type CQAt

type CQAt struct {
	*CQCode
}

CQAt @某人

func (*CQAt) GetQQ

func (at *CQAt) GetQQ() int64

GetQQ 获取 at 的 QQ号

type CQCode

type CQCode struct {
	Type string
	Data []CQDataValue
}

func NewCQAt

func NewCQAt(qq int64, name string) *CQCode

NewCQAt 新建一个At某人的CQ码 qq 为QQ号 name 为at的qq不存在时显示的名字

func NewCQFace

func NewCQFace(id int) *CQCode

NewCQFace 新建一个QQ表情的CQ码

func NewCQPoke

func NewCQPoke(qq int64) *CQCode

NewCQPoke 新建一个戳一戳的CQ码

func NewCQReply

func NewCQReply(id int64) *CQCode

NewCQReply 新建一个回复的CQ码

func NewCQTTS

func NewCQTTS(text string) *CQCode

NewCQTTS text 为要转换的文本

func NewCQText

func NewCQText(text string) *CQCode

NewCQText 新建一个纯文本消息

func NewCQVideo

func NewCQVideo(file, cover string, c int) (*CQCode, error)

NewCQVideo 新建一个视频的CQ码 file 为视频文件路径,支持网络路径,base64,file://协议 cover 如果传入该参数,则必须保证图片为jpg格式,由于这里不会实际获取图片文件,所以不会检查图片格式,go-cqhttp 将会检查文件格式是否合法

func (*CQCode) CQData

func (cq *CQCode) CQData() []CQDataValue

func (*CQCode) CQType

func (cq *CQCode) CQType() string

func (*CQCode) Decode

func (cq *CQCode) Decode(s string)

func (*CQCode) Get

func (cq *CQCode) Get(k string) any

func (*CQCode) GetBool

func (cq *CQCode) GetBool(k string) bool

func (*CQCode) GetFloat64

func (cq *CQCode) GetFloat64(k string) float64

func (*CQCode) GetInt

func (cq *CQCode) GetInt(k string) int

func (*CQCode) GetInt64

func (cq *CQCode) GetInt64(k string) int64

func (*CQCode) GetString

func (cq *CQCode) GetString(k string) string

func (*CQCode) MarshalJSON

func (cq *CQCode) MarshalJSON() ([]byte, error)

func (*CQCode) String

func (cq *CQCode) String() string

func (*CQCode) UnmarshalJSON

func (cq *CQCode) UnmarshalJSON(b []byte) error

UnmarshalJSON 不会用到,需不要实现该方法

type CQCodeError

type CQCodeError struct {
	// contains filtered or unexported fields
}

func (*CQCodeError) CQType

func (e *CQCodeError) CQType() string

func (*CQCodeError) Error

func (e *CQCodeError) Error() string

type CQCodeInterface

type CQCodeInterface interface {
	CQType() string
	CQData() []CQDataValue
	Get(string) any

	String() string
	// contains filtered or unexported methods
}

type CQDataValue

type CQDataValue struct {
	K string
	V any
}

type CQFace

type CQFace struct {
	*CQCode
}

CQFace QQ表情

func (*CQFace) GetId

func (at *CQFace) GetId() int64

GetId 获取表情ID

type CQForward

type CQForward struct {
	*CQCode
}

CQForward 转发

func (*CQForward) GetId

func (f *CQForward) GetId() int64

GetId 获取转发的消息id

type CQImage

type CQImage struct {
	*CQCode
}

CQImage 图片

func (*CQImage) GetFile

func (i *CQImage) GetFile() string

GetFile 获取图片文件名

func (*CQImage) GetSubType

func (i *CQImage) GetSubType() int

GetSubType 获取图片子类型

func (*CQImage) GetType

func (i *CQImage) GetType() string

GetType 获取图片类型

func (*CQImage) GetUrl

func (i *CQImage) GetUrl() string

GetUrl 获取图片链接

type CQRecord

type CQRecord struct {
	*CQCode
}

CQRecord 语音

func (*CQRecord) GetFile

func (r *CQRecord) GetFile() string

GetFile 获取文件名

func (*CQRecord) GetMagic

func (r *CQRecord) GetMagic() bool

GetMagic 是否变声

func (*CQRecord) GetUrl

func (r *CQRecord) GetUrl() string

GetUrl 获取文件链接

type CQRecv

type CQRecv struct {
	// contains filtered or unexported fields
}

CQRecv 接收的CQ码消息 从收到的消息中解析出CQ码和纯文本消息

func (CQRecv) GetAllCQCode

func (cqr CQRecv) GetAllCQCode() []CQCodeInterface

func (CQRecv) GetCQCodeByType

func (cqr CQRecv) GetCQCodeByType(t string) []CQCodeInterface

func (CQRecv) GetCQFace

func (cqr CQRecv) GetCQFace() []*CQFace

GetCQFace 获取表情

func (CQRecv) GetCQForward

func (cqr CQRecv) GetCQForward() *CQForward

GetCQForward 获取转发消息

func (CQRecv) GetCQImage

func (cqr CQRecv) GetCQImage() []*CQImage

GetCQImage 获取图片

func (CQRecv) GetCQRecord

func (cqr CQRecv) GetCQRecord() *CQRecord

GetCQRecord 获取语音消息 因为qq单条消息只可能发送一条语音,所以接受时也只可能接收到一条,所以只返回单个

func (CQRecv) GetCQRedBag

func (cqr CQRecv) GetCQRedBag() *CQRedBag

GetCQRedBag 获取红包

func (CQRecv) GetCQReply

func (cqr CQRecv) GetCQReply() *CQReply

GetCQReply 获取回复消息

func (CQRecv) GetCQShare

func (cqr CQRecv) GetCQShare() *CQShare

GetCQShare 获取分享链接

func (CQRecv) GetCQVideo

func (cqr CQRecv) GetCQVideo() *CQVideo

GetCQVideo 获取视频消息 因为qq单条消息只可能发送一条视频,所以接受时也只可能接收到一条,所以只返回单个

func (CQRecv) GetText

func (cqr CQRecv) GetText() string

type CQRedBag

type CQRedBag struct {
	*CQCode
}

CQRedBag 红包

func (*CQRedBag) GetTitle

func (r *CQRedBag) GetTitle() string

GetTitle 获取红包标题

type CQReply

type CQReply struct {
	*CQCode
}

CQReply 回复

func (*CQReply) GetId

func (r *CQReply) GetId() int64

GetId 获取回复的消息id

type CQSend

type CQSend struct {
	// contains filtered or unexported fields
}

func (*CQSend) AddCQAt

func (cqs *CQSend) AddCQAt(qq ...int64) *CQSend

AddCQAt at某人,传入0表示at全体成员

func (*CQSend) AddCQCardImage

func (cqs *CQSend) AddCQCardImage(file string) *CQSend

AddCQCardImage 发送装逼大图

func (*CQSend) AddCQCode

func (cqs *CQSend) AddCQCode(cq *CQCode) *CQSend

AddCQCode 添加CQ码

func (*CQSend) AddCQCustomForwardMsg

func (cqs *CQSend) AddCQCustomForwardMsg(name string, qq int64, content, seq any) *CQSend

AddCQCustomForwardMsg 转发消息-自定义内容

func (*CQSend) AddCQFace

func (cqs *CQSend) AddCQFace(faceId ...int) *CQSend

AddCQFace 添加表情

func (*CQSend) AddCQForwardMsg

func (cqs *CQSend) AddCQForwardMsg(id ...int64) *CQSend

AddCQForwardMsg 转发消息

func (*CQSend) AddCQMusic

func (cqs *CQSend) AddCQMusic(type_ string, id int64) *CQSend

AddCQMusic 发送音乐分享

func (*CQSend) AddCQMusicCustom

func (cqs *CQSend) AddCQMusicCustom(url, audio, title, content, image string) *CQSend

AddCQMusicCustom 发送自定义音乐分享

func (*CQSend) AddCQPoke

func (cqs *CQSend) AddCQPoke(qq int64) *CQSend

AddCQPoke 戳一戳

func (*CQSend) AddCQRecord

func (cqs *CQSend) AddCQRecord(file string) *CQSend

AddCQRecord 发送语音消息 file 语音文件路径,支持 http://,https://,base64://,file://协议

func (*CQSend) AddCQReply

func (cqs *CQSend) AddCQReply(id int64) *CQSend

AddCQReply 回复消息

func (*CQSend) AddCQShare

func (cqs *CQSend) AddCQShare(url, title, content, image string) *CQSend

AddCQShare 发送分享链接

func (*CQSend) AddCQTTS

func (cqs *CQSend) AddCQTTS(text string) *CQSend

AddCQTTS 发送文字转语音消息

func (*CQSend) AddCQVideo

func (cqs *CQSend) AddCQVideo(file, cover string) *CQSend

AddCQVideo 发送短视频消息 file 视频文件路径,支持 http://,https://,base64://,file://协议 cover 封面文件路径,支持 http://,https://,base64://,file://协议,图片必须是jpg格式

func (*CQSend) AddImage

func (cqs *CQSend) AddImage(file string) *CQSend

AddImage 发送图片

func (*CQSend) AddText

func (cqs *CQSend) AddText(text ...string) *CQSend

AddText 添加纯文本

type CQShare

type CQShare struct {
	*CQCode
}

CQShare 分享链接

func (*CQShare) GetContent

func (s *CQShare) GetContent() string

GetContent 获取内容

func (*CQShare) GetImage

func (s *CQShare) GetImage() string

GetImage 获取图片

func (*CQShare) GetTitle

func (s *CQShare) GetTitle() string

GetTitle 获取标题

func (*CQShare) GetUrl

func (s *CQShare) GetUrl() string

GetUrl 获取链接

type CQText

type CQText struct {
	*CQCode
}

CQText 纯文本消息

func (*CQText) GetText

func (t *CQText) GetText() string

GetText 获取文本内容

type CQVideo

type CQVideo struct {
	*CQCode
}

CQVideo 短视频

func (*CQVideo) GetCover

func (v *CQVideo) GetCover() string

GetCover 获取文件名

func (*CQVideo) GetUrl

func (v *CQVideo) GetUrl() string

GetUrl 获取文件路径

type Context

type Context struct {
	*MessageHandle
}

type MessageHandle

type MessageHandle struct {
	*CQRecv
	*CQSend
	// contains filtered or unexported fields
}

func (*MessageHandle) GetGroupNo

func (c *MessageHandle) GetGroupNo() int64

GetGroupNo 获取群号

func (*MessageHandle) GetMessage

func (c *MessageHandle) GetMessage() string

GetMessage 获取接收到的消息

func (*MessageHandle) GetMessageId

func (c *MessageHandle) GetMessageId() int64

func (*MessageHandle) GetSender

func (c *MessageHandle) GetSender() int64

GetSender 获取发送者的QQ

func (*MessageHandle) IsGroup

func (c *MessageHandle) IsGroup() bool

IsGroup 判断是否是群聊消息

func (*MessageHandle) Reply

func (c *MessageHandle) Reply(ss ...string)

Reply 发送消息,默认向消息来源发送,如群,私聊

func (*MessageHandle) SendToGroup

func (c *MessageHandle) SendToGroup(groupId int64)

SendToGroup 向指定群聊发送消息

func (*MessageHandle) SendToPrivate

func (c *MessageHandle) SendToPrivate(userId int64)

SendToPrivate 向指定私聊发送消息

type PluginFilterFunc

type PluginFilterFunc func(ctx *Context) bool

type PluginFunc

type PluginFunc func(*Context) //

type PluginGroup

type PluginGroup struct {
	// contains filtered or unexported fields
}

func (*PluginGroup) BindPlugin

func (pg *PluginGroup) BindPlugin(f PluginFunc, opt *PluginOption) *PluginGroup

BindPlugin 为组绑定插件

func (*PluginGroup) GetErrors

func (pg *PluginGroup) GetErrors() []error

func (*PluginGroup) Group

func (pg *PluginGroup) Group(name string, opt *PluginGroupOption) *PluginGroup

Group 插件组

func (*PluginGroup) SetOption

func (pg *PluginGroup) SetOption(opt *PluginGroupOption) *PluginGroup

type PluginGroupOption

type PluginGroupOption struct {
	GPluginOpt *PluginOption // 组内插件的默认设置,详情见 PluginOption 的注释说明
}

PluginGroupOption 插件组选项

func DefaultPluginGroupOption

func DefaultPluginGroupOption() *PluginGroupOption

type PluginOption

type PluginOption struct {
	Name        string
	FilterFunc  []PluginFilterFunc          // 消息过滤器,返回 false 则本条消息不执行插件
	Middleware  []func(ctx *Context)        // TODO 中间件
	RecoverFunc func(ctx *Context, err any) // 插件发生 panic 时的处理方法,默认控制台打印信息
	IsTurnOff   *bool                       // TODO 是否初始状态关闭插件,默认false,即不关闭
}

PluginOption 插件选项 如果设置在组上,则组内所有插件都会继承该选项 对于 slice类型,会从头部加入新的元素 比如针对组设置了 FilterFunc{f1, f2, f3} 针对插件设置了 FilterFunc{f4, f5, f6},则插件的 FilterFunc 的执行顺序为 f1->f2->f3->f4->f5->f6 对于非 slice/map/array 类型,除非插件指定值,否则会直接使用组设置的值 对组进行设置时会被忽略的值:Name

func DefaultPluginOption

func DefaultPluginOption() *PluginOption

func (*PluginOption) AddFilterFunc

func (o *PluginOption) AddFilterFunc(f func(ctx *Context) bool)

func (*PluginOption) SetIsTurnOff

func (o *PluginOption) SetIsTurnOff(b bool)

func (*PluginOption) SetName

func (o *PluginOption) SetName(n string)

func (*PluginOption) SetRecoverFunc

func (o *PluginOption) SetRecoverFunc(f func(ctx *Context, err any))

type RecvNormalMsg

type RecvNormalMsg struct {
	Anonymous   string `json:"anonymous"` // 匿名,群属性
	GroupId     int64  `json:"group_id"`  // 群ID
	Font        int64  `json:"font"`
	Message     string `json:"message"`
	MessageId   int64  `json:"message_id"`
	MessageType string `json:"message_type"`
	PostType    string `json:"PostType"`
	RowMessage  string `json:"row_message"`
	SelfId      int64  `json:"self_id"`
	TargetId    int64  `json:"target_id"` // 发送目标的user_id 私聊属性
	SubType     string `json:"sub_type"`
	Time        int64  `json:"time"`
	UserId      int64  `json:"user_id"`
	Sender      struct {
		Age      int64  `json:"age"`
		Area     string `json:"area"`  // 地区,群属性
		Card     string `json:"card"`  // 卡片?,群属性
		Level    string `json:"level"` // 等级,群属性
		Role     string `json:"admin"` // 角色,群属性
		Nickname string `json:"nickname"`
		Title    string `json:"title"` // 角色title,群属性(名字前面的称谓)
		Sex      string `json:"sex"`
		UserId   int64  `json:"user_id"`
	}
}

RecvNormalMsg 接受的消息结构体类型

type ReplyMessage

type ReplyMessage struct {
	// contains filtered or unexported fields
}

type RespGroupForwardMsg

type RespGroupForwardMsg struct {
	GroupId  int64     `json:"group_id"`
	Messages []*CQCode `json:"messages"`
}

type RespGroupForwardMsgNode

type RespGroupForwardMsgNode struct {
	Type string `json:"type"`
	Data struct {
		Id      int64  `json:"id"`
		Name    string `json:"name"`
		Uin     int64  `json:"uin"`
		Content string `json:"content"`
		Time    int64  `json:"time"`
		Seq     int64  `json:"seq"`
	} `json:"data"`
}

type RespGroupMsg

type RespGroupMsg struct {
	GroupId    int64  `json:"group_id"`
	Message    string `json:"message"`
	AutoEscape bool   `json:"auto_escape"`
}

type RespPrivateForwardMsg

type RespPrivateForwardMsg struct {
	UserId   int64     `json:"user_id"`
	Messages []*CQCode `json:"messages"`
}

type RespPrivateMsg

type RespPrivateMsg struct {
	UserId     int64  `json:"user_id"`
	GroupId    int64  `json:"group_id"`
	Message    string `json:"message"`
	AutoEscape bool   `json:"auto_escape"`
}

Directories

Path Synopsis
src
common/mihoyo
Package mihoyo 提供米哈游相关的网络接口与辅助函数 此包以废弃状态,不再维护,仅供参考
Package mihoyo 提供米哈游相关的网络接口与辅助函数 此包以废弃状态,不再维护,仅供参考
common/ocr
Package ocr 图像识别相关功能,如用图片搜索相关信息
Package ocr 图像识别相关功能,如用图片搜索相关信息
common/setu_api
Package setu_api 提供公共的随机涩图API
Package setu_api 提供公共的随机涩图API

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL