From 819803d998d38dc872fa4c0906d96b238991d57a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Tue, 7 May 2019 12:05:59 +0300 Subject: [PATCH] Add !kick --- botcmd.py | 12 ++++++++++-- gameloop.py | 21 +++++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/botcmd.py b/botcmd.py index 90ab05f..ad5e410 100644 --- a/botcmd.py +++ b/botcmd.py @@ -184,6 +184,12 @@ def parse_command(message, nick, irc): if args(0) is not None: send_event((events.players,)) + elif c == '!kick': + arg = args(1) + if arg is not None: + kickee, = arg + send_event((events.kick, nick, kickee)) + elif c == '!deck': if len(message) < 2: send('Subcommands: !deck add | remove | list') @@ -268,13 +274,15 @@ def parse_command(message, nick, irc): arg[0] = arg[0][1:] if len(arg) == 0: - send('!status !start !ready !unready !kill !join !leave !players !deck !limit !card !cards !origins') + send('!status !start !ready !unready !kill !join !leave !players !kick !deck !limit !card !cards !origins') elif len(arg) == 1: if arg[0] in ('status', 'ready', 'unready', 'kill', 'join', 'leave', 'players', 'cards', 'origins'): send('Usage: !%s' % (arg[0])) elif arg[0] == 'start': - send('Usage: !start [preset]') + send('Usage: !start []') + elif arg[0] == 'kick': + send('Usage: !kick ') elif arg[0] == 'card': send('Usage: [!card] ...') elif arg[0] == 'deck': diff --git a/gameloop.py b/gameloop.py index 25583bf..df3dae2 100644 --- a/gameloop.py +++ b/gameloop.py @@ -5,10 +5,9 @@ from collections import namedtuple import cardcast_api # TODO: rando -# TODO: !kick class events(enum.Enum): - quit, nick_change, status, start, ready, unready, kill, join, leave, players, deck_add, deck_add_random, deck_remove, deck_list, limit, card, cards, origins = range(18) + quit, nick_change, status, start, ready, unready, kill, join, leave, players, kick, deck_add, deck_add_random, deck_remove, deck_list, limit, card, cards, origins = range(19) class limit_types(enum.Enum): points, rounds = range(2) @@ -238,6 +237,20 @@ def game(send, notice, voice, devoice, get_event): elif event == events.players: list_players() + elif event == events.kick: + kicker, kickee = args + + if kicker not in players: + # Ignore those not in the game + pass + + elif kickee not in players: + send('No such player %s' % kickee) + + elif errwrapper('Could not remove player %s (%%s)' % kickee, remove_player, kickee) is not Error: + devoice(kickee) + send('%s has been remove from the game' % kickee) + elif event == events.deck_add: code, = args deck_add_handler(code) @@ -890,6 +903,10 @@ if __name__ == '__main__': return (events.leave, nick) elif t == 'players': return (events.players,) + elif t == 'kick': + kicker = input('kicker> ') + kickee = input('kickee> ') + return (events.kick, kicker, kickee) elif t == 'deck add': code = input('code> ') return (events.deck_add, code)