package qq_message

import (
	"encoding/json"
	"fmt"
	"regexp"
)

// LightappMessage 小程序卡片消息
type LightappMessage struct {
	Type string              `json:"type"`
	Data LightappMessageData `json:"data"`
}

type LightappMessageData struct {
	Content string `json:"content"` // 小程序卡片内容
}

func init() {
	RegisterMessageType(TypeLightapp, func() QQMessage {
		return NewLightappMessage()
	})
}

func NewLightappMessage() *LightappMessage {
	return &LightappMessage{Type: TypeLightapp}
}

func (msg *LightappMessage) GetMessageType() string {
	return TypeLightapp
}

func (msg *LightappMessage) SetData(data json.RawMessage) error {
	return json.Unmarshal(data, &msg.Data)
}

func (msg *LightappMessage) ToCQString() string {
	return fmt.Sprintf("[CQ:lightapp,content=%s]", msg.Data.Content)
}

func (msg *LightappMessage) ParseMessage(data string) error {
	re := regexp.MustCompile(`\[CQ:lightapp,content=(.*?)\]`)
	matches := re.FindStringSubmatch(data)
	if len(matches) < 2 {
		return fmt.Errorf("小程序卡片消息格式不正确")
	}
	msg.Data.Content = matches[1]
	return nil
}
