mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-06 12:03:50 +08:00
parent
85df77f9a5
commit
4894731422
33
coolq/bot.go
33
coolq/bot.go
@ -176,11 +176,18 @@ func (bot *CQBot) GetMessage(mid int32) MSG {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UploadLocalImageAsGroup 上传本地图片至群聊
|
// UploadLocalImageAsGroup 上传本地图片至群聊
|
||||||
func (bot *CQBot) UploadLocalImageAsGroup(groupCode int64, img *LocalImageElement) (*message.GroupImageElement, error) {
|
func (bot *CQBot) UploadLocalImageAsGroup(groupCode int64, img *LocalImageElement) (i *message.GroupImageElement, err error) {
|
||||||
if img.Stream != nil {
|
if img.Stream != nil {
|
||||||
return bot.Client.UploadGroupImage(groupCode, img.Stream)
|
i, err = bot.Client.UploadGroupImage(groupCode, img.Stream)
|
||||||
|
} else {
|
||||||
|
i, err = bot.Client.UploadGroupImageByFile(groupCode, img.File)
|
||||||
}
|
}
|
||||||
return bot.Client.UploadGroupImageByFile(groupCode, img.File)
|
|
||||||
|
if i != nil {
|
||||||
|
i.Flash = img.Flash
|
||||||
|
i.EffectID = img.EffectID
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// UploadLocalVideo 上传本地短视频至群聊
|
// UploadLocalVideo 上传本地短视频至群聊
|
||||||
@ -201,17 +208,23 @@ func (bot *CQBot) UploadLocalVideo(target int64, v *LocalVideoElement) (*message
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UploadLocalImageAsPrivate 上传本地图片至私聊
|
// UploadLocalImageAsPrivate 上传本地图片至私聊
|
||||||
func (bot *CQBot) UploadLocalImageAsPrivate(userID int64, img *LocalImageElement) (*message.FriendImageElement, error) {
|
func (bot *CQBot) UploadLocalImageAsPrivate(userID int64, img *LocalImageElement) (i *message.FriendImageElement, err error) {
|
||||||
if img.Stream != nil {
|
if img.Stream != nil {
|
||||||
return bot.Client.UploadPrivateImage(userID, img.Stream)
|
i, err = bot.Client.UploadPrivateImage(userID, img.Stream)
|
||||||
}
|
} else {
|
||||||
// need update.
|
// need update.
|
||||||
f, err := os.Open(img.File)
|
f, e := os.Open(img.File)
|
||||||
if err != nil {
|
if e != nil {
|
||||||
return nil, err
|
return nil, e
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
return bot.Client.UploadPrivateImage(userID, f)
|
i, err = bot.Client.UploadPrivateImage(userID, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
if i != nil {
|
||||||
|
i.Flash = img.Flash
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendGroupMessage 发送群消息
|
// SendGroupMessage 发送群消息
|
||||||
|
117
coolq/cqcode.go
117
coolq/cqcode.go
@ -65,9 +65,11 @@ type GiftElement struct {
|
|||||||
|
|
||||||
// LocalImageElement 本地图片
|
// LocalImageElement 本地图片
|
||||||
type LocalImageElement struct {
|
type LocalImageElement struct {
|
||||||
message.ImageElement
|
|
||||||
Stream io.ReadSeeker
|
Stream io.ReadSeeker
|
||||||
File string
|
File string
|
||||||
|
|
||||||
|
Flash bool
|
||||||
|
EffectID int32
|
||||||
}
|
}
|
||||||
|
|
||||||
// LocalVoiceElement 本地语音
|
// LocalVoiceElement 本地语音
|
||||||
@ -83,6 +85,11 @@ type LocalVideoElement struct {
|
|||||||
thumb io.ReadSeeker
|
thumb io.ReadSeeker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Type implements the message.IMessageElement.
|
||||||
|
func (e *LocalImageElement) Type() message.ElementType {
|
||||||
|
return message.Image
|
||||||
|
}
|
||||||
|
|
||||||
// Type 获取元素类型ID
|
// Type 获取元素类型ID
|
||||||
func (e *GiftElement) Type() message.ElementType {
|
func (e *GiftElement) Type() message.ElementType {
|
||||||
// Make message.IMessageElement Happy
|
// Make message.IMessageElement Happy
|
||||||
@ -202,31 +209,28 @@ func ToArrayMessage(e []message.IMessageElement, groupID int64) (r []MSG) {
|
|||||||
"type": "video",
|
"type": "video",
|
||||||
"data": map[string]string{"file": o.Name, "url": o.Url},
|
"data": map[string]string{"file": o.Name, "url": o.Url},
|
||||||
}
|
}
|
||||||
case *message.ImageElement:
|
|
||||||
m = MSG{
|
|
||||||
"type": "image",
|
|
||||||
"data": map[string]string{"file": o.Filename, "url": o.Url},
|
|
||||||
}
|
|
||||||
case *message.GroupImageElement:
|
case *message.GroupImageElement:
|
||||||
|
data := map[string]string{"file": hex.EncodeToString(o.Md5) + ".image", "url": o.Url}
|
||||||
|
switch {
|
||||||
|
case o.Flash:
|
||||||
|
data["type"] = "flash"
|
||||||
|
case o.EffectID != 0:
|
||||||
|
data["type"] = "show"
|
||||||
|
data["id"] = strconv.FormatInt(int64(o.EffectID), 10)
|
||||||
|
}
|
||||||
m = MSG{
|
m = MSG{
|
||||||
"type": "image",
|
"type": "image",
|
||||||
"data": map[string]string{"file": hex.EncodeToString(o.Md5) + ".image", "url": o.Url},
|
"data": data,
|
||||||
}
|
}
|
||||||
case *message.FriendImageElement:
|
case *message.FriendImageElement:
|
||||||
|
data := map[string]string{"file": hex.EncodeToString(o.Md5) + ".image", "url": o.Url}
|
||||||
|
if o.Flash {
|
||||||
|
data["type"] = "flash"
|
||||||
|
}
|
||||||
m = MSG{
|
m = MSG{
|
||||||
"type": "image",
|
"type": "image",
|
||||||
"data": map[string]string{"file": hex.EncodeToString(o.Md5) + ".image", "url": o.Url},
|
"data": data,
|
||||||
}
|
}
|
||||||
case *message.GroupFlashImgElement:
|
|
||||||
return []MSG{{
|
|
||||||
"type": "image",
|
|
||||||
"data": map[string]string{"file": o.Filename, "type": "flash"},
|
|
||||||
}}
|
|
||||||
case *message.FriendFlashImgElement:
|
|
||||||
return []MSG{{
|
|
||||||
"type": "image",
|
|
||||||
"data": map[string]string{"file": o.Filename, "type": "flash"},
|
|
||||||
}}
|
|
||||||
case *message.ServiceElement:
|
case *message.ServiceElement:
|
||||||
if isOk := strings.Contains(o.Content, "<?xml"); isOk {
|
if isOk := strings.Contains(o.Content, "<?xml"); isOk {
|
||||||
m = MSG{
|
m = MSG{
|
||||||
@ -316,28 +320,28 @@ func ToStringMessage(e []message.IMessageElement, groupID int64, isRaw ...bool)
|
|||||||
} else {
|
} else {
|
||||||
write(`[CQ:video,file=%s,url=%s]`, o.Name, CQCodeEscapeValue(o.Url))
|
write(`[CQ:video,file=%s,url=%s]`, o.Name, CQCodeEscapeValue(o.Url))
|
||||||
}
|
}
|
||||||
case *message.ImageElement:
|
|
||||||
if ur {
|
|
||||||
write(`[CQ:image,file=%s]`, o.Filename)
|
|
||||||
} else {
|
|
||||||
write(`[CQ:image,file=%s,url=%s]`, o.Filename, CQCodeEscapeValue(o.Url))
|
|
||||||
}
|
|
||||||
case *message.GroupImageElement:
|
case *message.GroupImageElement:
|
||||||
|
var arg string
|
||||||
|
if o.Flash {
|
||||||
|
arg = ",type=flash"
|
||||||
|
} else if o.EffectID != 0 {
|
||||||
|
arg = ",type=show,id=" + strconv.FormatInt(int64(o.EffectID), 10)
|
||||||
|
}
|
||||||
if ur {
|
if ur {
|
||||||
write("[CQ:image,file=%s]", hex.EncodeToString(o.Md5)+".image")
|
write("[CQ:image,file=%s%s]", hex.EncodeToString(o.Md5)+".image", arg)
|
||||||
} else {
|
} else {
|
||||||
write("[CQ:image,file=%s,url=%s]", hex.EncodeToString(o.Md5)+".image", CQCodeEscapeValue(o.Url))
|
write("[CQ:image,file=%s,url=%s%s]", hex.EncodeToString(o.Md5)+".image", CQCodeEscapeValue(o.Url), arg)
|
||||||
}
|
}
|
||||||
case *message.FriendImageElement:
|
case *message.FriendImageElement:
|
||||||
if ur {
|
var arg string
|
||||||
write("[CQ:image,file=%s]", hex.EncodeToString(o.Md5)+".image")
|
if o.Flash {
|
||||||
} else {
|
arg = ",type=flash"
|
||||||
write("[CQ:image,file=%s,url=%s]", hex.EncodeToString(o.Md5)+".image", CQCodeEscapeValue(o.Url))
|
}
|
||||||
|
if ur {
|
||||||
|
write("[CQ:image,file=%s%s]", hex.EncodeToString(o.Md5)+".image", arg)
|
||||||
|
} else {
|
||||||
|
write("[CQ:image,file=%s,url=%s%s]", hex.EncodeToString(o.Md5)+".image", CQCodeEscapeValue(o.Url), arg)
|
||||||
}
|
}
|
||||||
case *message.GroupFlashImgElement:
|
|
||||||
return fmt.Sprintf("[CQ:image,type=flash,file=%s]", o.Filename)
|
|
||||||
case *message.FriendFlashImgElement:
|
|
||||||
return fmt.Sprintf("[CQ:image,type=flash,file=%s]", o.Filename)
|
|
||||||
case *message.ServiceElement:
|
case *message.ServiceElement:
|
||||||
if isOk := strings.Contains(o.Content, "<?xml"); isOk {
|
if isOk := strings.Contains(o.Content, "<?xml"); isOk {
|
||||||
write(`[CQ:xml,data=%s,resid=%d]`, CQCodeEscapeValue(o.Content), o.Id)
|
write(`[CQ:xml,data=%s,resid=%d]`, CQCodeEscapeValue(o.Content), o.Id)
|
||||||
@ -668,39 +672,29 @@ func (bot *CQBot) ToElement(t string, d map[string]string, isGroup bool) (m inte
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
tp := d["type"]
|
tp := d["type"]
|
||||||
if tp != "show" && tp != "flash" {
|
flash, id := false, int64(0)
|
||||||
return img, nil
|
|
||||||
}
|
|
||||||
if i, ok := img.(*LocalImageElement); ok { // 秀图,闪照什么的就直接传了吧
|
|
||||||
r := rand.Uint32()
|
|
||||||
if isGroup {
|
|
||||||
img, err = bot.UploadLocalImageAsGroup(int64(r), i)
|
|
||||||
} else {
|
|
||||||
img, err = bot.UploadLocalImageAsPrivate(int64(r), i)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
switch tp {
|
switch tp {
|
||||||
case "flash":
|
case "flash":
|
||||||
if i, ok := img.(*message.GroupImageElement); ok {
|
flash = true
|
||||||
return &message.GroupFlashPicElement{GroupImageElement: *i}, nil
|
|
||||||
}
|
|
||||||
if i, ok := img.(*message.FriendImageElement); ok {
|
|
||||||
return &message.FriendFlashPicElement{FriendImageElement: *i}, nil
|
|
||||||
}
|
|
||||||
case "show":
|
case "show":
|
||||||
id, _ := strconv.ParseInt(d["id"], 10, 64)
|
id, _ = strconv.ParseInt(d["id"], 10, 64)
|
||||||
if id < 40000 || id >= 40006 {
|
if id < 40000 || id >= 40006 {
|
||||||
id = 40000
|
id = 40000
|
||||||
}
|
}
|
||||||
if i, ok := img.(*message.GroupImageElement); ok {
|
default:
|
||||||
return &message.GroupShowPicElement{GroupImageElement: *i, EffectId: int32(id)}, nil
|
return img, err
|
||||||
}
|
}
|
||||||
return img, nil
|
switch img := img.(type) {
|
||||||
|
case *LocalImageElement:
|
||||||
|
img.Flash = flash
|
||||||
|
img.EffectID = int32(id)
|
||||||
|
case *message.GroupImageElement:
|
||||||
|
img.Flash = flash
|
||||||
|
img.EffectID = int32(id)
|
||||||
|
case *message.FriendImageElement:
|
||||||
|
img.Flash = flash
|
||||||
}
|
}
|
||||||
|
return img, err
|
||||||
case "poke":
|
case "poke":
|
||||||
t, _ := strconv.ParseInt(d["qq"], 10, 64)
|
t, _ := strconv.ParseInt(d["qq"], 10, 64)
|
||||||
return &PokeElement{Target: t}, nil
|
return &PokeElement{Target: t}, nil
|
||||||
@ -935,7 +929,6 @@ func (bot *CQBot) ToElement(t string, d map[string]string, isGroup bool) (m inte
|
|||||||
default:
|
default:
|
||||||
return nil, errors.New("unsupported cq code: " + t)
|
return nil, errors.New("unsupported cq code: " + t)
|
||||||
}
|
}
|
||||||
return nil, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// XMLEscape 将字符串c转义为XML字符串
|
// XMLEscape 将字符串c转义为XML字符串
|
||||||
@ -1189,7 +1182,7 @@ func (bot *CQBot) makeShowPic(elem message.IMessageElement, source string, brief
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
suf = gm
|
suf = gm
|
||||||
xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", gm.Md5, gm.Md5, len(i.Data), "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
|
xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", gm.Md5, gm.Md5, gm.Size, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
|
||||||
} else {
|
} else {
|
||||||
gm, err := bot.UploadLocalImageAsGroup(int64(r), i)
|
gm, err := bot.UploadLocalImageAsGroup(int64(r), i)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -1197,7 +1190,7 @@ func (bot *CQBot) makeShowPic(elem message.IMessageElement, source string, brief
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
suf = gm
|
suf = gm
|
||||||
xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", gm.Md5, gm.Md5, len(i.Data), "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
|
xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", gm.Md5, gm.Md5, gm.Size, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -542,24 +542,13 @@ func (bot *CQBot) groupDecrease(groupCode, userUin int64, operator *client.Group
|
|||||||
func (bot *CQBot) checkMedia(e []message.IMessageElement) {
|
func (bot *CQBot) checkMedia(e []message.IMessageElement) {
|
||||||
for _, elem := range e {
|
for _, elem := range e {
|
||||||
switch i := elem.(type) {
|
switch i := elem.(type) {
|
||||||
case *message.ImageElement:
|
|
||||||
filename := hex.EncodeToString(i.Md5) + ".image"
|
|
||||||
if !global.PathExists(path.Join(global.ImagePath, filename)) {
|
|
||||||
_ = ioutil.WriteFile(path.Join(global.ImagePath, filename), binary.NewWriterF(func(w *binary.Writer) {
|
|
||||||
w.Write(i.Md5)
|
|
||||||
w.WriteUInt32(uint32(i.Size))
|
|
||||||
w.WriteString(i.Filename)
|
|
||||||
w.WriteString(i.Url)
|
|
||||||
}), 0o644)
|
|
||||||
}
|
|
||||||
i.Filename = filename
|
|
||||||
case *message.GroupImageElement:
|
case *message.GroupImageElement:
|
||||||
filename := hex.EncodeToString(i.Md5) + ".image"
|
filename := hex.EncodeToString(i.Md5) + ".image"
|
||||||
if !global.PathExists(path.Join(global.ImagePath, filename)) {
|
if !global.PathExists(path.Join(global.ImagePath, filename)) {
|
||||||
_ = ioutil.WriteFile(path.Join(global.ImagePath, filename), binary.NewWriterF(func(w *binary.Writer) {
|
_ = ioutil.WriteFile(path.Join(global.ImagePath, filename), binary.NewWriterF(func(w *binary.Writer) {
|
||||||
w.Write(i.Md5)
|
w.Write(i.Md5)
|
||||||
w.WriteUInt32(uint32(i.Size))
|
w.WriteUInt32(uint32(i.Size))
|
||||||
w.WriteString(filename)
|
w.WriteString(i.ImageId)
|
||||||
w.WriteString(i.Url)
|
w.WriteString(i.Url)
|
||||||
}), 0o644)
|
}), 0o644)
|
||||||
}
|
}
|
||||||
@ -568,33 +557,11 @@ func (bot *CQBot) checkMedia(e []message.IMessageElement) {
|
|||||||
if !global.PathExists(path.Join(global.ImagePath, filename)) {
|
if !global.PathExists(path.Join(global.ImagePath, filename)) {
|
||||||
_ = ioutil.WriteFile(path.Join(global.ImagePath, filename), binary.NewWriterF(func(w *binary.Writer) {
|
_ = ioutil.WriteFile(path.Join(global.ImagePath, filename), binary.NewWriterF(func(w *binary.Writer) {
|
||||||
w.Write(i.Md5)
|
w.Write(i.Md5)
|
||||||
w.WriteUInt32(uint32(0)) // 发送时会调用url, 大概没事
|
w.WriteUInt32(uint32(i.Size))
|
||||||
w.WriteString(filename)
|
w.WriteString(i.ImageId)
|
||||||
w.WriteString(i.Url)
|
w.WriteString(i.Url)
|
||||||
}), 0o644)
|
}), 0o644)
|
||||||
}
|
}
|
||||||
case *message.GroupFlashImgElement:
|
|
||||||
filename := hex.EncodeToString(i.Md5) + ".image"
|
|
||||||
if !global.PathExists(path.Join(global.ImagePath, filename)) {
|
|
||||||
_ = ioutil.WriteFile(path.Join(global.ImagePath, filename), binary.NewWriterF(func(w *binary.Writer) {
|
|
||||||
w.Write(i.Md5)
|
|
||||||
w.WriteUInt32(uint32(i.Size))
|
|
||||||
w.WriteString(i.Filename)
|
|
||||||
w.WriteString("")
|
|
||||||
}), 0o644)
|
|
||||||
}
|
|
||||||
i.Filename = filename
|
|
||||||
case *message.FriendFlashImgElement:
|
|
||||||
filename := hex.EncodeToString(i.Md5) + ".image"
|
|
||||||
if !global.PathExists(path.Join(global.ImagePath, filename)) {
|
|
||||||
_ = ioutil.WriteFile(path.Join(global.ImagePath, filename), binary.NewWriterF(func(w *binary.Writer) {
|
|
||||||
w.Write(i.Md5)
|
|
||||||
w.WriteUInt32(uint32(i.Size))
|
|
||||||
w.WriteString(i.Filename)
|
|
||||||
w.WriteString("")
|
|
||||||
}), 0o644)
|
|
||||||
}
|
|
||||||
i.Filename = filename
|
|
||||||
case *message.VoiceElement:
|
case *message.VoiceElement:
|
||||||
i.Name = strings.ReplaceAll(i.Name, "{", "")
|
i.Name = strings.ReplaceAll(i.Name, "{", "")
|
||||||
i.Name = strings.ReplaceAll(i.Name, "}", "")
|
i.Name = strings.ReplaceAll(i.Name, "}", "")
|
||||||
|
3
go.mod
3
go.mod
@ -5,7 +5,7 @@ go 1.16
|
|||||||
require (
|
require (
|
||||||
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f
|
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f
|
||||||
github.com/Microsoft/go-winio v0.5.0
|
github.com/Microsoft/go-winio v0.5.0
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20210717143543-36f842281233
|
github.com/Mrs4s/MiraiGo v0.0.0-20210718033251-b93c02e18e06
|
||||||
github.com/dustin/go-humanize v1.0.0
|
github.com/dustin/go-humanize v1.0.0
|
||||||
github.com/gorilla/websocket v1.4.2
|
github.com/gorilla/websocket v1.4.2
|
||||||
github.com/guonaihong/gout v0.2.1
|
github.com/guonaihong/gout v0.2.1
|
||||||
@ -26,7 +26,6 @@ require (
|
|||||||
github.com/wdvxdr1123/go-silk v0.0.0-20210316130616-d47b553def60
|
github.com/wdvxdr1123/go-silk v0.0.0-20210316130616-d47b553def60
|
||||||
github.com/willf/bitset v1.2.0 // indirect
|
github.com/willf/bitset v1.2.0 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e
|
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e
|
||||||
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d // indirect
|
|
||||||
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b
|
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b
|
||||||
golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6
|
golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
|
||||||
|
9
go.sum
9
go.sum
@ -4,8 +4,8 @@ github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f/g
|
|||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU=
|
github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU=
|
||||||
github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
|
github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20210717143543-36f842281233 h1:M5o5ErEo8R6Xz5zBncPSYtVm2jsM7HBv+1zlGwTy4iM=
|
github.com/Mrs4s/MiraiGo v0.0.0-20210718033251-b93c02e18e06 h1:l94JX8GzyxRu8kR0f1VmnWl8NnNOk0frPxuGcRPzoWU=
|
||||||
github.com/Mrs4s/MiraiGo v0.0.0-20210717143543-36f842281233/go.mod h1:CPaznIPn415uQqxJgjyMHLqGLkvLS6R6+bkW3/fe08Q=
|
github.com/Mrs4s/MiraiGo v0.0.0-20210718033251-b93c02e18e06/go.mod h1:CPaznIPn415uQqxJgjyMHLqGLkvLS6R6+bkW3/fe08Q=
|
||||||
github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA=
|
github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA=
|
||||||
github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
|
github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
@ -137,8 +137,6 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
|
|||||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI=
|
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI=
|
||||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d h1:RNPAfi2nHY7C2srAV8A49jpsYr0ADedCk1wq6fTMTvs=
|
|
||||||
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
|
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
@ -171,9 +169,8 @@ golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlA
|
|||||||
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
|
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
|
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
||||||
golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6 h1:Vv0JUPWTyeqUq42B2WJ1FeIDjjvGKoA2Ss+Ts0lAVbs=
|
golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6 h1:Vv0JUPWTyeqUq42B2WJ1FeIDjjvGKoA2Ss+Ts0lAVbs=
|
||||||
golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user