package main import ( "regexp" ) const ( VERSION = "1.0.0" APP_DESCRIPTION = "nmdc-ircfrontend v" + VERSION BLESSED_CHANNEL = "#chat" // must be lowercase BLESSED_CHANNEL_MODE = "n" // means that you have to be in the channel to chat, but that's it NICKS_PER_PROTOMSG = 128 //The capacity sets the max number of nicks to send per message ) var ( nickRegexp = regexp.MustCompile(`^[a-zA-Z\[\]_^{|}][a-zA-Z0-9\[\]_^{|}]*$`) channelRegexp = regexp.MustCompile(`^#[a-zA-Z0-9_\-]+$`) ) type eventType int const ( connected eventType = iota disconnected command ) type Event struct { client *Client input string event eventType } type Channel struct { clientMap map[string]*Client modeMap map[string]*ClientMode } type ClientMode struct { operator bool //Channel operator } func (m *ClientMode) Prefix() string { if m.operator { return "@" } else { return "" } } func (m *ClientMode) String() string { if m.operator { return "o" } else { return "" } } type signalCode int const ( signalStop signalCode = iota ) type replyCode int const ( rplWelcome replyCode = iota rplJoin rplPart rplTopic rplNoTopic rplNames rplEndOfNames rplNickChange rplKill rplMsg rplList rplListEnd rplOper rplChannelModeIs rplKick rplInfo rplVersion rplMOTDStart rplMOTD rplEndOfMOTD rplPong errMoreArgs errNoNick errInvalidNick errNickInUse errAlreadyReg errNoSuchNick errUnknownCommand errNotReg errPassword errNoPriv errCannotSend )