a helper method for sending post requests to telegram api

        https://core.telegram.org/bots/api#making-requests
        https://requests.readthedocs.io/en/master/user/quickstart/

        :param url: string with url for post request
        :param data: [optional] dictionary with data to add to request
        :param files: [optional] byte data to add to request
        :return: dictionary with response details

def _post_request(self, url, data=None, files=None):

        ''' a helper method for sending post requests to telegram api

        https://core.telegram.org/bots/api#making-requests
        https://requests.readthedocs.io/en/master/user/quickstart/

        :param url: string with url for post request
        :param data: [optional] dictionary with data to add to request
        :param files: [optional] byte data to add to request
        :return: dictionary with response details
        '''

        import requests

    # construct request fields
        request_kwargs = {
            'url': url
        }
        if data:
            request_kwargs['data'] = data
        if files:
            request_kwargs['files'] = files

    # send request
        try:
            response = requests.post(**request_kwargs)
        except Exception:
            if self.requests_handler:
                request_kwargs['method'] = 'POST'
                request_object = requests.Request(**request_kwargs)
                return self.requests_handler(request_object)
            else:
                raise

    # handle response
        response_details = self.telegram_handler.handle(response)

        return response_details