def get_all_responses(self, message): plays = extract_remainder_after_fragments(self.fragments, message.content) game_names = plays.split(self.multi_game_delimiter) games = [ lookup_game_by_name_or_alias(game_name) for game_name in game_names if lookup_game_by_name_or_alias(game_name) ] responses = [] if games: games = [game for game in games if game] responses += self.get_all_responses_with_games(message, games) else: responses += self.get_all_responses_without_game(message) return responses
def get_all_responses(self, message): mention, remainder = split_by_first_mention(message) found_keyword, remainder = self.split_string_by_keywords(remainder) split_remainder = remainder.split(' ') if len(split_remainder) == 1: return [ "Incorrect command: Try 'add game <game name>' or 'add <property> <game name> <value>" ] if message_pertains_to_all_games(split_remainder[0]): new_game = ' '.join(split_remainder[1:]) if lookup_known_game_by_name_or_alias(new_game): return [ "That game already exists you absolute degenerate. Don't trigger me." ] else: new_game_dict = get_default_game_dict_representation(new_game) known_games_dict = read_games_dict() known_games_dict.update(new_game_dict) write_games_dict(known_games_dict) return [ "Congratulations - %s has been added to the known games list! Fantastic work there comrade, give yourself a pat on the back!" % new_game ] else: property, remainder = split_remainder[0], ' '.join( split_remainder[1:]) if get_game_name_or_alias_from_message(remainder): game_name = get_game_name_or_alias_from_message( remainder).lower() else: return ["Invalid game name/ alias"] game = lookup_game_by_name_or_alias(game_name) value = remainder[len(game_name) + 1:] known_games_dict = read_games_dict() if property.lower() == 'alias': known_games_dict[game.name]['aliases'] += [value] elif property.lower() in ['min_players', 'max_players']: known_games_dict[game.name][property] = int(value) else: return ["Invalid property type"] write_games_dict(known_games_dict) return [ "%s has been added to %s in %s" % (value, property, game.name) ]
def get_all_responses(self, message): mention, remainder = split_by_first_mention(message) found_keyword, remainder = self.split_string_by_keywords(remainder) if message_pertains_to_all_games(remainder): return ['\n'.join([game.name for game in get_known_games()])] else: attribute, game_name = remainder.split(' ')[:2] game = lookup_game_by_name_or_alias(game_name) attribute_display = { 'aliases': lambda z: ', '.join([alias for alias in z]) } display_function = attribute_display.get(attribute, lambda x: str(x)) return [ "%s: %s" % (attribute, display_function(getattr(game, attribute))) ]
def get_game_name_or_alias_from_message(message): if lookup_game_by_name_or_alias(message): game = lookup_game_by_name_or_alias(message) for potential_name in [game.name] + game.aliases: if message.lower().startswith(potential_name.lower()): return potential_name
def assertNumPlayersReadyForGame(self, game, num): self.assertEqual( num, len(lookup_game_by_name_or_alias(game).get_ready_players()))
def assertNumPlayersForGame(self, game, num): self.assertEqual( num, len(lookup_game_by_name_or_alias(game).get_available_players()))