Skip to content

Commit c70e33e

Browse files
committed
feat: ocr,获取at次数,群打卡,设置群头像
1 parent e7ea3f0 commit c70e33e

File tree

5 files changed

+81
-46
lines changed

5 files changed

+81
-46
lines changed

coolq/api.go

+54-43
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package coolq
22

33
import (
4+
"bytes"
45
"crypto/md5"
56
"encoding/hex"
67
"encoding/json"
@@ -789,16 +790,16 @@ func (bot *CQBot) CQSetGroupLeave(groupID int64) global.MSG {
789790
//
790791
// https://docs.go-cqhttp.org/api/#%E8%8E%B7%E5%8F%96%E7%BE%A4-%E5%85%A8%E4%BD%93%E6%88%90%E5%91%98-%E5%89%A9%E4%BD%99%E6%AC%A1%E6%95%B0
791792
// @route(get_group_at_all_remain)
792-
//func (bot *CQBot) CQGetAtAllRemain(groupID int64) global.MSG {
793-
// if g := bot.Client.FindGroup(groupID); g != nil {
794-
// i, err := bot.Client.GetAtAllRemain(groupID)
795-
// if err != nil {
796-
// return Failed(100, "GROUP_REMAIN_API_ERROR", err.Error())
797-
// }
798-
// return OK(i)
799-
// }
800-
// return Failed(100, "GROUP_NOT_FOUND", "群聊不存在")
801-
//}
793+
func (bot *CQBot) CQGetAtAllRemain(groupID int64) global.MSG {
794+
if g := bot.Client.GetCachedGroupInfo(uint32(groupID)); g != nil {
795+
i, err := bot.Client.GetAtAllRemain(bot.Client.Uin, uint32(groupID))
796+
if err != nil {
797+
return Failed(100, "GROUP_REMAIN_API_ERROR", err.Error())
798+
}
799+
return OK(i)
800+
}
801+
return Failed(100, "GROUP_NOT_FOUND", "群聊不存在")
802+
}
802803

803804
// CQProcessFriendRequest 处理加好友请求
804805
//
@@ -1379,40 +1380,47 @@ func (bot *CQBot) CQCanSendRecord() global.MSG {
13791380
// https://docs.go-cqhttp.org/api/#%E5%9B%BE%E7%89%87-ocr
13801381
// @route(ocr_image,".ocr_image")
13811382
// @rename(image_id->image)
1382-
//func (bot *CQBot) CQOcrImage(imageID string) global.MSG {
1383-
// // TODO: fix this
1384-
// var elem msg.Element
1385-
// elem.Type = "image"
1386-
// elem.Data = []msg.Pair{{K: "file", V: imageID}}
1387-
// img, err := bot.makeImageOrVideoElem(elem, false, message.SourceGroup)
1388-
// if err != nil {
1389-
// log.Warnf("load image error: %v", err)
1390-
// return Failed(100, "LOAD_FILE_ERROR", err.Error())
1391-
// }
1392-
// rsp, err := bot.Client.ImageOcr(img)
1393-
// if err != nil {
1394-
// log.Warnf("ocr image error: %v", err)
1395-
// return Failed(100, "OCR_API_ERROR", err.Error())
1396-
// }
1397-
// return OK(rsp)
1398-
//}
1383+
func (bot *CQBot) CQOcrImage(imageID string) global.MSG {
1384+
// TODO: fix this
1385+
var elem msg.Element
1386+
elem.Type = "image"
1387+
elem.Data = []msg.Pair{{K: "file", V: imageID}}
1388+
img, err := bot.makeImageOrVideoElem(elem, false, message.SourceGroup)
1389+
if err != nil {
1390+
log.Warnf("load image error: %v", err)
1391+
return Failed(100, "LOAD_FILE_ERROR", err.Error())
1392+
}
1393+
image, ok := img.(*msg.LocalImage)
1394+
if !ok {
1395+
return Failed(100, "IMAGE_ERROR", "图片数据错误")
1396+
}
1397+
rsp, err := bot.Client.ImageOcr(image.URL)
1398+
if err != nil {
1399+
log.Warnf("ocr image error: %v", err)
1400+
return Failed(100, "OCR_API_ERROR", err.Error())
1401+
}
1402+
return OK(rsp)
1403+
}
13991404

14001405
// CQSetGroupPortrait 扩展API-设置群头像
14011406
//
14021407
// https://docs.go-cqhttp.org/api/#%E8%AE%BE%E7%BD%AE%E7%BE%A4%E5%A4%B4%E5%83%8F
14031408
// @route(set_group_portrait)
1404-
//func (bot *CQBot) CQSetGroupPortrait(groupID int64, file, cache string) global.MSG {
1405-
// if g := bot.Client.FindGroup(groupID); g != nil {
1406-
// img, err := global.FindFile(file, cache, global.ImagePath)
1407-
// if err != nil {
1408-
// log.Warnf("set group portrait error: %v", err)
1409-
// return Failed(100, "LOAD_FILE_ERROR", err.Error())
1410-
// }
1411-
// g.UpdateGroupHeadPortrait(img)
1412-
// return OK(nil)
1413-
// }
1414-
// return Failed(100, "GROUP_NOT_FOUND", "群聊不存在")
1415-
//}
1409+
func (bot *CQBot) CQSetGroupPortrait(groupID int64, file, cache string) global.MSG {
1410+
if g := bot.Client.GetCachedGroupInfo(uint32(groupID)); g != nil {
1411+
img, err := global.FindFile(file, cache, global.ImagePath)
1412+
if err != nil {
1413+
log.Warnf("set group portrait error: %v", err)
1414+
return Failed(100, "LOAD_FILE_ERROR", err.Error())
1415+
}
1416+
if bot.Client.SetGroupAvatar(g.GroupUin, bytes.NewReader(img)) == nil {
1417+
return OK(nil)
1418+
}
1419+
Failed(100, "PERMISSION_DENIED", "机器人权限不足")
1420+
1421+
}
1422+
return Failed(100, "GROUP_NOT_FOUND", "群聊不存在")
1423+
}
14161424

14171425
// CQSetGroupAnonymousBan 群组匿名用户禁言
14181426
//
@@ -1585,10 +1593,13 @@ func (bot *CQBot) CQGetVersionInfo() global.MSG {
15851593
//
15861594
// https://club.vip.qq.com/onlinestatus/set
15871595
// @route(send_group_sign)
1588-
//func (bot *CQBot) CQSendGroupSign(groupID int64) global.MSG {
1589-
// bot.Client.SendGroupSign(groupID)
1590-
// return OK(nil)
1591-
//}
1596+
func (bot *CQBot) CQSendGroupSign(groupID int64) global.MSG {
1597+
_, err := bot.Client.SendGroupSign(uint32(groupID))
1598+
if err == nil {
1599+
return OK(nil)
1600+
}
1601+
return Failed(100, "SEND_GROUP_SIGN_ERROR", err.Error())
1602+
}
15921603

15931604
// CQSetModelShow 设置在线机型
15941605
//

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.20
44

55
require (
66
github.com/FloatTech/sqlite v1.6.3
7-
github.com/LagrangeDev/LagrangeGo v0.1.2-0.20241114153145-593cc9695c20
7+
github.com/LagrangeDev/LagrangeGo v0.1.2-0.20241123020035-566cbd22ddb7
88
github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a
99
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
1010
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ github.com/FloatTech/sqlite v1.6.3 h1:MQkqBNlkPuCoKQQgoNLuTL/2Ci3tBTFAnVYBdD0Wy4
22
github.com/FloatTech/sqlite v1.6.3/go.mod h1:zFbHzRfB+CJ+VidfjuVbrcin3DAz283F7hF1hIeHzpY=
33
github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 h1:g4pTnDJUW4VbJ9NvoRfUvdjDrHz/6QhfN/LoIIpICbo=
44
github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
5-
github.com/LagrangeDev/LagrangeGo v0.1.2-0.20241114153145-593cc9695c20 h1:3vE7lW4qieoxzyIM0FZG100uZDt3GAFdsfYFR9lsb2g=
6-
github.com/LagrangeDev/LagrangeGo v0.1.2-0.20241114153145-593cc9695c20/go.mod h1:m7ydyvA8DKOg5c6iTFDfNtfIK9uhqXVJKRXl4mlGkTA=
5+
github.com/LagrangeDev/LagrangeGo v0.1.2-0.20241123020035-566cbd22ddb7 h1:x/2DdNx7l6A2Neu/juc7hkk6fZ4eGR6z/D0Hz76AM1w=
6+
github.com/LagrangeDev/LagrangeGo v0.1.2-0.20241123020035-566cbd22ddb7/go.mod h1:m7ydyvA8DKOg5c6iTFDfNtfIK9uhqXVJKRXl4mlGkTA=
77
github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a h1:aU1703IHxupjzipvhu16qYKLMR03e+8WuNR+JMsKfGU=
88
github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a/go.mod h1:OZqLNXdYJHmx7aqq/T6wAdFEdoGm5nmIfC4kU7M8P8o=
99
github.com/RomiChan/protobuf v0.1.1-0.20230204044148-2ed269a2e54d h1:/Xuj3fIiMY2ls1TwvPKmaqQrtJsPY+c9s+0lOScVHd8=

modules/api/api.go

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/onebot/supported.go

+10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)