mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-20 10:10:08 -08:00
Implement mode [+-]i.
This commit is contained in:
parent
8f0bd1b07a
commit
99364e8b5f
7 changed files with 94 additions and 29 deletions
|
|
@ -1,5 +1,9 @@
|
|||
package irc
|
||||
|
||||
type Message interface {
|
||||
Handle(s *Server, c *Client)
|
||||
}
|
||||
|
||||
func (m *NickMessage) Handle(s *Server, c *Client) {
|
||||
if s.nicks[m.nickname] != nil {
|
||||
c.send <- ErrNickNameInUse(m.nickname)
|
||||
|
|
@ -24,6 +28,7 @@ func (m *UserMessage) Handle(s *Server, c *Client) {
|
|||
|
||||
func (m *QuitMessage) Handle(s *Server, c *Client) {
|
||||
c.send <- MessageError()
|
||||
c.conn.Close()
|
||||
delete(s.nicks, c.nick)
|
||||
}
|
||||
|
||||
|
|
@ -35,6 +40,21 @@ func (m *PingMessage) Handle(s *Server, c *Client) {
|
|||
c.send <- MessagePong()
|
||||
}
|
||||
|
||||
func (m *ModeMessage) Handle(s *Server, c *Client) {
|
||||
if m.nickname != c.nick {
|
||||
c.send <- ErrUsersDontMatch(c.Nick())
|
||||
return
|
||||
}
|
||||
for _, mode := range m.modes {
|
||||
if mode == "+i" {
|
||||
c.invisible = true
|
||||
} else if mode == "-i" {
|
||||
c.invisible = false
|
||||
}
|
||||
}
|
||||
c.send <- ReplyUModeIs(c)
|
||||
}
|
||||
|
||||
func tryRegister(s *Server, c *Client) {
|
||||
if (!c.registered && c.nick != "" && c.username != "") {
|
||||
c.registered = true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue