func (msg *ClearMessage) GetType() MessageType {
	return msg.Type
}
GetType implements the Message interface, and returns this message's type
package twitch
import (
	"bufio"
	"crypto/tls"
	"errors"
	"fmt"
	"io"
	"net"
	"net/textproto"
	"strings"
	"sync"
	"time"
)
const (
	ircTwitchTLS = "irc.chat.twitch.tv:6697"
	ircTwitch    = "irc.chat.twitch.tv:6667"
	pingSignature = "go-twitch-irc"
	pingMessage   = "PING :" + pingSignature
	TagsCapability = "twitch.tv/tags"
	CommandsCapability = "twitch.tv/commands"
	MembershipCapability = "twitch.tv/membership"
)
var (
	ErrClientDisconnected = errors.New("client called Disconnect()")
	ErrLoginAuthenticationFailed = errors.New("login authentication failed")
	ErrConnectionIsNotOpen = errors.New("connection is not open")
	WriteBufferSize = 512
	ReadBufferSize = 64
	DefaultCapabilities = []string{TagsCapability, CommandsCapability, MembershipCapability}
)
var (
	errReconnect = errors.New("reconnect")
)
type User struct {
	ID          string
	Name        string
	DisplayName string
	Color       string
	Badges      map[string]int
}
type Message interface {
	GetType() MessageType
}
type RawMessage struct {
	Raw     string
	Type    MessageType
	RawType string
	Tags    map[string]string
	Message string
}
func (msg *RawMessage) GetType() MessageType {
	return msg.Type
}
type WhisperMessage struct {
	User User
	Raw       string
	Type      MessageType
	RawType   string
	Tags      map[string]string
	Message   string
	Target    string
	MessageID string
	ThreadID  string
	Emotes    []*Emote
	Action    bool
}
func (msg *WhisperMessage) GetType() MessageType {
	return msg.Type
}
type PrivateMessage struct {
	User User
	Raw     string
	Type    MessageType
	RawType string
	Tags    map[string]string
	Message string
	Channel string
	RoomID  string
	ID      string
	Time    time.Time
	Emotes  []*Emote
	Bits    int
	Action  bool
}
func (msg *PrivateMessage) GetType() MessageType {
	return msg.Type
}
type ClearChatMessage struct {
	Raw            string
	Type           MessageType
	RawType        string
	Tags           map[string]string
	Message        string
	Channel        string
	RoomID         string
	Time           time.Time
	BanDuration    int
	TargetUserID   string
	TargetUsername string
}
func (msg *ClearChatMessage) GetType() MessageType {
	return msg.Type
}
type ClearMessage struct {
	Raw         string
	Type        MessageType
	RawType     string
	Tags        map[string]string
	Message     string
	Channel     string
	Login       string
	TargetMsgID string
}