Merge pull request #1184 from QuantumNous/refactor/message
fix: message 转 any 后,ImageUrl判断 panic
This commit is contained in:
@@ -132,21 +132,50 @@ type MediaContent struct {
|
||||
|
||||
func (m *MediaContent) GetImageMedia() *MessageImageUrl {
|
||||
if m.ImageUrl != nil {
|
||||
return m.ImageUrl.(*MessageImageUrl)
|
||||
if _, ok := m.ImageUrl.(*MessageImageUrl); ok {
|
||||
return m.ImageUrl.(*MessageImageUrl)
|
||||
}
|
||||
if itemMap, ok := m.ImageUrl.(map[string]any); ok {
|
||||
out := &MessageImageUrl{
|
||||
Url: common.Interface2String(itemMap["url"]),
|
||||
Detail: common.Interface2String(itemMap["detail"]),
|
||||
MimeType: common.Interface2String(itemMap["mime_type"]),
|
||||
}
|
||||
return out
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *MediaContent) GetInputAudio() *MessageInputAudio {
|
||||
if m.InputAudio != nil {
|
||||
return m.InputAudio.(*MessageInputAudio)
|
||||
if _, ok := m.InputAudio.(*MessageInputAudio); ok {
|
||||
return m.InputAudio.(*MessageInputAudio)
|
||||
}
|
||||
if itemMap, ok := m.InputAudio.(map[string]any); ok {
|
||||
out := &MessageInputAudio{
|
||||
Data: common.Interface2String(itemMap["data"]),
|
||||
Format: common.Interface2String(itemMap["format"]),
|
||||
}
|
||||
return out
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *MediaContent) GetFile() *MessageFile {
|
||||
if m.File != nil {
|
||||
return m.File.(*MessageFile)
|
||||
if _, ok := m.File.(*MessageFile); ok {
|
||||
return m.File.(*MessageFile)
|
||||
}
|
||||
if itemMap, ok := m.File.(map[string]any); ok {
|
||||
out := &MessageFile{
|
||||
FileName: common.Interface2String(itemMap["file_name"]),
|
||||
FileData: common.Interface2String(itemMap["file_data"]),
|
||||
FileId: common.Interface2String(itemMap["file_id"]),
|
||||
}
|
||||
return out
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -286,6 +315,12 @@ func (m *Message) ParseContent() []MediaContent {
|
||||
}
|
||||
|
||||
for _, contentItemAny := range arrayContent {
|
||||
mediaItem, ok := contentItemAny.(MediaContent)
|
||||
if ok {
|
||||
contentList = append(contentList, mediaItem)
|
||||
continue
|
||||
}
|
||||
|
||||
contentItem, ok := contentItemAny.(map[string]any)
|
||||
if !ok {
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user