Exemplo n.º 1
0
def main(data):
    if data['sender_id'] == os.environ.get('USER_TO_REPEAT'):
        if random.random() > 0.9:
            post_as_bot(data['text'])
            return True

    return False
Exemplo n.º 2
0
def main(data):
    if random.random() > 0.98:
        if data.get('sender_type') != 'bot':
            reply = os.environ.get('RANDOM_REPLY')
            if reply:
                post_as_bot('{}, {}'.format(data['name'], reply))
                return True

    return False
Exemplo n.º 3
0
def main(data):
    response_message = is_double_post(data)
    if response_message:
        post_as_bot(response_message)
        extra_response = os.getenv('GROUPME_DOUBLE_POST_RESPONSE', )
        if extra_response:
            post_as_bot(extra_response)

        return True

    return False
Exemplo n.º 4
0
def main(data):
    if data['sender_id'] == os.environ.get('USER_TO_TEASE'):
        s3_client = S3Client()
        if random.random() > float(os.environ.get('TEASE_RATE')):
            contents = s3_client.get_file_contents(
                os.environ.get('STATEMENTS_BUCKET'),
                'groupme-bot/statements.txt')
            post_as_bot(
                os.environ.get('USER_TO_TEASE_NAME') + ', ' +
                random.choice(contents.decode().split('\n')), )
            return True

    return False
Exemplo n.º 5
0
def _index_data(data):
    logger.info('beginning')

    if data.get('sender_type') == 'bot':
        logger.info('sender is bot, return early')
        return 'ok', 200

    if check_double_post.main(data):
        return 'ok', 200

    if repeat_user.main(data):
        return 'ok', 200

    if reply_random.main(data):
        return 'ok', 200

    if reply_tease.main(data):
        return 'ok', 200

    words = _get_words_from_text(data.get('text'))
    if not words:
        logger.info('no words found, return early')
        return 'ok', 200

    first_word = words.pop(0)
    if first_word != os.environ['GROUPME_BOT_NAME']:
        logger.info('bot not being invoked, return early')
        return 'ok', 200

    second_word = words.pop(0)

    try:
        func = QUERY_WORD_MAP[second_word]
    except KeyError:
        logger.info('failed attempt at query with {}'.format(second_word))
        post_as_bot('Sorry, I can\'t help you with that.')

        return 'ok', 200

    func(data, *words)

    return "ok", 200
Exemplo n.º 6
0
def main(data, lookback=None, *args):
    post_as_bot('Checking leaderboard...')

    try:
        lookback = int(lookback)
    except TypeError:
        lookback = LOOKBACK

    totals = get_totals(lookback)

    total_likes = {
        username: user_totals['likes_received']
        for username, user_totals in totals.items()
    }

    text = '\n'.join([
        '{}: {}'.format(key, val) for key, val in sorted(
            total_likes.items(),
            reverse=True,
            key=operator.itemgetter(1),
        )
    ])

    post_as_bot('here it is for the last {} days:'.format(lookback))
    post_as_bot(text)

    return True