Example #1
0
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))
Example #3
0
 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))
Example #7
0
def test_underline():
    text = 'Hello World'
    assert underline(text) == '\x1f' + text + '\x1f'
Example #8
0
def test_underline():
    text = 'Hello World'
    assert underline(text) == '\x1f' + text + '\x1f'
Example #9
0
def test_plain_underline():
    text = 'some text'
    assert plain(underline(text)) == text