mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
fix issue of url split.
This commit is contained in:
parent
d3ded1965c
commit
c519c532d0
@ -51,7 +51,7 @@ func decodeLoginResponse(c *QQClient, _ uint16, payload []byte) (interface{}, er
|
||||
}
|
||||
if t == 2 {
|
||||
c.t104, _ = m[0x104]
|
||||
if m.Exists(0x192) { // slider, not supported yet
|
||||
if m.Exists(0x192) {
|
||||
return LoginResponse{
|
||||
Success: false,
|
||||
VerifyUrl: string(m[0x192]),
|
||||
|
@ -230,11 +230,34 @@ func (msg *SendingMessage) Count(filter func(e IMessageElement) bool) (c int) {
|
||||
|
||||
func (msg *SendingMessage) ToFragmented() [][]IMessageElement {
|
||||
var fragmented [][]IMessageElement
|
||||
reg := regexp.MustCompile(`https?://(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)`)
|
||||
for _, elem := range msg.Elements {
|
||||
switch o := elem.(type) {
|
||||
case *TextElement:
|
||||
for _, text := range utils.ChunkString(o.Content, 80) {
|
||||
fragmented = append(fragmented, []IMessageElement{NewText(text)})
|
||||
idx := reg.FindAllStringIndex(o.Content, -1)
|
||||
var preChunked []string
|
||||
if len(idx) == 0 {
|
||||
preChunked = append(preChunked, o.Content)
|
||||
} else {
|
||||
last := idx[0][0]
|
||||
preChunked = append(preChunked, o.Content[:idx[0][0]])
|
||||
for i := 0; i < len(idx); i++ {
|
||||
if len(idx[i]) != 2 {
|
||||
continue
|
||||
}
|
||||
preChunked = append(preChunked, o.Content[last:idx[i][1]])
|
||||
last = idx[i][1]
|
||||
}
|
||||
preChunked = append(preChunked, o.Content[last:])
|
||||
}
|
||||
for _, content := range preChunked {
|
||||
if strings.HasPrefix(content, "http") {
|
||||
fragmented = append(fragmented, []IMessageElement{NewText(content)})
|
||||
continue
|
||||
}
|
||||
for _, text := range utils.ChunkString(content, 80) {
|
||||
fragmented = append(fragmented, []IMessageElement{NewText(text)})
|
||||
}
|
||||
}
|
||||
default:
|
||||
fragmented = append(fragmented, []IMessageElement{o})
|
||||
|
Loading…
x
Reference in New Issue
Block a user