mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-20 10:10:08 -08:00
rudimentary (broken) invite support
This commit is contained in:
parent
55f7c89468
commit
d7d6263e35
5 changed files with 244 additions and 46 deletions
|
|
@ -15,6 +15,19 @@ type Message interface {
|
|||
var (
|
||||
ErrNotEnoughArgs = errors.New("not enough arguments")
|
||||
ErrUModeUnknownFlag = errors.New("unknown umode flag")
|
||||
parseCommandFuncs = map[string]ParseFunc{
|
||||
"INVITE": NewInviteMessage,
|
||||
"JOIN": NewJoinMessage,
|
||||
"MODE": NewModeMessage,
|
||||
"NICK": NewNickMessage,
|
||||
"PART": NewPartMessage,
|
||||
"PING": NewPingMessage,
|
||||
"PONG": NewPongMessage,
|
||||
"PRIVMSG": NewPrivMsgMessage,
|
||||
"QUIT": NewQuitMessage,
|
||||
"TOPIC": NewTopicMessage,
|
||||
"USER": NewUserMessage,
|
||||
}
|
||||
)
|
||||
|
||||
// unknown
|
||||
|
|
@ -319,3 +332,36 @@ func (m *TopicMessage) Handle(s *Server, c *Client) {
|
|||
channel.ChangeTopic(c, m.topic)
|
||||
}
|
||||
}
|
||||
|
||||
// INVITE <nickname> <channel>
|
||||
|
||||
type InviteMessage struct {
|
||||
nickname string
|
||||
channel string
|
||||
}
|
||||
|
||||
func NewInviteMessage(args []string) (Message, error) {
|
||||
if len(args) < 2 {
|
||||
return nil, ErrNotEnoughArgs
|
||||
}
|
||||
return &InviteMessage{
|
||||
nickname: args[0],
|
||||
channel: args[1],
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *InviteMessage) Handle(s *Server, c *Client) {
|
||||
channel := s.channels[m.channel]
|
||||
if channel == nil {
|
||||
c.send <- ErrNoSuchNick(s, m.channel)
|
||||
return
|
||||
}
|
||||
|
||||
invitee := s.nicks[m.nickname]
|
||||
if invitee == nil {
|
||||
c.send <- ErrNoSuchNick(s, m.nickname)
|
||||
return
|
||||
}
|
||||
|
||||
channel.Invite(c, invitee)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue