diff --git a/draftbot/draftbot.go b/draftbot/draftbot.go index 8223ffa..19dca0d 100644 --- a/draftbot/draftbot.go +++ b/draftbot/draftbot.go @@ -70,13 +70,53 @@ func (d *draftBot) handleMessage(roomid string, msg room.Message) { if !ok { // Room does not have a currently running session, ignore unless it's the owner asking for specific stuff //TODO + + return } // Check if player is in the draft player, ok := session.Players[msg.From] if !ok { // Player not in draft, are they asking to join? - //TODO + switch msg.Type { + // Player is asking to join + case "join": + // Players can only join if session didn't start yet + if session.started { + d.sendMessage(roomid, room.Message{ + To: msg.From, + Type: "session-already-started", + Message: "You can't join a running session", + }) + return + } + + // Check if there are still open slots + if len(session.Players)+1 > len(session.Pod.Players) { + d.sendMessage(roomid, room.Message{ + To: msg.From, + Type: "session-full", + Message: "There aren't any spots left", + }) + return + } + + // Add player to the list + session.Players[msg.From] = nil + + // Player wants something else + default: + // Tell them can either join or GTFO + d.sendMessage(roomid, room.Message{ + To: msg.From, + Type: "not-joined-err", + Data: "not joined", + Message: "You must join the session to do anything", + }) + return + } + + return } switch msg.Type {