feat: Add UnMarshal
This commit is contained in:
parent
4ee5a8485c
commit
8e0346dc12
1 changed files with 63 additions and 0 deletions
|
@ -354,6 +354,42 @@ func (s Section) MarshalJSON() ([]byte, error) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON is a method for unmarshaling Section from JSON.
|
||||||
|
// origin https://github.com/bwmarrin/discordgo/pull/1616
|
||||||
|
func (s *Section) UnmarshalJSON(data []byte) error {
|
||||||
|
type sectionAlias Section
|
||||||
|
aux := struct {
|
||||||
|
sectionAlias
|
||||||
|
RawComponents []json.RawMessage `json:"components"`
|
||||||
|
RawAccessory json.RawMessage `json:"accessory"`
|
||||||
|
}{}
|
||||||
|
|
||||||
|
if err := json.Unmarshal(data, &aux); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
*s = Section(aux.sectionAlias)
|
||||||
|
|
||||||
|
s.Components = make([]MessageComponent, len(aux.RawComponents))
|
||||||
|
for i, raw := range aux.RawComponents {
|
||||||
|
component, err := MessageComponentFromJSON(raw)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to unmarshal section component %d: %w", i, err)
|
||||||
|
}
|
||||||
|
s.Components[i] = component
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(aux.RawAccessory) > 0 && string(aux.RawAccessory) != "null" {
|
||||||
|
accessory, err := MessageComponentFromJSON(aux.RawAccessory)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to unmarshal accessory: %w", err)
|
||||||
|
}
|
||||||
|
s.Accessory = accessory
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// TextDisplay is a top-level component that allows you to add markdown-formatted text to the message.
|
// TextDisplay is a top-level component that allows you to add markdown-formatted text to the message.
|
||||||
type TextDisplay struct {
|
type TextDisplay struct {
|
||||||
Content string `json:"content"`
|
Content string `json:"content"`
|
||||||
|
@ -527,6 +563,33 @@ func (c Container) MarshalJSON() ([]byte, error) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON is a method for unmarshaling Container from JSON.
|
||||||
|
// origin https://github.com/bwmarrin/discordgo/pull/1616
|
||||||
|
func (c *Container) UnmarshalJSON(data []byte) error {
|
||||||
|
type containerAlias Container
|
||||||
|
aux := struct {
|
||||||
|
containerAlias
|
||||||
|
RawComponents []json.RawMessage `json:"components"`
|
||||||
|
}{}
|
||||||
|
|
||||||
|
if err := json.Unmarshal(data, &aux); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
*c = Container(aux.containerAlias)
|
||||||
|
|
||||||
|
c.Components = make([]MessageComponent, len(aux.RawComponents))
|
||||||
|
for i, raw := range aux.RawComponents {
|
||||||
|
component, err := MessageComponentFromJSON(raw)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to parse component at index %d: %w", i, err)
|
||||||
|
}
|
||||||
|
c.Components[i] = component
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// UnfurledMediaItem represents an unfurled media item.
|
// UnfurledMediaItem represents an unfurled media item.
|
||||||
type UnfurledMediaItem struct {
|
type UnfurledMediaItem struct {
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
|
|
Loading…
Reference in a new issue