shared.go
func (r Recipient) MarshalJSON() ([]byte, error) {
	toReturn := ""

	if r.isChannel() {
		toReturn = fmt.Sprintf("\"%s\"", *r.ChannelID)
	} else {
		toReturn = fmt.Sprintf("%d", *r.ChatID)
	}

	return []byte(toReturn), nil
}
func (r Recipient) MarshalJSON() ([]byte, error) {
	toReturn := ""

	if r.isChannel() {
		toReturn = fmt.Sprintf("\"%s\"", *r.ChannelID)
	} else {
		toReturn = fmt.Sprintf("%d", *r.ChatID)
	}

	return []byte(toReturn), nil
}
// MarshalJSON marshals the recipient to JSON.