Ejemplo n.º 1
0
def _process_text_message(data, recipient_id, message_text):
    # find top players
    if message_text == PLAYERS_COMMAND:
        _process_players(data=data, recipient_id=recipient_id)
        return

    # find player by id
    message_value = _get_value(text=message_text, command=FIND_COMMAND)
    if message_value:
        try:
            player_id = int(message_value)
            _process_player_by_id(data=data,
                                  recipient_id=recipient_id,
                                  player_id=player_id)
        except ValueError as error:
            LOGGER.error('Failed to converted %s to an int, error: %s',
                         message_value, str(error))
        return

    # search players by name
    message_value = _get_value(text=message_text, command=SEARCH_COMMAND)
    if message_value:
        player_name = message_value
        _process_players_by_name(data=data,
                                 recipient_id=recipient_id,
                                 player_name=player_name)
        return

    send_text_message(
        recipient_id=recipient_id,
        message_text=
        'To start the look up of Dota2 players, please type:\n\n "{} <player_id>"\n   or\n "{} <player_name>"\n   or\n "{}"'
        .format(FIND_COMMAND, SEARCH_COMMAND, PLAYERS_COMMAND))
Ejemplo n.º 2
0
def _process_players_by_name(data, recipient_id, player_name):
    players = data.get_player(real_name=player_name)
    if players and len(players) > 0:
        _send_players_message(recipient_id=recipient_id, players=players)
    else:
        send_text_message(recipient_id=recipient_id,
                          message_text='No player with that name was found')
Ejemplo n.º 3
0
def _process_player_by_id(data, recipient_id, player_id):
    player = data.get_player(account_id=player_id)
    if player is None:
        player = data.get_player(steam_id=player_id)
    if player:
        _send_players_message(recipient_id=recipient_id, players=[player])
    else:
        send_text_message(recipient_id=recipient_id,
                          message_text='No player with that id was found')
Ejemplo n.º 4
0
def _process_players(data, recipient_id):
    match_summaries = data.get_top_player()
    if match_summaries and len(match_summaries) > 0:
        players = []
        for match_summary in match_summaries:
            players.append(match_summary.player)
        _send_players_message(recipient_id=recipient_id, players=players)
    else:
        send_text_message(recipient_id=recipient_id,
                          message_text='No player was found')
Ejemplo n.º 5
0
def _send_statistic_message(data, recipient_id, account_id):
    matches = 0
    win_rate = 0
    match_summary = data.get_match_summary(account_id=account_id)
    if match_summary:
        matches = match_summary.matches
        win_rate = match_summary.win_rate
    send_text_message(recipient_id=recipient_id,
                      message_text=_generate_statistic_message(
                          matches=matches, win_rate=win_rate))
Ejemplo n.º 6
0
def received_message(data, event):
    sender_id = event['sender']['id']
    recipient_id = event['recipient']['id']
    time_of_message = event['timestamp']
    message = event['message']

    LOGGER.info(
        'Received message for user %s and page %s at %d with message: %s',
        sender_id, recipient_id, time_of_message, message)

    is_echo = message.get('is_echo', None)
    message_id = message.get('mid', None)
    app_id = message.get('app_id', None)
    metadata = message.get('metadata', None)
    message_text = message.get('text', None)
    message_attachments = message.get('attachments', None)
    quick_reply = message.get('quick_reply', None)

    if is_echo:
        LOGGER.info(
            'Received echo for message id %s and app id %d with metadata %s',
            message_id, app_id, metadata)
        return
    elif quick_reply:
        LOGGER.info('Quick reply for message id %s', message_id)
        send_text_message(recipient_id=sender_id,
                          message_text='Quick reply tapped')
        return

    if message_text:
        _process_text_message(data=data,
                              recipient_id=sender_id,
                              message_text=message_text)
    elif message_attachments:
        send_text_message(recipient_id=sender_id,
                          message_text='Message with attachments received')