Use this method to receive incoming updates using long polling (wiki).

        Notes
        1. This method will not work if an outgoing webhook is set up.
        2. In order to avoid getting duplicate updates, recalculate offset after each server response.

        Source: https://core.telegram.org/bots/api#getupdates

        :param offset: Identifier of the first update to be returned
        :type offset: :obj:`typing.Union[base.Integer, None]`
        :param limit: Limits the number of updates to be retrieved
        :type limit: :obj:`typing.Union[base.Integer, None]`
        :param timeout: Timeout in seconds for long polling
        :type timeout: :obj:`typing.Union[base.Integer, None]`
        :param allowed_updates: List the types of updates you want your bot to receive
        :type allowed_updates: :obj:`typing.Union[typing.List[base.String], None]`
        :return: An Array of Update objects is returned
        :rtype: :obj:`typing.List[types.Update]`

async def get_updates(self, offset: typing.Union[base.Integer, None] = None,
                          limit: typing.Union[base.Integer, None] = None,
                          timeout: typing.Union[base.Integer, None] = None,
                          allowed_updates:
                          typing.Union[typing.List[base.String], None] = None) -> typing.List[types.Update]:
        """
        Use this method to receive incoming updates using long polling (wiki).

        Notes
        1. This method will not work if an outgoing webhook is set up.
        2. In order to avoid getting duplicate updates, recalculate offset after each server response.

        Source: https://core.telegram.org/bots/api#getupdates

        :param offset: Identifier of the first update to be returned
        :type offset: :obj:`typing.Union[base.Integer, None]`
        :param limit: Limits the number of updates to be retrieved
        :type limit: :obj:`typing.Union[base.Integer, None]`
        :param timeout: Timeout in seconds for long polling
        :type timeout: :obj:`typing.Union[base.Integer, None]`
        :param allowed_updates: List the types of updates you want your bot to receive
        :type allowed_updates: :obj:`typing.Union[typing.List[base.String], None]`
        :return: An Array of Update objects is returned
        :rtype: :obj:`typing.List[types.Update]`
        """
        allowed_updates = prepare_arg(allowed_updates)
        payload = generate_payload(**locals())

        result = await self.request(api.Methods.GET_UPDATES, payload)
        return [types.Update(**update) for update in result]