def spymaster_hint(bot, trigger): if not check_phase_play(bot, trigger): return game = get_game(bot) player_team = game.get_player_team(str(trigger.nick)) if player_team is not game.moving_team: return if str(trigger.nick) != game.spymasters[player_team]: return word = trigger.groups(17)[2] number = trigger.groups(17)[3] try: n = int(number) except ValueError: if number != 'unlimited': say( bot, trigger, 'The second argument must either be a number ' 'in the 0-9 range or "unlimited".') return if n < 0 or n > 9: say( bot, trigger, 'The second argument must either be a number ' 'in the 0-9 range or * for unlimited.') return team_name = get_decorated_team_name(player_team) hint = '{word} {number}'.format(word=word.upper(), number=number) decorated_hint = irc_format.bold(irc_format.underline(hint)) response = '{team_name}\'s hint is {hint}'.format(team_name=team_name, hint=decorated_hint) say(bot, trigger, response)
def print_team(bot: sopelbot.Sopel, trigger, team: Team): game = get_game(bot) team_name = get_decorated_team_name(team) team_members = list(game.get_team_members(team)) if game.spymasters[team] is not None: team_spymaster = str(game.spymasters[team]) team_members.remove(team_spymaster) team_members.insert(0, irc_format.underline(team_spymaster)) if bot.personality >= 5 and random.randint(1, 3) == 1: team_members += str(bot.nick) say(bot, trigger, '{team_name}:'.format(team_name=team_name)) say(bot, trigger, ', '.join(team_members))
def f_etymology(bot, trigger): """Look up the etymology of a word""" if trigger.group(2): phrase = re.sub('[^a-zA-Z ]', '', trigger.group(2)).strip().lower() results = get_definitions(phrase) if results and len(results): definitions = ". ".join([ "{} {}".format(underline(pair[0]), pair[1]) for pair in results ]) bot.say(definitions, trigger.sender, len(definitions) * 2) else: bot.say('Can\'t find the etymology for "{}".'.format(phrase), trigger.sender) return sopel.module.NOLIMIT
def f_etymology(bot, trigger): """Look up the etymology of a word""" phrase = re.sub('[^a-zA-Z ]', '', trigger.group(2)).strip().lower() req = requests.get(WORD_URI + phrase) if req.ok: results = get_definitions(phrase, req.text) if len(results): definitions = ". ".join( ["%s %s" % (underline(pair[0]), pair[1]) for pair in results]) bot.say(definitions, trigger.sender, len(definitions) * 2) else: bot.say('Can\'t find the etymology for "%s".' % phrase, trigger.sender) else: bot.say('Can\'t find the etymology for "%s".' % phrase, trigger.sender) return NOLIMIT
def spymaster_hint(bot, trigger): if not check_phase_play(bot, trigger): return game = get_game(bot) player_team = game.get_player_team(str(trigger.nick)) if player_team is not game.moving_team: return if str(trigger.nick) != game.spymasters[player_team]: return args = get_arguments(trigger) if len(args) < 2: say(bot, trigger, 'This command requires at least two arguments.') return words = ' '.join(args[:-1]) number = args[-1] error_msg = 'The second argument must either be a number ' \ 'in the 0-9 range or "unlimited"/"*".' try: n = int(number) if n < 0 or n > 9: say(bot, trigger, error_msg) return if n == 0: number = italics('ZERO') except ValueError: if number.lower == 'unlimited' or number.startswith('*'): number = italics('UNLIMITED') elif number.lower == 'zero': number = italics('ZERO') else: say(bot, trigger, error_msg) return team_name = get_decorated_team_name(player_team) hint = '{words} {number}'.format(words=words.upper(), number=number) decorated_hint = irc_format.bold(irc_format.underline(hint)) response = '{team_name}\'s hint is {hint}'.format(team_name=team_name, hint=decorated_hint) if bot.personality >= 5: if number >= 5: response += random.choice([" (wow!)", " (brave!)", ' (!)']) say(bot, trigger, response)
def print_counts(bot, trigger): """Print amount of cards of each type""" if check_phase_play(bot, trigger): game = get_game(bot) counts = game.board.count_all_cards() say(bot, trigger, irc_format.underline("CURRENT SCORE")) say( bot, trigger, "Team {team}: {flp} cards revealed, " "{rem} cards remaining.".format(team=Team.red.name, flp=counts.revealed_red, rem=counts.hidden_red)) say( bot, trigger, "Team {team}: {flp} cards revealed, " "{rem} cards remaining.".format(team=Team.blue.name, flp=counts.revealed_blue, rem=counts.hidden_blue)) say( bot, trigger, "Bystanders remaining: {bys}." " Assassins: {ass}".format(bys=counts.hidden_white, ass=counts.black))
def test_underline(): text = 'Hello World' assert underline(text) == '\x1f' + text + '\x1f'
def test_plain_underline(): text = 'some text' assert plain(underline(text)) == text