Skip to content

Commit

Permalink
Shorten url
Browse files Browse the repository at this point in the history
update comment
  • Loading branch information
Ink-33 committed Feb 4, 2021
1 parent d291aa0 commit 7b71cd9
Show file tree
Hide file tree
Showing 25 changed files with 450 additions and 415 deletions.
194 changes: 100 additions & 94 deletions coolq/api.go

Large diffs are not rendered by default.

32 changes: 16 additions & 16 deletions coolq/bot.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import (

var json = jsoniter.ConfigCompatibleWithStandardLibrary

//CQBot CQBot结构体,存储Bot实例相关配置
// CQBot CQBot结构体,存储Bot实例相关配置
type CQBot struct {
Client *client.QQClient

Expand All @@ -39,13 +39,13 @@ type CQBot struct {
oneWayMsgCache sync.Map
}

//MSG 消息Map
// MSG 消息Map
type MSG map[string]interface{}

//ForceFragmented 是否启用强制分片
// ForceFragmented 是否启用强制分片
var ForceFragmented = false

//NewQQBot 初始化一个QQBot实例
// NewQQBot 初始化一个QQBot实例
func NewQQBot(cli *client.QQClient, conf *global.JSONConfig) *CQBot {
bot := &CQBot{
Client: cli,
Expand Down Expand Up @@ -107,12 +107,12 @@ func NewQQBot(cli *client.QQClient, conf *global.JSONConfig) *CQBot {
return bot
}

//OnEventPush 注册事件上报函数
// OnEventPush 注册事件上报函数
func (bot *CQBot) OnEventPush(f func(m MSG)) {
bot.events = append(bot.events, f)
}

//GetMessage 获取给定消息id对应的消息
// GetMessage 获取给定消息id对应的消息
func (bot *CQBot) GetMessage(mid int32) MSG {
if bot.db != nil {
m := MSG{}
Expand All @@ -130,15 +130,15 @@ func (bot *CQBot) GetMessage(mid int32) MSG {
return nil
}

//UploadLocalImageAsGroup 上传本地图片至群聊
// UploadLocalImageAsGroup 上传本地图片至群聊
func (bot *CQBot) UploadLocalImageAsGroup(groupCode int64, img *LocalImageElement) (*message.GroupImageElement, error) {
if img.Stream != nil {
return bot.Client.UploadGroupImage(groupCode, img.Stream)
}
return bot.Client.UploadGroupImageByFile(groupCode, img.File)
}

//UploadLocalVideo 上传本地短视频至群聊
// UploadLocalVideo 上传本地短视频至群聊
func (bot *CQBot) UploadLocalVideo(target int64, v *LocalVideoElement) (*message.ShortVideoElement, error) {
if v.File != "" {
video, err := os.Open(v.File)
Expand All @@ -155,7 +155,7 @@ func (bot *CQBot) UploadLocalVideo(target int64, v *LocalVideoElement) (*message
return &v.ShortVideoElement, nil
}

//UploadLocalImageAsPrivate 上传本地图片至私聊
// UploadLocalImageAsPrivate 上传本地图片至私聊
func (bot *CQBot) UploadLocalImageAsPrivate(userID int64, img *LocalImageElement) (*message.FriendImageElement, error) {
if img.Stream != nil {
return bot.Client.UploadPrivateImage(userID, img.Stream)
Expand All @@ -169,7 +169,7 @@ func (bot *CQBot) UploadLocalImageAsPrivate(userID int64, img *LocalImageElement
return bot.Client.UploadPrivateImage(userID, f)
}

//SendGroupMessage 发送群消息
// SendGroupMessage 发送群消息
func (bot *CQBot) SendGroupMessage(groupID int64, m *message.SendingMessage) int32 {
var newElem []message.IMessageElement
for _, elem := range m.Elements {
Expand Down Expand Up @@ -236,7 +236,7 @@ func (bot *CQBot) SendGroupMessage(groupID int64, m *message.SendingMessage) int
return bot.InsertGroupMessage(ret)
}

//SendPrivateMessage 发送私聊消息
// SendPrivateMessage 发送私聊消息
func (bot *CQBot) SendPrivateMessage(target int64, m *message.SendingMessage) int32 {
var newElem []message.IMessageElement
for _, elem := range m.Elements {
Expand Down Expand Up @@ -306,7 +306,7 @@ func (bot *CQBot) SendPrivateMessage(target int64, m *message.SendingMessage) in
return id
}

//InsertGroupMessage 群聊消息入数据库
// InsertGroupMessage 群聊消息入数据库
func (bot *CQBot) InsertGroupMessage(m *message.GroupMessage) int32 {
val := MSG{
"message-id": m.Id,
Expand All @@ -332,7 +332,7 @@ func (bot *CQBot) InsertGroupMessage(m *message.GroupMessage) int32 {
return id
}

//InsertPrivateMessage 私聊消息入数据库
// InsertPrivateMessage 私聊消息入数据库
func (bot *CQBot) InsertPrivateMessage(m *message.PrivateMessage) int32 {
val := MSG{
"message-id": m.Id,
Expand All @@ -357,12 +357,12 @@ func (bot *CQBot) InsertPrivateMessage(m *message.PrivateMessage) int32 {
return id
}

//toGlobalID 构建`code`-`msgID`的字符串并返回其CRC32 Checksum的值
// toGlobalID 构建`code`-`msgID`的字符串并返回其CRC32 Checksum的值
func toGlobalID(code int64, msgID int32) int32 {
return int32(crc32.ChecksumIEEE([]byte(fmt.Sprintf("%d-%d", code, msgID))))
}

//Release 释放Bot实例
// Release 释放Bot实例
func (bot *CQBot) Release() {
if bot.db != nil {
_ = bot.db.Close()
Expand Down Expand Up @@ -453,7 +453,7 @@ func formatMemberName(mem *client.GroupMemberInfo) string {
return fmt.Sprintf("%s(%d)", mem.DisplayName(), mem.Uin)
}

//ToJSON 生成JSON字符串
// ToJSON 生成JSON字符串
func (m MSG) ToJSON() string {
b, _ := json.Marshal(m)
return string(b)
Expand Down
54 changes: 27 additions & 27 deletions coolq/cqcode.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,52 +34,52 @@ var typeReg = regexp.MustCompile(`\[CQ:(\w+)`)
var paramReg = regexp.MustCompile(`,([\w\-.]+?)=([^,\]]+)`)
*/

//IgnoreInvalidCQCode 是否忽略无效CQ码
// IgnoreInvalidCQCode 是否忽略无效CQ码
var IgnoreInvalidCQCode = false

//SplitURL 是否分割URL
// SplitURL 是否分割URL
var SplitURL = false

const maxImageSize = 1024 * 1024 * 30 // 30MB
const maxVideoSize = 1024 * 1024 * 100 // 100MB
//PokeElement 拍一拍
// PokeElement 拍一拍
type PokeElement struct {
Target int64
}

//GiftElement 礼物
// GiftElement 礼物
type GiftElement struct {
Target int64
GiftID message.GroupGift
}

//LocalImageElement 本地图片
// LocalImageElement 本地图片
type LocalImageElement struct {
message.ImageElement
Stream io.ReadSeeker
File string
}

//LocalVoiceElement 本地语音
// LocalVoiceElement 本地语音
type LocalVoiceElement struct {
message.VoiceElement
Stream io.ReadSeeker
}

//LocalVideoElement 本地视频
// LocalVideoElement 本地视频
type LocalVideoElement struct {
message.ShortVideoElement
File string
thumb io.ReadSeeker
}

//Type 获取元素类型ID
// Type 获取元素类型ID
func (e *GiftElement) Type() message.ElementType {
//Make message.IMessageElement Happy
// Make message.IMessageElement Happy
return message.At
}

//GiftID 礼物ID数组
// GiftID 礼物ID数组
var GiftID = [...]message.GroupGift{
message.SweetWink,
message.HappyCola,
Expand All @@ -97,13 +97,13 @@ var GiftID = [...]message.GroupGift{
message.LoveMask,
}

//Type 获取元素类型ID
// Type 获取元素类型ID
func (e *PokeElement) Type() message.ElementType {
//Make message.IMessageElement Happy
// Make message.IMessageElement Happy
return message.At
}

//ToArrayMessage 将消息元素数组转为MSG数组以用于消息上报
// ToArrayMessage 将消息元素数组转为MSG数组以用于消息上报
func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []MSG) {
r = []MSG{}
ur := false
Expand All @@ -130,10 +130,10 @@ func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []M
"data": map[string]string{"text": o.Content},
}
case *message.LightAppElement:
//m = MSG{
// "type": "text",
// "data": map[string]string{"text": o.Content},
//}
// m = MSG{
// "type": "text",
// "data": map[string]string{"text": o.Content},
// }
m = MSG{
"type": "json",
"data": map[string]string{"data": o.Content},
Expand Down Expand Up @@ -255,7 +255,7 @@ func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []M
return
}

//ToStringMessage 将消息元素数组转为字符串以用于消息上报
// ToStringMessage 将消息元素数组转为字符串以用于消息上报
func ToStringMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r string) {
ur := false
if len(isRaw) != 0 {
Expand Down Expand Up @@ -328,13 +328,13 @@ func ToStringMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r st
}
case *message.LightAppElement:
r += fmt.Sprintf(`[CQ:json,data=%s]`, CQCodeEscapeValue(o.Content))
//r += CQCodeEscapeText(o.Content)
// r += CQCodeEscapeText(o.Content)
}
}
return
}

//ConvertStringMessage 将消息字符串转为消息元素数组
// ConvertStringMessage 将消息字符串转为消息元素数组
func (bot *CQBot) ConvertStringMessage(msg string, isGroup bool) (r []message.IMessageElement) {
index := 0
stat := 0
Expand Down Expand Up @@ -491,7 +491,7 @@ func (bot *CQBot) ConvertStringMessage(msg string, isGroup bool) (r []message.IM
return
}

//ConvertObjectMessage 将消息JSON对象转为消息元素数组
// ConvertObjectMessage 将消息JSON对象转为消息元素数组
func (bot *CQBot) ConvertObjectMessage(m gjson.Result, isGroup bool) (r []message.IMessageElement) {
convertElem := func(e gjson.Result) {
t := e.Get("type").Str
Expand Down Expand Up @@ -782,11 +782,11 @@ func (bot *CQBot) ToElement(t string, d map[string]string, isGroup bool) (m inte
resID := d["resid"]
i, _ := strconv.ParseInt(resID, 10, 64)
if i == 0 {
//默认情况下走小程序通道
// 默认情况下走小程序通道
msg := message.NewLightApp(CQCodeUnescapeValue(d["data"]))
return msg, nil
}
//resid不为0的情况下走富文本通道,后续补全透传service Id,此处暂时不处理 TODO
// resid不为0的情况下走富文本通道,后续补全透传service Id,此处暂时不处理 TODO
msg := message.NewRichJson(CQCodeUnescapeValue(d["data"]))
return msg, nil
case "cardimage":
Expand Down Expand Up @@ -866,7 +866,7 @@ func (bot *CQBot) ToElement(t string, d map[string]string, isGroup bool) (m inte
return nil, nil
}

//XMLEscape 将字符串c转义为XML字符串
// XMLEscape 将字符串c转义为XML字符串
func XMLEscape(c string) string {
buf := new(bytes.Buffer)
_ = xml2.EscapeText(buf, []byte(c))
Expand Down Expand Up @@ -929,7 +929,7 @@ func CQCodeUnescapeValue(content string) string {
return ret
}

//makeImageOrVideoElem 图片 elem 生成器,单独拎出来,用于公用
// makeImageOrVideoElem 图片 elem 生成器,单独拎出来,用于公用
func (bot *CQBot) makeImageOrVideoElem(d map[string]string, video, group bool) (message.IMessageElement, error) {
f := d["file"]
if strings.HasPrefix(f, "http") || strings.HasPrefix(f, "https") {
Expand Down Expand Up @@ -1089,7 +1089,7 @@ func (bot *CQBot) makeImageOrVideoElem(d map[string]string, video, group bool) (
return nil, errors.New("invalid image")
}

//makeShowPic 一种xml 方式发送的群消息图片
// makeShowPic 一种xml 方式发送的群消息图片
func (bot *CQBot) makeShowPic(elem message.IMessageElement, source string, icon string, minWidth int64, minHeight int64, maxWidth int64, maxHeight int64, group bool) ([]message.IMessageElement, error) {
xml := ""
var suf message.IMessageElement
Expand Down Expand Up @@ -1122,7 +1122,7 @@ func (bot *CQBot) makeShowPic(elem message.IMessageElement, source string, icon
suf = i
}
if xml != "" {
//log.Warn(xml)
// log.Warn(xml)
ret := []message.IMessageElement{suf}
ret = append(ret, message.NewRichXml(xml, 5))
return ret, nil
Expand Down
2 changes: 1 addition & 1 deletion coolq/doc.go
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
//Package coolq 包含CQBot实例,CQ码处理,消息发送,消息处理等的相关函数与结构体
// Package coolq 包含CQBot实例,CQ码处理,消息发送,消息处理等的相关函数与结构体
package coolq
4 changes: 2 additions & 2 deletions coolq/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ import (

var format = "string"

//SetMessageFormat 设置消息上报格式,默认为string
// SetMessageFormat 设置消息上报格式,默认为string
func SetMessageFormat(f string) {
format = f
}

//ToFormattedMessage 将给定[]message.IMessageElement转换为通过coolq.SetMessageFormat所定义的消息上报格式
// ToFormattedMessage 将给定[]message.IMessageElement转换为通过coolq.SetMessageFormat所定义的消息上报格式
func ToFormattedMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r interface{}) {
if format == "string" {
r = ToStringMessage(e, id, isRaw...)
Expand Down
Loading

0 comments on commit 7b71cd9

Please sign in to comment.