Add !kick

This commit is contained in:
Juhani Krekelä 2019-05-07 12:05:59 +03:00
parent 81f618cabc
commit 819803d998
2 changed files with 29 additions and 4 deletions

View File

@ -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 [<preset>]')
elif arg[0] == 'kick':
send('Usage: !kick <nick>')
elif arg[0] == 'card':
send('Usage: [!card] <number> ...')
elif arg[0] == 'deck':

View File

@ -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)