diff --git a/botcmd.py b/botcmd.py index c0adac0..cef15a9 100644 --- a/botcmd.py +++ b/botcmd.py @@ -173,7 +173,9 @@ def parse_command(message, nick, irc): send_event((events.kill,)) elif c == '!join': - if args(0) is not None: + if len(message) > 1: + send_event((events.join, nick, ' '.join(message[1:]))) + else: send_event((events.join, nick)) elif c == '!leave': @@ -309,6 +311,8 @@ def parse_command(message, nick, irc): send('Usage: !%s' % (arg[0])) elif arg[0] == 'start': send('Usage: !start []') + elif arg[0] == 'join': + send('Usage: !join []') elif arg[0] == 'kick': send('Usage: !kick ') elif arg[0] == 'card': diff --git a/gameloop.py b/gameloop.py index 1f0fdcf..4f71b00 100644 --- a/gameloop.py +++ b/gameloop.py @@ -28,6 +28,7 @@ class Player: self.hand = [] self.points = 0 + self.message = None def __repr__(self): if __name__ == '__main__': @@ -44,6 +45,7 @@ class Rando: self.hand = [] self.points = 0 + self.message = None def num_need_cards(self, num_blanks): return num_blanks - len(self.hand) + self.hand.count(None) @@ -251,13 +253,24 @@ def game(send, notice, voice, devoice, get_event): change_player_nick(old, new) elif event == events.join: - nick, = args - if nick not in players: - add_player(nick) - voice(nick) - send('%s has joined' % nick) + if len(args) == 2: + nick, message = args + + if nick not in players: + add_player(nick) + voice(nick) + + players[nick].message = message + send('%s has joined %s' % (nick, message)) else: - send('%s has already joined' % nick) + nick, = args + + if nick not in players: + add_player(nick) + voice(nick) + + players[nick].message = None + send('%s has joined' % nick) elif event == events.leave: nick, = args @@ -934,7 +947,16 @@ def game(send, notice, voice, devoice, get_event): winners = [i for i in players_bots() if i.points == max_score] - send('We have a winner! %s' % ', '.join(i.nick for i in winners)) + if len(winners) == 1: + winner, = winners + + if winner.message is not None: + send('We have a winner! %s won %s' % (winner.nick, winner.message)) + else: + send('We have a winner! %s' % winner.nick) + + else: + send('We have the winners! %s' % ', '.join(i.nick for i in winners)) return no_game @@ -989,6 +1011,10 @@ if __name__ == '__main__': elif t == 'join': nick = input('nick> ') return (events.join, nick) + elif t == 'join_message': + nick = input('nick> ') + message = input('message> ') + return (events.join, nick, message) elif t == 'leave': nick = input('nick> ') return (events.leave, nick)