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 {
|
if t == 2 {
|
||||||
c.t104, _ = m[0x104]
|
c.t104, _ = m[0x104]
|
||||||
if m.Exists(0x192) { // slider, not supported yet
|
if m.Exists(0x192) {
|
||||||
return LoginResponse{
|
return LoginResponse{
|
||||||
Success: false,
|
Success: false,
|
||||||
VerifyUrl: string(m[0x192]),
|
VerifyUrl: string(m[0x192]),
|
||||||
|
@ -230,11 +230,34 @@ func (msg *SendingMessage) Count(filter func(e IMessageElement) bool) (c int) {
|
|||||||
|
|
||||||
func (msg *SendingMessage) ToFragmented() [][]IMessageElement {
|
func (msg *SendingMessage) ToFragmented() [][]IMessageElement {
|
||||||
var fragmented [][]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 {
|
for _, elem := range msg.Elements {
|
||||||
switch o := elem.(type) {
|
switch o := elem.(type) {
|
||||||
case *TextElement:
|
case *TextElement:
|
||||||
for _, text := range utils.ChunkString(o.Content, 80) {
|
idx := reg.FindAllStringIndex(o.Content, -1)
|
||||||
fragmented = append(fragmented, []IMessageElement{NewText(text)})
|
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:
|
default:
|
||||||
fragmented = append(fragmented, []IMessageElement{o})
|
fragmented = append(fragmented, []IMessageElement{o})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user