func (m *MessageGetGroupHolders) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
GetData - gets MessageData.
package main
import (
	"errors"
)
type BaseMessage interface {
	GetData() *MessageData
}
type MessageData struct {
	id    string
	hasID bool
}
func (m *MessageData) SetID(id string) {
	m.hasID = true
	m.id = id
}
func (m *MessageData) GetID() (string, bool) {
	if m.hasID {
		return m.id, true
	}
	return "", false
}
func (m *MessageData) ClearID() {
	m.hasID = false
	m.id = ""
}
func (m *MessageData) CopyID(m2 *MessageData) {
	m2id, ok := m2.GetID()
	if ok {
		m.hasID = true
		m.id = m2id
	} else {
		m.hasID = false
		m.id = ""
	}
}
type MessageQuit struct {
	md      *MessageData
	Message string
}
func (m *MessageQuit) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageFatal struct {
	md      *MessageData
	Message string
}
func (m *MessageFatal) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageNote struct {
	md      *MessageData
	Message string
}
func (m *MessageNote) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageOk struct {
	md      *MessageData
	Message string
}
func (m *MessageOk) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageFail struct {
	md      *MessageData
	Message string
}
func (m *MessageFail) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageRegister struct {
	md   *MessageData
	Name string
	Pass string
}
func (m *MessageRegister) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageLogin struct {
	md   *MessageData
	Name string
	Pass string
}
func (m *MessageLogin) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageNewChannel struct {
	md    *MessageData
	Name  string
	Topic string
}
func (m *MessageNewChannel) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageDeleteChannel struct {
	md   *MessageData
	Name string
}
func (m *MessageDeleteChannel) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageChannelTopic struct {
	md    *MessageData
	Name  string
	Topic string
}
func (m *MessageChannelTopic) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageSubscribe struct {
	md   *MessageData
	Name string
	Subbed bool
}
func (m *MessageSubscribe) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessagePostMsg struct {
	md      *MessageData
	Content string
	Channel string
	MsgObj  *ChatMessage
}
func (m *MessagePostMsg) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageGetMsgs struct {
	md        *MessageData
	ChannelID int
	MessageID int
	Amount    int
}
func (m *MessageGetMsgs) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageGetMsgsResult struct {
	md       *MessageData
	Messages []*ChatMessage
}
func (m *MessageGetMsgsResult) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageListChannels struct {
	md          *MessageData
	Channels    []*Channel
	HasChannels bool
}
func (m *MessageListChannels) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageListUsers struct {
	md       *MessageData
	Users    []*UserStatus  
	HasUsers bool
}
func (m *MessageListUsers) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageUserQuit struct {
	md       *MessageData
	Username string
}
func (m *MessageUserQuit) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageKick struct {
	md       *MessageData
	ID       int
	Username string
	Ban      bool
}
func (m *MessageKick) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageNewGroup struct {
	md   *MessageData
	Name string
}
func (m *MessageNewGroup) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageDeleteGroup struct {
	md   *MessageData
	Name string
}
func (m *MessageDeleteGroup) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageSetFlag struct {
	md    *MessageData
	Group string
	Name  string
	Flag  map[string]interface{}
}
func (m *MessageSetFlag) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageDeleteFlag struct {
	md    *MessageData
	Group string
	Name  string
}
func (m *MessageDeleteFlag) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageTyping struct {
	md          *MessageData
	Channel     string
	Username    string
	Typing      bool
	HasUsername bool
}
func (m *MessageTyping) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageNewGroupHolder struct {
	md      *MessageData
	Group   string
	User    string
	Channel string
}
func (m *MessageNewGroupHolder) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageDeleteGroupHolder struct {
	md *MessageData
	ID int
}
func (m *MessageDeleteGroupHolder) GetData() *MessageData {
	if m.md == nil {
		m.md = &MessageData{}
	}
	return m.md
}
type MessageGetGroupHolders struct {
	md           *MessageData
	GroupHolders []*GroupHolder
}